使用较新的内核 (>= 4.17) 通过特定接口路由所有 HTTP/HTTPS 流量

使用较新的内核 (>= 4.17) 通过特定接口路由所有 HTTP/HTTPS 流量

我的问题非常类似于根据目标端口在不同的接口上输出流量。然而,这个问题是在 2011 年提出的。现在我们有了更新的内核,可以使用 tcp 或 udp 选择器来制定 ip 规则(“策略路由现在在第 4 层占有一席之地”):来源 -请参阅对此答案的评论

我是路由新手,所以我只知道我在 unix.stackexchange.com 上的答案中读到的内容。我的大部分解决方案想法来自通过特定接口路由端口流量

我有两个接口 eth1 (10.0.0.182) 和 eth0 (192.168.1.2)。我的默认路由是 eth0。我希望所有 http 和 https 流量都通过 eth1 而不是默认路由进行路由。其他一切都可以保持不变。

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
0.0.0.0         10.0.0.1        0.0.0.0         UG    203    0        0 eth1
10.0.0.0        0.0.0.0         255.255.255.0   U     203    0        0 eth1
192.168.1.2     0.0.0.0         255.255.255.0   U     202    0        0 eth0

10.0.0.1 处的设备是 Comcast 调制解调器,充当 DHCP 服务器、防火墙等。公共 IP 地址是 Comcast IP。

以下是我认为需要执行的步骤,才能使用较新的 ip 规则功能使其正常工作。

# add a new (secondary) table:
echo "200 comcast-route" >> /etc/iproute2/rt_tables

# Populate secondary routing table
ip route add default via 10.0.0.1 dev eth1 table comcast-route

# relax Strict Reverse Path Forwarding to Loose RPF 
sysctl -w net.ipv4.conf.eth1.rp_filter=2
#NOTE: my system already has this value, so no change is needed
# net.ipv4.conf.eth1.rp_filter = 2

# specify alternate routes when using specific destination ports
# iif lo below means "from local"
ip rule add iif lo ipproto tcp dport 80 lookup 80
ip rule add iif lo ipproto tcp dport 443 lookup 80

这一切看起来正确吗?如果不起作用,我该如何恢复这些更改?

最后,当一切都按预期进行时,我如何使其持久化?我看到一个答案这里,但我认为使用的建议/etc/rc.d/rc.local已经过时了。有没有更好的方法来坚持这些规则?

相关内容