我有 CentOS7 KVM 设置,它使用 TCP 端口转发将 SSH 会话转发到在 NAT 虚拟桥后面运行的三个客户机。
这是我希望建立的设置
2020 -> 192.168.100.10
2021 -> 192.168.100.11
2022 -> 192.168.100.12
这是我正在使用的命令
iptables -t nat -I PREROUTING -p tcp -d $host --dport 2020 -j DNAT --to-destination 192.168.100.10:22 iptables -t nat -I PREROUTING -p tcp -d $host --dport 2021 -j DNAT --to-destination 192.168.100.11:22 iptables -t nat -I PREROUTING -p tcp -d $host --dport 2022 -j DNAT --to-destination 192.168.100.12:22 iptables -I FORWARD -m state -d 192.168.100.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
以下是有趣的观察
端口 2020 和 2021 有效,端口 2022 无效。以下是从另一台主机运行端口扫描程序的结果
$ nc -z -v -w5 acn1 2020 Connection to acn1 2020 port [tcp/*] succeeded! $ nc -z -v -w5 acn1 2021 Connection to acn1 2021 port [tcp/*] succeeded! $ nc -z -v -w5 acn1 2022 nc: connect to acn1 port 2022 (tcp) timed out: Operation now in progress
从主机,我可以通过 SSH 顺利连接到 192.168.100.12,而且我没有看到任何其他服务使用端口 2020。
这是我的 /etc/sysconfig/iptables 的输出。我正在单独运行 iptables.service 中的端口转发脚本
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [214:43782] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -i lo -j ACCEPT COMMIT