![将 ssh 路由到特定网关](https://linux22.com/image/1476206/%E5%B0%86%20ssh%20%E8%B7%AF%E7%94%B1%E5%88%B0%E7%89%B9%E5%AE%9A%E7%BD%91%E5%85%B3.png)
我想知道如何强制使用端口 22 到我想要的接口,任何接口,Wi-Fi 或以太网。
例如将 *:22 路由到 Wi-Fi。
我检查了route
命令,但看起来不可能。
有什么想法吗?
欢迎使用 BSD 或 Linux 命令。
答案1
常规路由仅适用于 IP 地址,并不关心传输的数据(包括 TCP 或 UDP)。
至少在 Linux 上,你可以使用策略路由为了这:
添加防火墙规则来标记某些数据包:
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
使用您所需的网关创建一个新的路由表:
ip route add default via 192.168.0.1 dev wlan0 table 42
添加策略规则以将新的路由表用于标记的数据包:
ip rule add fwmark 1 table 42
在 Windows 上,你需要一种不同的方法,例如,告诉程序使用特定接口。有些程序有“绑定地址”选项,例如 ssh 的-b
:
ssh -b 192.168.0.42 root@myserver
(我不知道它与多个接口但我感觉可能不会。)
最后,您可以添加通往特定服务器的主机路由(通过 Wi-Fi)。
这可以扩展到通过该服务器为所有其他连接启用 SSH 隧道。