Ganzen Traffic an Wireguard Client weiterleiten

Für ein Projekt brauchte ich eine feste IPv4 und IPv6, die an einen Server in einem NAT weiterleiten.
Eine Port Öffnung war nicht gewollt und durch wechselnde ipv4 / ipv6 auch keine Lösung.
Daher habe ich einfach einen kleinen Server bei Netcup gebucht, da kostet z.B. der VPS nano G11s 6M nur 2 EUR / Monat, und nutze diesen als Wireguard VPN mit pivpn.

Über iptables wird der ganze Traffic dann an einen Client, der sich mit dem Wireguard verbindet weitergeleitet.

Daher hier die Regeln um den gesamten Traffic des Interface eth0 an eine Adresse im WireGuard Netz weiterzuleiten. Lediglich ein Port wird nicht weitergeleitet, weil dieser der Zugangspunkt für das WireGuard ist. Da Wireguard UDP nutzt können wir denselben Port auch für SSH nutzen das über TCP läuft.

Vorsicht!
Mit diesen Regeln hängt euer Server mit dem „nackten Arsch“ im Internet und muss entsprechend abgesichert werden.

### Weiterleitung des gesamten Traffics außer 1 Port, an einen über WireGuard verbundenen #client
# 
# [PUBLIC IPv4] und ander angaben in Klammern bitte durch eure IP's ersetzen, ohne Klammern!
#
# Regeln für ipv4

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -d [PUBLIC IPv4] -p tcp ! --dport 51820 -j DNAT --to-destination [IPv4 wg client]]

iptables -t nat -A PREROUTING -d [PUBLIC IPv4] -p udp ! --dport 51820 -j DNAT --to-destination [IPv4 wg client]

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Regeln für ipv6
net.ipv6.conf.all.forwarding = 1
ip6tables -t nat -A PREROUTING -d [PUBLIC IPv6] -p tcp ! --dport 51820  -j DNAT --to-destination [IPv6 des wg client]

ip6tables -t nat -A PREROUTING -d [PUBLIC IPv6] -p udp ! --dport 51820 -j DNAT --to-destination [IPv6 des wg client]

ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#### Beachten: SSH PORT UND WIREGUARD PORT 51820! ggf. ändern.

Die Regeln kann man sich mit iptables-persistent speichern und diese automatisch laden lassen wenn der Server startet

apt install iptables-persistent
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6