Ich versuche, zwei Netzwerke (AWS und Azure) über OpenVPN miteinander zu verbinden. Ich kenne andere Implementierungen (OpenSwan+Azure GW usw.), aber ich brauche maximale Portabilität, da ich dies auch auf andere Cloud-VPS-Anbieter ausweiten werde.
OpenVPN-Gateways können sich gegenseitig anpingen und jedes Gateway kann alle IPs im gegnerischen Netzwerk anpingen, aber Computer in einem Netzwerk können keine Computer im anderen Netzwerk anpingen (und sie können auch nicht die gegnerischen Gateways anpingen).
Was übersehe ich hier? Anscheinend haben viele dieses Problem aus verschiedenen Gründen, aber nach über 50 Versuchen habe ich aufgegeben und beschlossen, zu fragen :)
Netzwerk 1:
dev tun port 1194 ifconfig 10.8.223.40 10.8.223.41 route 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun benutzer niemand gruppe niemand geheim /etc/openvpn/static.key
ip route
default via 10.0.1.1 dev eth0
10.0.1.0/27 dev eth0 proto kernel scope link src 10.0.1.9
10.22.1.0/24 via 10.8.223.41 dev tun0
10.33.0.0/24 via 10.33.0.2 dev tun2
10.33.0.2 dev tun2 proto kernel scope link src 10.33.0.1
10.8.223.41 dev tun0 proto kernel scope link src 10.8.223.40
Netzwerk 2
dev tun port 1194 remote my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 route 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user niemand group niemand secret /etc/openvpn/static.key
ip route
default via 10.22.1.1 dev eth0
10.0.0.0/15 via 10.8.223.40 dev tun0
10.22.1.0/24 dev eth0 proto kernel scope link src 10.22.1.9
10.8.223.40 dev tun0 proto kernel scope link src 10.8.223.41
Folgendes habe ich hinsichtlich iptables:
Beide Netzwerke:iptables -I WEITERLEITEN -i eth0 -o tun0 -m conntrack --ctstate NEU -j AKZEPTIEREN iptables -I WEITERLEITEN -i tun0 -o eth0 -m conntrack --ctstate NEU -j AKZEPTIEREN
Netzwerk 1:iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j AKZEPTIEREN
iptables -t nat -A POSTROUTING -s "10.8.223.40/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.40/32 -d 0.0.0.0/0 -j AKZEPTIEREN
Netzwerk 2:iptables -t nat -A POSTROUTING -s "10.22.1.0/24" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.22.1.0/24 -d 0.0.0.0/0 -j AKZEPTIEREN
iptables -t nat -A POSTROUTING -s "10.8.223.41/32" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.41/32 -d 0.0.0.0/0 -j AKZEPTIEREN
Meine Annahme war (da ich separate Gateways für den Internetzugang habe), dass ich jetzt zu jedem Nicht-Gateway-Computer in beiden Netzwerken Routen hinzufügen muss, die Pakete, die für das gegenüberliegende Netzwerk bestimmt sind, über das lokale OpenVPN-Gateway weiterleiten.
Ich habe das für Maschine 10.0.1.7 gemacht:
IP-Route hinzufügen 10.22.1.0/24 über 10.0.1.9
Also habe ich jetzt:
Standard über 10.0.1.1 dev eth0 10.0.1.0/27 dev eth0 Proto-Kernel-Bereich Link src 10.0.1.7 10.22.1.0/24 über 10.0.1.9 dev eth0 172.17.0.0/16 dev docker0 Proto-Kernel-Bereich Link src 172.17.42.1
aber der Traceroute zu 10.22.1.9 (gegnerisches Gateway) führt immer noch nirgendwo hin ...
PS: Die meisten meiner Maschinen sind in Docker, aber ich erhalte auch von der Hostmaschine die gleichen Ergebnisse.
Jede Hilfe wäre sehr willkommen!