OpenVPN 路由端口 80 流量仅限 DD-WRT

OpenVPN 路由端口 80 流量仅限 DD-WRT

我已经在 dd-wrt ​​上设置了 openvpn 客户端,以连接到几个州外的主机。效果很好(也检查了路由表),但我只想隧道传输 http 流量。我一直为我的 dd-wrt ​​路由器使用 IPtables。这是我的,但它似乎不起作用:

iptables -I FORWARD 1 -p tcp -m multiport --dports 80 -o tun1 -j ACCEPT
iptables -I FORWARD 2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD 3 -j DROP

我也听说我应该使用基于策略的路由,但我真的不知道为什么/怎么做?我认为 IP 表会起作用。因此,任何关于为什么上述方法不起作用的帮助都将非常有帮助。

谢谢!

答案1

那么,您想要的是将 dport 80 路由到隧道接口,并将其余所有内容路由到未隧道的传出以太网?

您无法使用 iptables 执行此操作,至少默认情况下不能。iptables 可以丢弃、允许和修改或更改数据包。iptables 通常不会做出路由决策。事实上,当数据包被 FORWARD 表评估时,路由决策已经做出。这就是为什么您可以使用传出接口作为参数的原因;它已经确定了。

您在此处发布的规则只会丢弃不在端口 80 上和隧道上的所有内容。它甚至可能会丢弃隧道,但我认为这应该由 OUTPUT 来处理。

基于策略的路由远远超出了我的专业知识,甚至快速谷歌搜索也能找到多种实现方法。粗略地说,如果您希望它以这种方式工作,那么您将始终向 PREROUTING 表添加规则。 这是一份文档它描述了 iptables 的一个补丁,因此它添加了一个直接改变路由的目标。 以下是部分内容高级路由文档,使用 iptables 标记数据包并设置路由表以通过标记进行操作。还有更多内容(谷歌“使用 iptables 进行基于策略的路由”),不幸的是,我不知道其中有多少内容可以与 DD-WRT 配合使用。希望这可以为您提供一些帮助,帮助您突破这个困境。

相关内容