我有以下设置:
一台计算机有两个网卡,连接到两个不同的路由器。第一个路由器将端口 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
那应该可行。