ich habe eine Linux-Maschine als Gateway zwischen einem isolierten Subnetz und dem Rest meines Netzwerks eingerichtet.
NAT erfolgt über iptables und funktioniert einwandfrei.
# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*filter
:INPUT ACCEPT [14459:13422943]
:FORWARD DROP [323:21689]
:OUTPUT ACCEPT [9723:3273357]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.112.0.0/16 -d 10.113.0.0/16 -i eth0 -o eth1 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -s 10.113.0.0/16 -i eth1 -o tun0 -m conntrack --ctstate NEW -j ACCEPT
COMMIT
# Completed on Mon Nov 27 10:22:22 2017
# Generated by iptables-save v1.6.1 on Mon Nov 27 10:22:22 2017
*nat
:PREROUTING ACCEPT [795:105677]
:INPUT ACCEPT [20:3379]
:OUTPUT ACCEPT [12:777]
:POSTROUTING ACCEPT [12:777]
-A POSTROUTING -s 10.113.0.0/16 -o tun0 -j MASQUERADE
COMMIT
# Completed on Mon Nov 27 10:22:22 2017
Wenn ich eine Verbindung über OpenVPN-Routen zur Umleitung herstelle, wird der gesamte Datenverkehr vom Server gepusht, und das funktioniert auch einwandfrei.
0.0.0.0/1 via 10.211.1.142 dev tun0
default via 10.112.0.1 dev eth0 proto static
10.112.0.0/16 dev eth0 proto kernel scope link src 10.112.0.2
10.113.0.0/16 dev eth1 proto kernel scope link src 10.113.0.1
10.211.1.142 dev tun0 proto kernel scope link src 10.211.1.141
118.241.176.13 via 10.112.0.1 dev eth0
128.0.0.0/1 via 10.211.1.142 dev tun0
Ich möchte jedoch nur den NAT-Verkehr aus dem Subnetz 10.113.0.0 über die tun0-Schnittstelle umleiten und das Gateway selbst seine normale Internetverbindung beibehalten lassen (für Aktualisierungen usw.).
Ich dachte, hinzufügenRoute-Nopullzu meiner openvpn.conf würde das Problem lösen, da der Datenverkehr durch die iptable-Regeln zu tun0 umgeleitet wird, aber anscheinend ist das nicht genug (die Subnetz-Clients können keine Verbindung zum Internet herstellen)
Es scheint, als ob mir nur ein einfacher IP-Routeneintrag oder so etwas fehlt.