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

正しいSERVERX 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

すべてがうまくいった。次のような結果が得られます。

IF構成

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

知的財産権規定の表示

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

問題は

次のコマンドを使用して、最初と2番目の要求に対して返されたサーバーx IPとサーバーy IPをどのように取得できますか?

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

最終ポートは常に80なので、10000と10001は80に変換する必要があります。他の翻訳は正確ですが、eth0の物理アドレス(トンネルなし)を取得したので、マングタグをバイパスします。

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

おすすめ記事