我build立了一个VPN隧道,遇到了一个有趣的问题。
随着固定路线的build立(比如8.8.8.8 ),一切都很好。 数据包通过该接口发送,并收到响应。 默认网关设置时相同。
当没有路由设置,但是应用程序绑定到该接口时会发生问题。 如果我尝试使用ping -I tun0 8.8.8.8 ,tcpdump根本没有显示通过隧道实际发送的数据包。
更重要的是,当我使用curl --interface tun0 google.com ,tcpdump似乎显示发送了一个SYN,并收到了一个SYN-ACK …但是似乎被删除了。 连接最终超时。
我的目标是将绑定到该接口的应用程序的stream量仅通过该接口进行路由,并将所有其他stream量通过默认网关进行传输。 我无法将默认网关设置为VPN。
有什么简单的,我失踪?
您需要为该接口设置一个附加的路由表。
我假设你的隧道有IP地址10.10.0.10 ,子网255.255.255.0和网关10.10.0.1 。
编辑/etc/iproute2/rt_tables并添加一个名为rt_tunnel和首选项1的新路由表
1 rt_tunnel
configuration路由表。 我们添加可达networking及其默认网关
ip route add 10.10.0.0/24 dev tun0 src 10.10.0.10 table rt_tunnel ip route add default via 10.10.0.1 dev tun0 table rt_tunnel
添加路由规则,所以系统知道何时使用新的路由表
ip rule add from 10.10.0.10/32 table rt_tunnel ip rule add to 10.10.0.10/32 table rt_tunnel