端口通过VPNredirect

我想通过VPN将我的tcpstream量redirect到IRC。

我用iptables标记数据包,并为这个数据包创build一个新的路由:

echo 1 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter echo 0 > /proc/sys/net/ipv4/conf/tun0/rp_filter iptables -t mangle -A OUTPUT ! -d 192.168.0.0/16 -p tcp --dport 6667 -j MARK --set-mark 0x42 ip route add default dev tun0 src 10.5.82.5 table VPN ip rule add fwmark 0x42 table VPN 

VPN连接:

 # ifconfig tun0 tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet adr:10.5.82.5 PtP:10.5.82.6 Masque:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:2898 errors:0 dropped:0 overruns:0 frame:0 TX packets:3163 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:100 RX bytes:159644 (155.9 KiB) TX bytes:257601 (251.5 KiB) 

数据包被redirect到本地机器上的tun0(iptables标记和ip规则正常),但没有数据包到达VPN的tun0接口。

你有想法吗?

提前致谢。

如果您的IRCstream量来自您创build规则的同一主机,则可能会看到传出数据包中“错误的”源IP地址的问题 – 使用tcpdump -i tun0 -v -n检查源地址是否为10.5.82.5 tcpdump -i tun0 -v -n 。 如果不是,只需将src 10.5.82.5 ip route add到您的ip route add命令中即可。

如果stream量来自其他地方,请考虑NAT规则: iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

另外,您的路由应该通过10.5.82.6 (远程网关IP地址),而不是您的本地接口。 虽然它应该在任何情况下工作,因为它是一个PtP接口,它感觉不对。 当通过脚本添加路由时,可以简单地省略“via”参数,并使用dev tun0 。 这与PtP接口一起工作,因为在链路的另一侧没有联系哪个主机的模糊性。

使用OpenVPN的redirect网关选项自动将默认网关redirect到VPN,而无需手动使用路由和iptables。