在我的 Linux VM 上我有两个 IP
192.168.11.88 192.168.11.99
我希望端口 8889 上来自 192.168.11.99 的 ssh 流量将流量转发到端口 22 上的远程服务器 172.16.5.80
如何使用 IPTables 实现这一目标
谢谢
正如 FelixJN 所建议的。我使用 socat 实用程序代替 IPtables,下面的配置有效并且流量转发到远程服务器。
[Unit]
Description=forwards local port 192.168.56.70:8889 to 192.168.56.70:22
After=multi-user.target
[Service]
ExecStart=/usr/bin/socat -lf /var/log/socat-ssh.log TCP-LISTEN:8889,fork,bind=192.168.56.71 TCP:192.168.56.70:22
Restart=On-Failure
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
答案1
对于转发端口,socat
可能是最简单的
socat TCP-LISTEN:8889,fork,bind=192.168.11.99 TCP:172.16.5.80:22
侦听端口8889
,但仅侦听本地 IP 192.168.11.99
。将所有传入流量转发到172.16.5.80:22
可能的系统服务文件 ( /etc/systemd/system/socat-ssh.service
)
[Unit]
Description=forwards local port 192.168.11.99:8889 to 172.16.5.80:22
After=ssh
[Service]
ExecStart=/usr/bin/socat -lf /var/log/socat-ssh.log TCP-LISTEN:8889,fork,bind=192.168.11.99 TCP:172.16.5.80:22
Restart=On-Failure
RestartSec=5
[Install]
WantedBy=default.target
socat
(检查您系统的路径)
启用(用于启动时自动启动)和启动(用于首次初始化):
systemctl enable socat-ssh
systemctl start socat-ssh