将 ssh 路由到特定网关

将 ssh 路由到特定网关

我想知道如何强制使用端口 22 到我想要的接口,任何接口,Wi-Fi 或以太网。
例如将 *:22 路由到 Wi-Fi。
我检查了route命令,但看起来不可能。
有什么想法吗?
欢迎使用 BSD 或 Linux 命令。

答案1

常规路由仅适用于 IP 地址,并不关心传输的数据(包括 TCP 或 UDP)。


至少在 Linux 上,你可以使用策略路由为了这:

  1. 添加防火墙规则来标记某些数据包:

    iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
    
  2. 使用您所需的网关创建一个新的路由表:

    ip route add default via 192.168.0.1 dev wlan0 table 42
    
  3. 添加策略规则以将新的路由表用于标记的数据包:

    ip rule add fwmark 1 table 42
    

在 Windows 上,你需要一种不同的方法,例如,告诉程序使用特定接口。有些程序有“绑定地址”选项,例如 ssh 的-b

ssh -b 192.168.0.42 root@myserver

(我不知道它与多个接口但我感觉可能不会。)


最后,您可以添加通往特定服务器的主机路由(通过 Wi-Fi)。

这可以扩展到通过该服务器为所有其他连接启用 SSH 隧道。

相关内容