wählbarer iptables-Tunnel

wählbarer iptables-Tunnel

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

verwandte Informationen