openvpn – 将来自特定子网的networkingstream量转发到特定的tun接口

我正在使用openwrt(chaos_calmer 15.05)

我正在尝试将networkingstream量从两个不同的SSID转发到两个运行openvpn的不同vps

我的设置只使用一个wifi / tun接口。 用两个VPN(openvpn客户端)同时工作似乎是不可能的。

我不明白为什么:/我认为这不是一个非常复杂的设置,我希望有人可以帮助我,因为你是networking专家。

我认为这是一个路由问题,但我不确定。 任何人都可以帮我解决这个问题吗?

为了简化这一点,我的设置如下所示:

eth0 (internet link) <===== tun0 <==== wifi-A eth0 (internet link) <===== tun1 <==== wifi-B 

请注意以下声明

  1. 我的openwrt设备使用DHCP获取eth0接口的Internet链接

  2. 我在我的wlan0接口上创build了一个网桥,可以播放两个SSID:(wifi-a&wifi-b)

  3. 在wifi-a上:DHCP服务器正在运行池172.17.42.100-200 gw 1​​72.18.42.1

  4. 在wifi-b上:DHCP服务器正在运行池172.18.42.100-200 gw 1​​72.18.42.1

  5. 我有两个VPS,我安装openvpn:PublicIP-1&PublicIP-2

  6. 我在我的设备上运行两个openvpn客户端到public-IP-1(tun0)和到public-IP-2(tun1)

  7. 最后,我使用下面的iptables规则,将wifi-tun1和wifi-b子网划分为tun1子网:

    iptables -t nat -A POSTROUTING -s 172.17.42.0/24 -o tun0 -j MASQUERADE iptables -A FORWARD -s 172.17.42.0/24 -o tun0 -j ACCEPT iptables -A FORWARD -d 172.17.42.0/24 -m状态 – 状态ESTABLISHED,相关-i tun0 -j ACCEPT

     iptables -t nat -A POSTROUTING -s 172.18.42.0/24 -o tun1 -j MASQUERADE iptables -A FORWARD -s 172.18.42.0/24 -o tun1 -j ACCEPT iptables -A FORWARD -d 172.18.42.0/24 -m state --state ESTABLISHED,RELATED -i tun1 -j ACCEPT 

在我的界面细节下面:

eth0 inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0

br-wifi-a inet addr:172.17.42.1 Bcast:172.17.42.255 Mask:255.255.255.0

br-wifi-b inet addr:172.18.42.1 Bcast:172.18.42.255 Mask:255.255.255.0

tun0 inet addr:10.8.0.6 PtP:10.8.0.5掩码:255.255.255.255

tun1 inet addr:10.9.0.6 PtP:10.9.0.5掩码:255.255.255.255

我的路线表:

目标网关Genmask标志度量标准Ref
使用Iface

默认192.168.0.1 0.0.0.0 UG 0 0 0 eth0

10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun 0 10.8.0.5 * 255.255.255.255 UH 0 0 0 tun 0 10.9.0.1 10.9.0.5 255.255.255.255 UGH 0 0 0 tun1 10.9.0.5 * 255.255.255.255 UH 0 0 0 tun1

PublicIP-1 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0

PublicIP-2 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0

172.17.42.0 * 255.255.255.0 U 0 0 0 br-wred

172.22.42.0 * 255.255.255.0 U 0 0 0 br-lan 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0

快速debugging:

ping google.com -I tun1 PING google.fr(108.177.119.94):56个数据字节从108.177.119.94开始64个字节:seq = 0 ttl = 43时间= 29.665 ms

ping google.com -I tun0 PING google.fr(108.177.119.94):56个数据字节从108.177.119.94开始64个字节:seq = 0 ttl = 43时间= 30.277 ms

ping google.com -I eth0 PING google.fr(108.177.119.94):56个数据字节来自108.177.119.94的64个字节:seq = 0 ttl = 42时间= 17.860 ms ^ C

你知道我失败的地方吗? 感谢您的帮助,

另外,我尝试了下面的命令为我的tun接口添加默认的gw:

 echo "1 vpna" >> /etc/iproute2/rt_tables echo "2 vpnb" >> /etc/iproute2/rt_tables ip rule add from 10.8.0.0/24 dev tun0 table vpna ip rule add from 10.9.0.0/24 dev tun1 table vpnb ip route add default via 10.8.0.5 dev tun0 table vpna ip route add default via 10.9.0.5 dev tun1 table vpnb