NoPaste

(gelöst) VPN Wireguard

von scriptorius

SNIPPET_TEXT:
  1. (1) Ddclient Installation auf Server
  2. Bei desec.io einen dyndns account erstellt; dann:
  3.  
  4. # apt install curl -y
  5. # apt install ddclient -y
  6. > es erfolgt eine Abfrage, am Ende sollte es folgendermaßen konfiguriert sein:
  7.  
  8. # nano /etc/ddclient.conf
  9. >
  10. protocol=dyndns2
  11. usev6=if, if=enp3s0
  12. ssl=yes
  13. use=cmd, cmd='curl https://checkipv6.dedyn.io/'
  14. server=update6.dedyn.io
  15. login=xxx.dedyn.io
  16. password='***'
  17. xxx.dedyn.io
  18.  
  19. # nano /etc/default/ddclient
  20. >
  21. run_dhclient="false"
  22. run_ipup="false"
  23. run_daemon="true"
  24. daemon_interval="300"
  25.  
  26. # service ddclient restart
  27. # ddclient -force
  28.  
  29. # cd /root/
  30. # crontab -e
  31. >   # ganz unten einfügen
  32. 05 08 * * * /usr/sbin/ddclient --force
  33.  
  34. ---------------------------------------------
  35.  
  36. (2) Wireguard Installation
  37. # nano /etc/apt/sources.list.d/unstable.list
  38. >
  39. deb http://deb.debian.org/debian/ unstable main
  40.  
  41. # nano /etc/apt/preferences.d/limit-unstable
  42. >
  43. Package: *
  44. Pin: release a=unstable
  45. Pin-Priority: 90
  46.  
  47. # apt update
  48. # apt install wireguard --dry-run
  49. (etwas über 60 Pakete sollten es ; dann:)
  50. # apt install wireguard -y
  51.  
  52. ---------------------------------------------------
  53.  
  54. (3) Schlüssel erzeugen für Server-Konfiguration und den ersten Client (Smartphone)
  55. # cd /etc/wireguard
  56. # umask 077
  57. # wg genkey > server.key   # erstellen
  58. #  wg genkey > client1.key   # erstellen
  59. Server-Schlüssel:
  60. Geheim:
  61. # cat /etc/wireguard/server.key   # anzeigen
  62. # cat /etc/wireguard/server.key | wg pubkey   # anzeigen, muss nicht eigens erstellt werden
  63.  
  64. Client-Schlüssel:
  65. Geheim:
  66. # cat /etc/wireguard/client1.key   # anzeigen
  67. Öffentlich:
  68. # cat /etc/wireguard/client1.key | wg pubkey   # anzeigen, muss nicht eigen erstellt werden
  69.  
  70. -------------------------------------------------------------------
  71.  
  72. (4) Erstellen der Server- und Clientkonfigfiles
  73. Anfang: Server-Konfiguration auf Server
  74. # cat /etc/wireguard/server.key
  75. > angezeigten privaten Server-Schlüssel kopieren
  76.  
  77. # touch /etc/wireguard/wg0.conf
  78. # nano /etc/wireguard/wg0.conf
  79. >
  80. [Interface]
  81. Address = 10.66.66.1/24, fd42:42:42::1/64
  82. PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
  83. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp3s0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp3s0 -j MASQUERADE
  84. ListenPort = 51820
  85. PrivateKey = >privater Server-Schlüssel hier eintragen<
  86.  
  87. Client-Konfiguration auf Server:
  88. # mkdir /etc/wireguard/clients
  89. # touch /etc/wireguard/clients/client1.conf
  90.  
  91. # cat /etc/wireguard/client1.key
  92. # cat /etc/wireguard/server.key | wg pubkey
  93.  
  94. # nano /etc/wireguard/clients/client1.conf
  95. >
  96. [Interface]
  97. PrivateKey = >privater Client-Schlüssel<
  98. Address = 10.66.66.2/24, fd42:42:42::2/64
  99. DNS = 176.103.130.130,176.103.130.131
  100.  
  101. [Peer]
  102. PublicKey = >öffentlicher Server-Schlüssel<
  103. Endpoint = xxx.dedyn.io:51820
  104. AllowedIPs = 0.0.0.0/0, ::/0
  105.  
  106. Abschluss: Server-Konfiguration auf Server
  107. # nano /etc/wireguard/wg0.conf
  108. >   # unter [Interface] einfügen
  109. [Peer]
  110. PublicKey = >öffentlicher Client-Schlüssel<
  111. AllowedIPs = 10.66.66.2/32, fd42:42:42::2/128
  112.  
  113. ------------------------------------------------------
  114.  
  115. (5) Wireguard-Konfiguration auf server starten und Start automatisieren
  116. # chown -v root:root /etc/wireguard/wg0.conf
  117. # chmod -v 600 /etc/wireguard/wg0.conf
  118. # wg-quick up wg0
  119. # systemctl enable wg-quick@wg0.service
  120.  
  121. ANMERKUNG:
  122. Ab jetzt vor jeder Konfiguration:
  123. # wg-quick down wg0
  124. Nach jeder Konfiguration:
  125. # wg-quick up wg0
  126.  
  127. ----------------------------------------------------------
  128.  
  129. (6) Forwarding auf Server konfigurieren
  130. # touch /etc/sysctl.d/wireguard.conf
  131. # nano /etc/sysctl.d/wireguard.conf
  132. >
  133. net.ipv4.ip_forward=1
  134. net.ipv6.conf.all.forwarding=1
  135. # sysctl -p /etc/sysctl.d/wireguard.conf
  136. # sysctl --system
  137.  
  138. [Die folgenden Zeilen, die bereit oben in /etc/wireguard/wg0.conf eingefügt wurden sind für ein forwarding notwendig:
  139. PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
  140. PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp3s0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp3s0 -j MASQUERADE]
  141.  
  142. ------------------------------------------------------
  143.  
  144. (7) In der fritzbox Route setzen
  145. Mögliche Route: fritzbox > Heimnetz > Netzwerk > Netzwerkeinstellungen > ipv4-Routen:
  146. 10.66.66.0   -   255.255.255.0   -   192.168.178.45
  147.  
  148. --------------------------------------------------
  149.  
  150. (8) Auf dem WG-Server die Rückroute setzen:
  151. # ip route add 192.168.178.0/24 via 10.66.66.1 dev wg0 mtu 1420
  152.  
  153. --------------------------------------------------
  154.  
  155. (9) QR-Coder für Smartphone-Client erzeugen
  156. # apt install qrencode -y
  157. # cat /etc/wireguard/clients/client1.conf | qrencode -t ansiutf8
  158.  
  159. -----------------------------------------------------
  160.  
  161. (10) DNS-Server auf dem WG-Server
  162. # apt install dnsutils
  163. # apt install unbound unbound-host -y
  164. # curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
  165. # chown unbound:unbound /var/lib/unbound/root.hints
  166. # nano /etc/unbound/unbound.conf
  167. >   # unten einfügen nach: include: "/etc/unbound/unbound.conf.d/*.conf"
  168. server:
  169.   num-threads: 4
  170.  
  171.   #Enable logs
  172.   verbosity: 1
  173.  
  174.   #list of Root DNS Server
  175.   root-hints: "/var/lib/unbound/root.hints"
  176.  
  177.   #Respond to DNS requests on all interfaces
  178.   interface: 0.0.0.0
  179.   max-udp-size: 3072
  180.  
  181.   #Authorized IPs to access the DNS Server
  182.   access-control: 0.0.0.0/0                 refuse
  183.   access-control: 127.0.0.1                 allow
  184.   access-control: 10.66.66.0/24         allow
  185.  
  186.   #not allowed to be returned for public internet  names
  187.   private-address: 10.66.66.0/24
  188.  
  189.   # Hide DNS Server info
  190.   hide-identity: yes
  191.   hide-version: yes
  192.  
  193.   #Limit DNS Fraud and use DNSSEC
  194.   harden-glue: yes
  195.   harden-dnssec-stripped: yes
  196.   harden-referral-path: yes
  197.  
  198.   #Add an unwanted reply threshold to clean the cache and avoid when possible a DNS Poisoning
  199.   unwanted-reply-threshold: 10000000
  200.  
  201.   #Have the validator print validation failures to the log.
  202.   val-log-level: 1
  203.  
  204. # systemctl disable systemd-resolved
  205. # systemctl stop systemd-resolved
  206. # systemctl enable unbound
  207. # systemctl start unbound
  208.  
  209. Unbound testen:
  210. # nslookup google.com 127.0.0.1
  211. # nslookup google.com 10.66.66.1
  212. # unbound-checkconf
  213.  
  214. ------------------------------------------------------------
  215.  
  216. (11) Firewall einrichten:
  217. Als # eingeben:
  218. iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  219. iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  220. iptables -A INPUT -p udp -m udp --dport 51820 -m conntrack --ctstate NEW -j ACCEPT
  221. iptables -A INPUT -s 10.66.66.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  222. iptables -A INPUT -s 10.66.66.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  223. iptables -A OUTPUT -p udp -m udp --sport 51820 -j ACCEPT
  224. iptables   -I   INPUT   -p   udp   --dport   51820   -j   ACCEPT
  225. iptables   -I   INPUT   -p   tcp   --dport   xxx   -j   ACCEPT   # xxx=ssh Port
  226.  
  227. ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  228. ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
  229. ip6tables -A INPUT -p udp -m udp --dport 51820 -m conntrack --ctstate NEW -j ACCEPT
  230. ip6tables -A INPUT -s fd42:42:42::/64 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  231. ip6tables -A INPUT -s fd42:42:42::/64 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
  232. ip6tables -A OUTPUT -p udp -m udp --sport 51820 -j ACCEPT
  233. ip6tables   -I   INPUT   -p   udp   --dport   51820   -j   ACCEPT
  234. ip6tables   -I   INPUT   -p   tcp   --dport   xxx   -j   ACCEPT   # xxx=ssh Port
  235. # apt install iptables-persistent
  236.  
  237. -----------------------------------------------------------
  238.  
  239. (12) Einen zweiten Client2 (Notebook) einrichten
  240. Wirguard auf Client2 installieren wie oben auf dem server:
  241. # nano /etc/apt/sources.list.d/unstable.list
  242. >
  243. deb http://deb.debian.org/debian/ unstable main
  244.  
  245. # nano /etc/apt/preferences.d/limit-unstable
  246. >
  247. Package: *
  248. Pin: release a=unstable
  249. Pin-Priority: 90
  250.  
  251. # apt update
  252. # apt install wireguard --dry-run
  253. (etwas über 60 Pakete sollten es ; dann:)
  254. # apt install wireguard -y
  255.  
  256. (12.1) Konfiguration auf Client2 erstellen
  257. # cd /etc/wireguard
  258. # umask 077
  259. #  wg genkey > client2.key   # erstellen
  260.  
  261.  
  262.  
  263. Client2-Schlüssel:
  264. Geheim:
  265. # cat /etc/wireguard/client2.key   # anzeigen
  266. # cat /etc/wireguard/client2.key | wg pubkey   # anzeigen, muss nicht eigens erstellt werden
  267.  
  268. # touch /etc/wireguard/wg0.conf
  269. # nano /etc/wireguard/wg0.conf
  270. >
  271. [Interface]
  272. PrivateKey = >privater Client2-Schlüssel<
  273. MTU = 1420   # bei ipv6 mindestens 1280
  274. Address = 10.66.66.3/24, fd42:42:42::3/64
  275. DNS = 176.103.130.130,176.103.130.131
  276.  
  277. [Peer]
  278. PublicKey = >öffentlicher Server-Schlüssel<
  279. Endpoint = xxx.dedyn.io:51820
  280. AllowedIPs = 0.0.0.0/0, ::/0
  281.  
  282. Abschluss: Server-Konfiguration auf Server > neuen peer für client2 erstellen
  283. # nano /etc/wireguard/wg0.conf
  284. >   # unter ersten [Peer] einfügen
  285. [Peer]
  286. PublicKey = >öffentlicher Client2-Schlüssel<
  287. AllowedIPs = 10.66.66.3/32, fd42:42:42::3/128
  288.  
  289. wireguard auf client2 starten mit:
  290. # chown -v root:root /etc/wireguard/wg0.conf
  291. # chmod -v 600 /etc/wireguard/wg0.conf
  292. # wg-quick up wg0
  293. # systemctl enable wg-quick@wg0.service
  294.  
  295. ANMERKUNG:
  296. Ab jetzt vor jeder Konfiguration:
  297. # wg-quick down wg0
  298. Nach jeder Konfiguration:
  299. # wg-quick up wg0

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN