我正在尝试在 CentOS 上打开一个端口,但似乎不起作用:端口 16 似乎已关闭,而 4075 似乎已打开,尽管根据 iptables 的说法,反之亦然。
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 30 1920 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:445
2 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:445
3 8071 630K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:137
4 516 110K ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:138
5 17 1064 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:139
6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:16
7 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:16
8 5533 8865K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 6 432 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
10 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
11 3 872 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
12 2320 277K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 26 packets, 1776 bytes)
num pkts bytes target prot opt in out source destination
[root@titan ~]# telnet localhost 16 Trying ::1... telnet: connect to
address ::1: Connection refused
[root@titan ~]# telnet localhost 4075
Trying ::1... Connected to localhost.
你能告诉我我做错了什么吗?提前谢谢。
更新 在ip6tables中打开了端口,仍然无法连接
ip6tables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 16 -j ACCEPT
ip6tables -I INPUT 1 -p udp -m state --state NEW -m udp --dport 16 -j ACCEPT
telnet localhost 16
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
更新2我明白了。我没有意识到我需要一个服务来监听端口才能连接 telnet。谢谢大家。
答案1
我自己也遇到过类似的问题。首先,您应该退出 ssh 会话,然后连接到计算机。这是因为大多数 iptables 不会阻止环回接口。其次,正如评论中所说,您使用的是 ipv6。我认为您的问题不在于 iptables。在大多数情况下,您的 iptables 不会拒绝本地主机上的任何内容,但可通过端口 4075 访问的服务器可以使用 ipv6,而端口 16 上的服务器不能,但您的 telnet 命令不使用 ipv4。我认为这是因为我错过了尝试连接到 127.0.0.1。我的 telnet(到任何未打开的端口)就是这样
$ telnet localhost 12334
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
因此他首先尝试首选的 ipv6,然后在连接被拒绝后尝试通过 ipv4 进行连接。
编辑我看到了您的评论,所以也许您的服务出了问题......您可以尝试记录每个丢弃的包裹吗?这是我发现的一篇文章
答案2
IPTables 适用于 IPV4,但不适用于 IPV6。请使用 ip6tables。