我有两台服务器,服务器 A 和服务器 B。服务器 B 充当服务器 A 的 VPN。我正在尝试找出从第三台计算机直接 ssh 进入服务器 A 的方法,即使它位于服务器 B 的防火墙后面。
Sever A:
IP: 73.85.87.81
sshport: 222
Server B:
IP: 109.192.97.168
sshport: 22
我注意到我可以通过 VPN 进入服务器 B,然后 ssh 到服务器 A,或者通过 ssh 进入服务器 B,然后 ssh 到服务器 A,但我宁愿 ssh 一次并最终通过端口 222 到达服务器 A。
有没有什么方法可以设置,当我 ssh 109.192.97.168:222 时最终到达 73.85.87.81:222?
我不想 ssh 进入服务器 B,然后从那里 ssh 进入服务器 A。我更希望转发端口以允许我直接 ssh 到服务器 A。
答案1
使用IPTABLES
您可以完成您想要做的事情:
在 109.192.97.168 (服务器 B) 上运行这些规则
iptables -t nat -A PREROUTING -d 109.192.97.168 -p tcp --dport 222 -j DNAT --to-d 73.85.87.81:222
iptables -t nat -A POSTROUTING -d 73.85.87.81 -p tcp --dport 222 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward
解释:
- 现在,您可以通过 ssh 在 109.192.97.168 的 222 端口上访问服务器 A
- 第一条规则是将指定到服务器 A 端口 222 的流量重定向到服务器 B 端口 222
- 第二条规则用于 MASQUERADE(转换传出流量以使用路由连接接口的 IP 地址)
- 第三条规则用于启用 IP 转发(如果尚未启用)