Leiten Sie den Datenverkehr mit iptables von einer Schnittstelle zu einer VPN-Tun-Schnittstelle um

Leiten Sie den Datenverkehr mit iptables von einer Schnittstelle zu einer VPN-Tun-Schnittstelle um

Ich versuche, etwas Einfaches zu erreichen, aber anscheinend übersehe ich etwas.

In meiner Box läuft ein VPN-Client, der eine tun0Schnittstelle erstellt hat. Von der Box kommt externer Datenverkehr eth0.

Ich möchte den Datenverkehr von eth0nach weiterleiten tun0. Dazu führe ich folgende Befehle aus:

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -o tun0 -j MASQUERADE

Beachten Sie, dass ich den Quell-IP-Bereich auswähle, weil ich nur einen bestimmten Bereich weiterleiten möchte.

tcpdumpWenn ich die Schnittstelle ausführe, eth0kann ich den Datenverkehr sehen, der von einer Maschine im Bereich eingeht, 192.168.100.0/28aber ich kann den Datenverkehr, der hineingeht, nicht sehen tun0.

Die IP-Weiterleitung ist natürlich aktiviert.

Ich bin nicht sicher, was mir hier wirklich fehlt.

Die IP-Konfiguration von eth0ist 192.168.10.93/24während tun0ist10.8.8.15/24

➜  ~ ip r
default via 192.168.10.1 dev eth0  metric 100
10.8.8.0/24 dev tun0 scope link  src 10.8.8.15
172.17.0.0/16 dev docker0 scope link  src 172.17.0.1
172.30.32.0/23 dev hassio scope link  src 172.30.32.1
192.168.10.0/24 dev eth0 scope link  src 192.168.10.93  metric 100

Antwort1

Da es letztendlich darum gehen könnte, den Datenverkehr über 192.168.100.0/28… hinaus laufen zu lassen tun0 , könnte dies etwa wie folgt gelöst werden:

ip rule add from 192.168.100.0/28 lookup 10000
ip route add default via ${tun0gwip} table 10000

Behalten Sie auch die erforderliche iptables-MASQUERADE bei, sofern tun0 gw nicht zu Ihrem anderen Netzwerk zurückleiten kann.

Antwort2

Dies ist die genaue Befehlskombination, die das Problem gelöst hat:

Erstellen Sie eine neue Routentabelle mit dem Namen vpnunter

➜  ~ cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
#1  inr.ruhep
1 vpn

und führen Sie dann aus:

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

iptables -A FORWARD -i eth0 -o tun0 -s 192.168.100.0/28 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table vpn
ip route add 192.168.100.0/28 dev eth0 table vpn

ip rule add from 192.168.100.0/28 table vpn

verwandte Informationen