将以太网别名上的stream量路由到默认网关

这个问题与我问过的一个问题有关。

我想build立一个OpenVPN的双重客户端,这样一台网关设置为eth0:0的计算机可以通过一个OpenVPN隧道获得所有的stream量,而一台网关设置为eth0:1的计算机可以通过一个不同的OpenVPN隧道。 最后,我想能够有多台电脑连接到我的双客户端,共享OpenVPN隧道(但彼此不知道)。

图表http://serahill.com/OpenVPN-Gateway.png

我已经在我的双客户端框中设置了以太网别名,并且我已经在连接主机上将我的网关设置为双客户端框上的以太网别名。 但是,路由似乎没有正常发生。 来自连接主机的任何ping都直接进入双客户端的默认网关,而不是通过隧道进行路由。

这些是我在隧道build立之后使用的路由命令:

ip route add default dev $1 table us_table ip rule add from [ip address of my ethernet alias] table us_table ip route flush cache iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE[/code] 

这是隧道设置后的路由表:

 root@ahost:/etc/openvpn# ip route show 10.26.0.0/24 via 10.26.0.1 dev tun0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.242 10.26.0.0/16 dev tun0 proto kernel scope link src 10.26.0.2 default via 192.168.1.1 dev eth0 metric 100 

这是us_table路由表:

 root@ahost:/etc/openvpn# ip route show table us_table default dev tun0 scope link 

我的规则:

 root@ahost:/etc/openvpn# ip rule show 0: from all lookup local 32765: from 192.168.1.242 lookup us_table 32766: from all lookup main 32767: from all lookup default 

任何build议我什么错了或做错了? 我被困在这里

您已将规则设置为匹配以太网别名地址:

 ip rule add from [ip address of my ethernet alias] table us_table 

然而,这是永远不会匹配的,因为伪装是在POSTROUTING链中,也就是在路由决定已经完成之后发生。

我从来没有使用过基于策略的路由,所以我只能猜测你可能需要做些什么才能做到这一点。 手册页上说,你可以在其他规则之前执行NAT,这可能会把你排除在外。 或者,您可以使用笔记本电脑或工作站的实际IP地址作为源地址(或范围)。

基于@ syneticon-dj的build议,我为不同的OpenVPN客户端分配了不同的子网,并设置了路由,以便将特定子网中的所有IP地址路由到特定的tun设备。

这意味着所有连接的客户端都必须将其网关设置为OpenVPN网关,并且其IP地址必须位于正确的子网中。

我的命令一旦OpenVPN tun是:

 ip route add default dev tun0 table us_table ip rule add from 192.168.233.0/24 table us_table ip route flush cache iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE