我在编写用于路由家庭网络的脚本中遇到问题。基本上,在我的路由器上,我有3个接口(WAN和2个VPN隧道),应在sourceIP的基础上通过这些接口之一路由客户端。
实际上,该脚本在运行Asuswrt-merlin的Asus路由器(wan和1个vpn)上运行,但我试图以1 wan和2个vpn的方式编写它,使其最终甚至可以在Asuswrt和ubuntu上运行,因此使用了基本的shell命令(但我想如果它在merlin上也可以在其他两个上工作)。
测试脚本运行良好,但是我不得不对2个tun接口的网关进行硬编码,因为我没有找到从ifconfig / ip route / ip a /等shell命令中提取此类信息的方法。>>
更具体地说,这三个接口都是基于dhcp的。WAN接口指向我网络中的另一个路由器,因此网关是已知的。这是默认路由(通过…dev eth0默认)。
tun11和tun12连接到vpn提供程序(openvpn),但只有完成连接的第一个接口通过[IP] dev tun1X以“ 0.0.0.0/1 ...”的形式添加到主路由表中。揭示其网关(通过[IP])。
另一个没有,我无法在其他地方找到第三个网关ip。当然,如果我不能动态地获得此信息,该脚本将变得毫无用处。
编辑:
ip route show table all 192.168.200.200 dev eth0 table wan0 proto kernel scope link YYY.YYY.YYY.116 via 192.168.200.200 dev eth0 table wan0 10.12.134.0/25 dev tun12 table wan0 proto kernel scope link src 10.12.134.2 192.168.200.0/24 dev eth0 table wan0 proto kernel scope link src 192.168.200.254 10.0.0.0/24 dev br0 table wan0 proto kernel scope link src 10.0.0.254 127.0.0.0/8 dev lo table wan0 scope link default via 192.168.200.200 dev eth0 table wan0 192.168.200.200 dev eth0 proto kernel scope link YYY.YYY.YYY.116 via 192.168.200.200 dev eth0 XXX.XXX.XXX.96/27 dev tun11 proto kernel scope link src XXX.XXX.XXX.98 10.12.134.0/25 dev tun12 proto kernel scope link src 10.12.134.2 192.168.200.0/24 dev eth0 proto kernel scope link src 192.168.200.254 10.0.0.0/24 dev br0 proto kernel scope link src 10.0.0.254 127.0.0.0/8 dev lo scope link 0.0.0.0/1 via XXX.XXX.XXX.97 dev tun11 128.0.0.0/1 via XXX.XXX.XXX.97 dev tun11 default via 192.168.200.200 dev eth0 broadcast XXX.XXX.XXX.96 dev tun11 table local proto kernel scope link src XXX.XXX.XXX.98 broadcast 192.168.200.0 dev eth0 table local proto kernel scope link src 192.168.200.254 broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1 local XXX.XXX.XXX.98 dev tun11 table local proto kernel scope host src XXX.XXX.XXX.98 broadcast 10.12.134.127 dev tun12 table local proto kernel scope link src 10.12.134.2 local 10.0.0.254 dev br0 table local proto kernel scope host src 10.0.0.254 local 127.0.1.1 dev lo table local proto kernel scope host src 127.0.0.1 broadcast 10.0.0.255 dev br0 table local proto kernel scope link src 10.0.0.254 local 192.168.200.254 dev eth0 table local proto kernel scope host src 192.168.200.254 broadcast 192.168.200.255 dev eth0 table local proto kernel scope link src 192.168.200.254 local 10.12.134.2 dev tun12 table local proto kernel scope host src 10.12.134.2 broadcast 10.12.134.0 dev tun12 table local proto kernel scope link src 10.12.134.2 broadcast XXX.XXX.XXX.127 dev tun11 table local proto kernel scope link src XXX.XXX.XXX.98 local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1 broadcast 10.0.0.0 dev br0 table local proto kernel scope link src 10.0.0.254 local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1 unreachable default dev lo table 0 proto kernel metric 4294967295 error -101 hoplimit 255 unreachable default dev lo table 0 proto kernel metric 4294967295 error -101 hoplimit 255
从这里我可以获取所有相关信息(子网,ip,网关),但不能获取tun12网关。它没有被添加。
route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.200.200 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 YYY.YYY.YYY.116 192.168.200.200 255.255.255.255 UGH 0 0 0 eth0 XXX.XXX.XXX.96 0.0.0.0 255.255.255.224 U 0 0 0 tun11 10.12.134.0 0.0.0.0 255.255.255.128 U 0 0 0 tun12 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 XXX.XXX.XXX.97 128.0.0.0 UG 0 0 0 tun11 128.0.0.0 XXX.XXX.XXX.97 128.0.0.0 UG 0 0 0 tun11 0.0.0.0 192.168.200.200 0.0.0.0 UG 0 0 0 eth0
也不是这里...与这两个vpn关联的特定路由表也为空(表111和112)
编辑:为了进一步阐明这个问题,到目前为止,我可以得到(使用上面的输出):
WAN IP: 192.168.200.254 WAN subnet: 192.168.200.0/24 WAN gateway: 192.168.200.200 tun11 IP: XXX.XXX.XXX.98 tun11 subnet: XXX.XXX.XXX.96/27 tun11 gateway: XXX.XXX.XXX.97 tun12 IP: 10.12.134.2 tun12 subnet: 10.12.134.0/25 tun12 gateway: ???
我需要tun12网关才能使用我的脚本为其正确构建路由规则。我想念什么?或确实无法做到这一点,因为网络似乎缺乏解决方案。预先感谢!
我在编写用于路由家庭网络的脚本中遇到问题。基本上在我的路由器上,我有3个接口(WAN和2个VPN隧道),应通过这些接口之一在...
到目前为止,我无法在asuswrt或ubuntu中为Windows“ ipconfig / all”找到相应的命令。我确定我想念一些东西。在Windows上运行该命令时,您可以随时看到所有网络接口及其当前ip / subnet / gateway / dns的列表。
我想无论如何我都找到了解决此问题的方法。只是要再次总结问题,这实际上是我系统中发生的事情