我如何使用iptables / route从一个本地networking设备通过自己的网关路由stream量?

在我的Linux服务器(Ubuntu)上,如何configuration源自我的一个networking接口(我的VPN设备 – ppp0)的stream量来路由自己的网关地址?

注意事项:

  • 我无法将其设置为服务器上的默认路由,因为路由所有stream量的成本很高
  • 没有一个特定的子网连接到VPN – 它可能是任何公共IP或端口的stream量(VPN的行为作为一个代理)

最终目标是能够configuration一个本地应用程序绑定到VPN IP并仅通过VPN进行通信,但是不应该通过它来路由其他服务器通信。 我已经这样设置,但我似乎需要一些额外的路由规则,以使其工作。

如果VPN实际上是作为一个代理服务器,那么源地址应该被重新写入到ppp会话的远端(除非它是一个无编号的接口,但是我没有在vpn上看到过)。 如果实际上路由是正常的,并且目的地可能在任何地方,那么它变成一个更有趣的问题。

在LARTC中概述了基本解决scheme – 您希望创build第二个路由表,将VPN隧道指定为默认路由,然后添加filter以引导一些stream量来查看辅助路由表,而不是默认路由表。 如果您只需要一个应用程序来连接隧道,并且应用程序可以绑定到隧道接口的IP,那么从源IP开始的基于策略的路由就可以做到这一点 – 请看这里的例子: http : //lartc.org/ HOWTO / lartc.rpdb.html

您可以使用dev参数将路由装箱到指定的设备。

route add -net 0.0.0.0 gw ENTER-GATEWAY-HERE dev ppp0