2 Wireguards & Routing - Wie sauber konfigurieren?

Mein wg0 sieht so aus:

[Interface]
Address = 10.0.0.1/24
ListenPort = 62000
PrivateKey = <Key>

#Auskommentiert nach Antwort 2 weiter unten
#PostUp = iptables -A FORWARD -i wg0 -o ens6 -j ACCEPT
#PostUp = iptables -A FORWARD -i ens6 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT

#PostDown = iptables -D FORWARD -i wg0 -o ens6 -j ACCEPT
#PostDown = iptables -D FORWARD -i ens6 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# WireGuard @ Home
[Peer]
PublicKey = <Key>
PresharedKey = <Key>
AllowedIPs = 10.0.0.2/32, 172.16.1.1, 172.16.1.5/32, 172.16.1.10/32
PersistentKeepalive = 25

Ja ich merks gerade selber, darüber kriege ich die 200 nicht erreicht, stimmt

Achso, ich dachte du machst von deinem PC auch einen WireGuard dahin auf, so mesh-mäßig, dass du alle Clients per WireGuard-IP erreichen kannst.

Diese komischen Regeln da oben drin, brauchst du auch nicht.

Jetzt fehlt also nur noch die Umleitung des Port 80 und 443 Traffics an Nginx (172.16.1.200), was im wg1 des VPS eingestellt wird?

Hast du die weggemacht diese komischen Regeln da? Da fehlt jetzt noch das SNAT / Masquerade auf dem WG

Also nochmal zusammenfassend:

VPS wg0:

[Interface]
Address = 10.0.0.1/24
ListenPort = 62000
PrivateKey = <Key>

# WireGuard @ Home
[Peer]
PublicKey = <Key>
PresharedKey = <Key>
AllowedIPs = 10.0.0.2/32, 172.16.1.1, 172.16.1.5/32, 172.16.1.10/32
PersistentKeepalive = 25

VPS wg1

[Interface]
Address = 10.20.0.1/24
ListenPort = 62001
PrivateKey = <Key>

# WireGuardPublic @ Home
[Peer]
PublicKey = <Key>
PresharedKey = <Key>
AllowedIPs = 10.20.0.2/32, 172.16.1.0/24
PersistentKeepalive = 25

Willst du mit iptables weitermachen oder zukunftsmäßig denken und auf nftables wechseln?

Nene, gerne schon nftables

Ok, erstmal auf dem VPS installieren

xiao@IONOS-VPS:~$ sudo apt install nftables
[sudo] password for xiao:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
nftables is already the newest version (1.0.9-1build1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Done, bzw war schon drauf.

Da müsste eine /etc/nftables.conf sein.

Jep, Inhalt ist:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
}
1 „Gefällt mir“

Verstehst du das? :smile:

Blub blub

Wir resetten erstmal alles und haben anschließend eine tabelle (ähnlich den iptables nehme ich an), wo ich für die verschiedenen routing chains, Regeln eintragen kann. Ich gebe aber zu, dass ich mich mit iptables nie so wirklich beschäftigt habe, das hier sind für mich jetzt böhmische Dörfer. Ich könnte jetzt die KI meines Vertrauens fragen, aber ich denke hier geht’s doch schneller und kompetenter. Da fehlt eine nat chain würde ich sagen

Jo, obwohl ChatGPT auch ziemlich gut ist darin und eine gute Doku haben die auch. Aber routing-Chains heißt das nicht. :joy:
Da schreibst du jetzt mal unten dran, also unter die letztes Klammer

table inet nat {
	chain prerouting {
		type nat hook prerouting priority -100;

		ip daddr <???> ip protocol tcp tcp dport { 80, 443 } dnat to <???>
	}
}

Die Fragezeichen sind für dich, damit du auch mitdenkst. (Was man auch merkt, dass du es es willst.)

table inet nat {
	chain prerouting {
		type nat hook prerouting priority -100;

		ip daddr 87.106.167.247 ip protocol tcp tcp dport { 80, 443 } dnat to 172.16.1.200
	}
}

Wäre jetzt mein Gedankengang. Von der Public-IP des VPS zum Nginx, die korrekte Route ist dabei im wg1 bereits hinterlegt.

Jo :slight_smile: Genau richtig.
Musst nur die IPtables flushen und deaktivieren und dafür den nftables.service aktivieren

Also ich habe jetzt folgendes gemacht:

xiao@IONOS-VPS:~$ sudo iptables -F
xiao@IONOS-VPS:~$ sudo iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

xiao@IONOS-VPS:~$ sudo systemctl enable nftables && sudo systemctl start nftables
Created symlink /etc/systemd/system/sysinit.target.wants/nftables.service → /usr/lib/systemd/system/nftables.service.

Ok, dann mal nft list ruleset um zu schauen, ob alles da ist, was wir erwarten.

Sieht so aus:

xiao@IONOS-VPS:~$ sudo nft list ruleset
table inet filter {
        chain input {
                type filter hook input priority filter; policy accept;
        }

        chain forward {
                type filter hook forward priority filter; policy accept;
        }

        chain output {
                type filter hook output priority filter; policy accept;
        }
}
table inet nat {
        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                ip daddr 87.106.167.247 ip protocol tcp tcp dport { 80, 443 } dnat ip to 172.16.1.200
        }
}