выбираемый туннель iptables

выбираемый туннель iptables

У меня есть такой скрипт конфигурации:

Я ОТКРЫВАЮ VPN-ТУННЕЛИ

openvpn --config serverx.ovpn  > /dev/null 2>&1 &
openvpn --config servery.ovpn  > /dev/null 2>&1 &

ТЕСТ НА МОЕМ СКРИПТЕ, который выводит адрес соединения

route add 69.195.103.232/32 dev tun0
curl http://checkmyproxy.xx/checkproxy.php
route delete 69.195.103.232

Я ПОЛУЧАЮ ПРАВИЛЬНЫЙ IP-АДРЕС СЕРВЕРА

Я ПОДГОТОВЛЯЮ IPTABLES

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

Я РЕДАКТИРУЮ RT_TABLES

nano /etc/iproute2/rt_tables

Я ДОБАВЛЯЮ В RT_TABLES

100 tunnel0
101 tunnel1

ЗАТЕМ

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

ВСЕ ХОРОШО, я получаю следующие результаты

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

МАРШРУТЫ

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

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 

Я ОТМЕЧАЮ ПАКЕТЫ для привязки к правильному маршруту/интерфейсу

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

И ВОПРОС В ТОМ,

Как мне получить IP-адрес сервера x и IP-адрес сервера y для первого и второго запроса, используя следующие команды?

 curl http://checkmyproxy.xx:10000/checkproxy.php
 curl http://checkmyproxy.xx:10001/checkproxy.php

Конечный порт всегда 80, поэтому 10000 и 10001 должны быть переведены как 80. Этот другой переводит правильно, но я получаю реальный адрес eth0 (без туннелирования), поэтому он обходит отметку mangle.

iptables -t nat -A OUTPUT -p tcp --dport 10000 -j DNAT --to :80
iptables-save

Спасибо!

решение1

Я решил и задокументировал это здесь: http://aftermanict.blogspot.it/2015/11/bash-iptables-iproute2-and-multiple.html

Связанный контент