如何将所有流量从特定端口路由到特定网络接口?

如何将所有流量从特定端口路由到特定网络接口?

我有以下设置:

一台计算机有两个网卡,连接到两个不同的路由器。第一个路由器将端口 5122 上的所有外部流量重定向到端口 22。这样我就可以使用 ssh 连接到该机器。

我希望第一个路由器仅用于 ssh 连接。其他什么都不用做。所以我想让所有其他流量都通过第二个路由器。

我怎样才能做到这一点?

答案1

像这样:

1. 标记数据包

在每个前往端口 5122 的数据包上设置一个标记。

iptables -A PREROUTING -t mangle -p tcp --dport 5122 \
  -j MARK --set-mark 1

或者,如果您想将其限制为目标 IP 为 10.10.10.10 的数据包,请这样做:

iptables -A PREROUTING -t mangle -p tcp -d 10.10.10.10/32 --dport 5122 \
  -j MARK --set-mark 1

2. 创建路由表/规则

创建带有规则的路由表,以用于标记的数据包。

echo 201 ssh5122.out >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table ssh5122.out

3.添加路线

添加路由表对应的路由。

ip route add default via $ssh_router_ip dev $ssh_router_interface \
  dev table ssh5122.out

那应该可行。

相关内容