通过默认接口以外的接口发送特定端口

通过默认接口以外的接口发送特定端口

我是 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

参考这个问题以获取更多信息:通过特定接口路由端口流量

相关内容