我正在寻找一种方法来通过tun0(openvpn)路由所有wlan0stream量(tcp和udp)。
但是,源自设备本身的所有其他stream量不应通过tun0路由。
我猜这可以通过使用iptables或路由来实现,但我的选项似乎没有任何工作。
# route add -net 0.0.0.0 gw 172.27.0.1 dev wlan0 SIOCADDRT: No such process
信息:这是因为VPN服务器不是多余的,而且wlan用户并不重要。 但是,设备上运行的所有服务都相当重要,而拥有一台没有SLA的VPN虚拟机就不是个好主意。 试图尽量减less出现问题的几率。 所以将VPN服务器设置为默认网关并不是一个真正的select。 我也希望所有wlan0用户使用VPN服务器的IP地址作为外部IP。
用提供的脚本编辑:
root@ft-genesi-xxx ~ # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.27.0.17 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.13.37.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 172.27.0.0 172.27.0.17 255.255.192.0 UG 0 0 0 tun0 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 root@ft-genesi-xxx ~ # ./test.sh RTNETLINK answers: No such process root@ft-genesi-xxx ~ # cat test.sh #!/bin/sh IP=/sbin/ip # replace with the range of your wlan network, or use fwmark instead ${IP} rule add from 10.13.37.0/24 table from-wlan ${IP} route add default dev tun0 via 127.72.0.1 table from-wlan ${IP} route add 10.13.37.0/24 dev wlan0 table from-wlan
我相信这应该让你去:
/usr/sbin/ip route add default via 172.27.0.17 dev tun0 table 200 /usr/sbin/ip rule add from 10.13.37.0/24 table 200 /usr/sbin/ip route flush cache
这正是我在这里设置的。 唯一的区别是我想要路由一个主机(/ 32),而不是整个networking(/ 24)。
在/ etc / iproute2 / rt_tables中定义
# I use 200, use a free number: 200 from-wlan
然后运行:
#!/bin/sh IP=/sbin/ip # replace with the range of your wlan network, or use fwmark instead ${IP} rule add from 192.168.0.0/24 table from-wlan ${IP} route add default dev tun0 via xyzz table from-wlan ${IP} route add 192.168.0.0/24 dev wlan0 table from-wlan
这将发送从192.168.0.0/24到tun0的所有stream量,除了stream量到192.168.0.0/24。 如果要指定下一跳,请添加“通过xyzz”
我认为如果没有VPN的TAP接口或使ft-genesi-xxx充当WLAN的网关,这是不可行的。
如果您可以使用TAP界面:
##on ft-genesi-xxx: echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp iptables -t nat -A PREROUTING -i wlan0 -p tcp -j DNAT --to-destination 172.27.0.1 iptables -t nat -A PREROUTING -i wlan0 -p udp -j DNAT --to-destination 172.27.0.1 ##on the vpn-server 172.27.0.1 machine: #replace tapX with the interface the openvpn server uses /usr/sbin/ip route add 10.13.37.0/24 dev tapX
如果你想使用一个网关,那么你需要像这样使用桥接[1],并使用上面的iptable规则,所以你不必为整个系统设置一个默认路由。
[1] http://tldp.org/HOWTO/Ethernet-Bridge-netfilter-HOWTO-3.html