Ich habe dieses Konfigurationsskript:
Ich öffne VPN-Tunnel
openvpn --config serverx.ovpn > /dev/null 2>&1 &
openvpn --config servery.ovpn > /dev/null 2>&1 &
TESTEN SIE MEIN Skript, das die Verbindungsadresse ausgibt
route add 69.195.103.232/32 dev tun0
curl http://checkmyproxy.xx/checkproxy.php
route delete 69.195.103.232
Ich erhalte die richtige Serverx-IP
ICH BEREITE IPTABLES VOR
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
ICH BEARBEITE RT_TABLES
nano /etc/iproute2/rt_tables
ICH Füge RT_TABLES hinzu
100 tunnel0
101 tunnel1
DANN
ip route add default dev tun0 table tunnel0
ip route add default dev tun1 table tunnel1
ip rule add from all fwmark 0x100 table tunnel0
ip rule add from all fwmark 0x101 table tunnel1
ip route flush cache
ip rule show
ALLES OK, ich bekomme folgende Ergebnisse
IFCONFIG
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
ETC ETC
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
ETC ETC
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.120.1.6 netmask 255.255.255.255 destination 10.120.1.5
ETC ETC, IP CLASS CAN VARY
tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.199.1.6 netmask 255.255.255.255 destination 10.199.1.5
ETC ETC, IP CLASS CAN VARY
ROUTEN
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
10.151.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
10.199.1.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun1
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
IP-REGELANZEIGE
0: from all lookup local
32764: from all fwmark 0x100 lookup tunnel0
32765: from all fwmark 0x101 lookup tunnel1
32766: from all lookup main
32767: from all lookup default
Ich MARKIERE PAKETE, um sie der richtigen Route / Schnittstelle zuzuordnen
iptables -A PREROUTING -t mangle -p tcp --sport 10000 -j MARK --set-mark 100
iptables -A PREROUTING -t mangle -p tcp --sport 10001 -j MARK --set-mark 101
iptables-save
UND DIE FRAGE IST
Wie kann ich mit den folgenden Befehlen die IP-Adresse von Server x und Server y für die erste und die zweite Anforderung zurückgeben?
curl http://checkmyproxy.xx:10000/checkproxy.php
curl http://checkmyproxy.xx:10001/checkproxy.php
Der endgültige Port ist immer 80, daher sollten 10000 und 10001 als 80 übersetzt werden. Dieser andere übersetzt korrekt, aber ich erhalte die echte Adresse von eth0 (kein Tunneln), sodass die Mangle-Markierung umgangen wird.
iptables -t nat -A OUTPUT -p tcp --dport 10000 -j DNAT --to :80
iptables-save
Danke schön!
Antwort1
Ich habe es gelöst und hier dokumentiert: http://aftermanict.blogspot.it/2015/11/bash-iptables-iproute2-and-multiple.html