我已经在 CentOS 7 上练习使用 iptables(它是 Virtual Box 上的访客计算机)。起初我禁用了firewalld
:
systemctl disable firewalld
systemctl stop firewalld
然后我安装了 iptables:
yum -y install iptables-services
systemctl enable iptables
systemctl start iptables
毕竟,我尝试使用nc -l 1025
命令在本地计算机上打开 tcp 端口,但命令挂断了。我查遍了互联网,发现我可以在这篇文章中刷新 iptables 规则netcat 命令无法访问开放端口但此后我根本无法连接到互联网。所以我把我的 CentOS7 恢复到刚刚安装 iptables 时的状态。这是我的 iptables 规则:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
这是详细模式nc -vl 1025
:
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::1025
Ncat: Listening on 0.0.0.0:1025
结果是ss -lnt
:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
另一种详细模式例如端口 2000 nc -vl 2000
:
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Listening on :::2000
Ncat: Listening on 0.0.0.0:2000
的结果ss -lnt
是相同的:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
那么我该怎么做才能让我的nc
命令正常工作并且可以在 CentOS7 上打开一些 tcp 端口呢?
答案1
在评论中得到了解决 - 最重要的几点的快速总结:
ncat
以及可能的其他netcat
实现,仅侦听一次传入连接,并在第一次尝试时停止这样做(除非程序中有一个切换)无论当前 iptables 设置是什么,程序都可以开始侦听端口