Unixery & daemon worship 🔥


It's a Unix system! I know this!

Wireguard VPN einrichten

Hinweis: Das sind nur ein paar Notizen für mich selbst, eure Bedürfnisse für ein VPN könnten komplett anders aussehen!

PiVPN

Ready to go könnte man einfach PiVPN benutzen.

wireguard-ui

Eine Alternative, um Konfigurationsdateien zu erstellen wäre wireguard-ui.

FreeBSD

Um FreeBSD als VPN-Server zu nutzen, braucht man erstmal folgendes:

pkg install wireguard-tools

Dann muss man die Firewall in /etc/pf.conf anpassen, um Wireguard-Verbindungen anzunehmen und NAT ins lokale Subnetz zu erlauben (das ist keine komplette Konfig!):

wireguard_clients="10.20.30.0/24"
wanint="genet0"
wg_port="51820"

nat on $wanint inet from $wireguard_clients to any -> $wanint

pass in proto udp from any to port $wg_port

pass in on wg0 from any to any

Und die enstsprechenden Services in /etc/rc.conf starten:

wireguard_enable="YES"
wireguard_interfaces="wg0"
gateway_enable="YES"
pf_enable="YES"

Mit wireguard-ui die Endpunkte konfigurieren.

Chimera Linux

Pakete installieren:

apk add chimera-repo-contrib
apk add wireguard-tools wireguard-tools-wg-quick-dinit iptables iptables-dinit

Feste IP konfigurieren in /etc/dhcpcd.conf:

interface end0
static ip_address=10.0.0.4/24
static routers=10.0.0.1
static domain_name_servers=10.0.0.2 10.0.0.3

NAT ins lokale Subnetz aktivieren. Dafür sysctl -w net.ipv4.ip_forward=1 ausführen und in /etc/sysctl.conf eintragen:

net.ipv4.ip_forward=1

In die /etc/iptables/iptables.rules muss als Beispiel:

# filter
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

# Allow all loopback (lo0) traffic and drop traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j DROP

# Drop invalid packets
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A FORWARD -m conntrack --ctstate INVALID -j DROP

# Allow ICMP (ping)
-A INPUT -p icmp -j ACCEPT

# Allow established and related incoming connections
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Allow Wireguard
-A INPUT -p udp --dport 50000 -j ACCEPT

# Allow SSH
-A INPUT -p tcp --dport 22 -j ACCEPT

COMMIT

# nat
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -s 10.20.30.0/24 -o end0 -m comment --comment wireguard-nat-rule -j MASQUERADE
COMMIT

Einstellungen übernehmen mit dinitctl restart iptables und dauerhaft aktivieren mit dinitctl enable iptables.

Mit wireguard-ui die Endpunkte konfigurieren und den Wireguard-Service aktivieren mit dinitctl enable wg-quick-all