![netcat 命令无法访问开放端口](https://linux22.com/image/3626/netcat%20%E5%91%BD%E4%BB%A4%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E5%BC%80%E6%94%BE%E7%AB%AF%E5%8F%A3.png)
我有两台服务器,我试图在其中安装一些软件。一个是server1(IP 10.1.2.205),另一个是server2(IP 10.1.2.206)。两者都能够通过名称和 IP 地址互相 ping 通(即,我可以从 server2ping server1
或ping 10.1.2.205
)
netstat -lnt
当我在 server1 上输入时,有以下输出
Proto Recv-Q Send-Q Local Address ForeignAddress State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:52666 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6817 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6818 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 :::36483 :::* LISTEN
tcp 0 0 :::5989 :::* LISTEN
现在,当我尝试使用 server2 中的 netcat 命令时,我得到以下结果:
nc -v 10.1.2.205 22
Connection to server1 22 port [tcp/ssh] succeeded! SSH-2.0-OpenSSH_5.3
nc -v server1 22
Connection to server1 22 port [tcp/ssh] succeeded! SSH-2.0-OpenSSH_5.3
但问题在于以下输出:
nc -v server1 5989
nc: connect to server1 port 5989(tcp) failed: No route to host
我在每个其他端口上都得到相同的响应。
server1 上没有其他端口响应。我感兴趣的端口是 6817 和 6818 端口。我有一个应用程序需要在这两台机器之间的这些端口上侦听和响应。
输出:iptables -L
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
可能出什么问题了?
答案1
我认为你使用的是 Centos。正如您在 iptables 规则中看到的,除了端口 22 之外的所有 tcp 连接都被阻止。
尝试通过以下方式刷新 iptables 规则:
$ sudo iptables -F
这应该删除所有 iptables 规则。让我知道这是否有效。
答案2
按照上面讨论的方法解决了防火墙规则之后,从其他机器连接到 631 上的 cups admin 可能仍然存在一些困难。
如果您注意 netstat 输出中端口号之前的 IP 地址格式,您可能会发现在端口 631 上运行的服务似乎正在侦听与其他服务不同的 IP 范围。看起来只监听 IP 地址 127.0.0.1:631 和 ::1:631,而不是 0.0.0.0:631 :::631。
这表明它正在监听环回接口 lo0,而不是主以太网接口。
您可以通过比较输出来确认这一点
netstat -L lo0
netstat -L eth0 (or the name of your default network interface)
这是 CUPS 管理工具的默认配置和行为。
它只接受来自本地主机的网页的管理访问。有关配置 cups 服务器以允许远程管理访问的更多信息,请参阅 /etc/cupsd.conf (man 5 cupsd.conf)。
您可能需要将“Listen localhost:631”更改为“Listen *:631”,并添加一行“Allow 10.1.2.206”或在“Allow @LOCAL”(本地接口)行下方指定 IP 和网络掩码在配置文件的 /admin 部分中,然后重新启动 cupsd ("/etc/init.d/cups restart")