我认为 iproute2 抢先创建路线

我认为 iproute2 抢先创建路线

首先:我知道可以使用 SSH 轻松地完成此操作,但我想学习如何路由。

我想将数据包通过进入系统的同一 tun0 接口路由回去。

我可以为单程路线做这件事。

这有效:

sudo ip route add 74.52.23.120 metric 2 via 10.8.0.1 

但我必须手动添加它们来处理每个下达的请求

我已服用蓝色药丸并遵循http://lartc.org/howto/lartc.netfilter.html

Netfilter 和 iproute - 标记数据包教程

但它是基于标记来重定向传出的数据包

我想要的是通过 tun0 传入的数据包不要被丢弃,这就是现在发生的情况,运行 scappy 或类似程序来接收数据包,但似乎没有接收到任何东西。

通过 wireshark 观察,我看到初始 SYN 数据包从 tun0 接口进入,但如果没有如上所示的静态路由,情况就只能是这样了。

我疯了吗?

答案1

显然,您通过 VPN 进行了某种转发配置,并希望防止通过 VPN 到达主机的流量出现分叉路由路径。在这种情况下,您的请求数据包可能不会被丢弃(至少不会被主机丢弃),回复只会通过另一个接口(可能是您的默认路由指向的接口)路由出去。

你肯定会做的不是在这种情况下,需要动态创建/拆除路由。使用 netfilter 标记数据包的做法是正确的。与 LARTC 指南中给出的示例的主要区别在于,您需要使用 CONNMARK 而不是 MARK 目标 - 它会将传入的和传出的数据包属于具有定义标记的连接。类似iptables -t mangle -A INPUT -i tun0 -j CONNMARK --set-mark 555 完成此操作后,您可以使用ip rule add fwmark 555 lookup <your_secondary_routing_table>以与原始请求相同的方式路由回复。您的设置与多个 ISP 的路由设置略有相似,因此阅读一些配置示例如果你还没有走上正确的道路,它应该会引导你走上正确的道路。

顺便说一句:如果您让位于 10.8.0.1 的远程 VPN 端点简单地将 TCP/UDP 连接请求伪装成其自己的 IP 地址 ( iptables -t nat -A POSTROUTING -o tun0 -d <your_servers_address> -j MASQUERADE),则可以更轻松地实现类似的效果。这样,您只需要一个静态路由 - 即使用 OpenVPN 自动设置的远程 VPN 端点的路由。

相关内容