如何强制客户端连接 ssh 通过特定接口进行通信?
我有一个带有 eth0 和 eth1 的服务器,即,我想强制所有 ssh 客户端通过 eth0。因此,当我的服务器上有很多 ssh 客户端时,我可以更快地通过 eth1 访问我的服务器。
编辑:它是启动 ssh 客户端连接的服务器。
如何强制客户端连接 ssh 通过特定接口进行通信?
我有一个带有 eth0 和 eth1 的服务器,即,我想强制所有 ssh 客户端通过 eth0。因此,当我的服务器上有很多 ssh 客户端时,我可以更快地通过 eth1 访问我的服务器。
编辑:它是启动 ssh 客户端连接的服务器。
更新 OPs 编辑要求服务器端解决方案 - 这是客户端。对于临时使用,您可以从特定 IP 或以太网端口将选项绑定到 SSH。ssh target_IP -b source_IP
要获得更永久的解决方案,请更改路由表。
我试图从 172.xx7 (eth0) SSH 到 172.xx69,它有另一个恰好是默认网关的以太网端口 172.xx8 (eth1)。
如果我尝试直接 ssh 会失败 - 因为此源 IP 默认为 xxx8 eth1,并且在外部防火墙规则中不允许使用 0.69
# ssh 172.29.179.69 -l root
ssh: connect to host 172.x.x.69 port 22: Connection timed out
#
当我使用 -b 开关将 SSH 绑定到 xxx7 IP (eth0) 时成功 - 在防火墙规则中允许此 IP 连接到 .69。
# ssh 172.x.x.69 -b 172.x.x.7 -l root
Last login: Wed Nov 19 14:27:44 2014 from 172.x.x.7
#
在 172.xx7 我有两个以太网端口 x.7 和 x.8
# ifconfig
eth0 Link encap:Ethernet HWaddr xxxxx
inet addr:172.x.x.7 Bcast:172.x.x.31 Mask:255.255.255.224
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27678 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1852058 (1.7 MiB) TX bytes:684 (684.0 b)
eth1 Link encap:Ethernet HWaddr xxx
inet addr:172.x.x.8 Bcast:172.x.x.31 Mask:255.255.255.224
inet6 addr: xxx Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:72022 errors:0 dropped:0 overruns:0 frame:0
TX packets:34734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:40788643 (38.8 MiB) TX bytes:4441314 (4.2 MiB)
我需要这个 hack 的原因是路由表默认 eth1 而不是 eth0
# route (@172.x.x.7)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.x.x.0 * 255.255.255.224 U 0 0 0 eth1
172.x.x.0 * 255.255.255.224 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
link-local * 255.255.0.0 U 1002 0 0 eth0
link-local * 255.255.0.0 U 1003 0 0 eth1
link-local * 255.255.0.0 U 1004 0 0 eth2
default 172.x.x.1 0.0.0.0 UG 0 0 0 eth1 # eth0 OK
#
您需要在“iptables”中添加一些规则,以便将您从盒子发起的 ssh 流量转发到远程机器。
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d [destination ip] -j ACCEPT
只告诉其他用户 eth0 的 ip 地址。