![通过默认接口以外的接口发送特定端口](https://linux22.com/image/217167/%E9%80%9A%E8%BF%87%E9%BB%98%E8%AE%A4%E6%8E%A5%E5%8F%A3%E4%BB%A5%E5%A4%96%E7%9A%84%E6%8E%A5%E5%8F%A3%E5%8F%91%E9%80%81%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3.png)
我是 Linux 的新新手。我已经阅读了很多文章,但在我的配置中找不到问题,我需要一些帮助。
我有一台带有两个接口的 Debian PC:
ens192
- 10.20.30.0/26 默认网关ens256
- 10.10.10.8/29
我有两个互联网提供商,其路由器分别为 10.20.30.40(默认)和 10.10.10.10。
我只想通过 10.10.10.10 路由器发送 TCP/443 和 TCP/8080 通信。所有其他通信均应通过 10.20.30.40。
我已经添加
80 special
去/etc/iproute2/rt_tables
并跑
sudo ip route add table 80 10.10.10.8/29 dev ens256 scope link src 10.10.10.12
sudo ip route add table 80 default dev ens256 via 10.10.10.10
sudo iptables -t mangle -N markports
sudo iptables -t mangle -I PREROUTING 1 -j CONNMARK --restore-mark
sudo iptables -t mangle -I OUTPUT 1 -m mark --mark 0 -j markports
sudo iptables -t mangle -I OUTPUT 2 -j CONNMARK --save-mark
sudo iptables -t mangle -A markports -p tcp --dport 443 -j MARK - set-mark 0x80
sudo ip rule add fwmark 0x80 lookup 80
sudo iptables -t nat -I POSTROUTING 1 -m mark --mark 0x80 -j MASQUERADE
然而,它仍然不起作用!我需要改变什么?
答案1
请接受我的建议,因为我还在学习 iptables/规则/路由,但是,我认为您缺少的是应用您已配置的路由/表的“ip 规则”。
例如,我认为像下面这样的东西会起作用:
ip rule add iif lo ipproto tcp dport 80 lookup 80
ip rule add iif lo ipproto tcp dport 443 lookup 80
参考这个问题以获取更多信息:通过特定接口路由端口流量