stream量拒绝通过VPN接口

我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

  1. 编辑/etc/iproute2/rt_tables并添加一个名为rt_tunnel和首选项1的新路由表

     1 rt_tunnel 
  2. 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 
  3. 添加路由规则,所以系统知道何时使用新的路由表

     ip rule add from 10.10.0.10/32 table rt_tunnel ip rule add to 10.10.0.10/32 table rt_tunnel