我在 Windows 7 Professional 上运行 VMware Workstation 9.0.2,使用桥接网络运行 CentOS 6.4 客户机。主机运行的 LAN 是 192.168.123.*,主机的静态 IP 是 192.168.123.2,客户机的静态 IP 是 192.168.123.70。
我可以平和远程控制从主机到 CentOS 客户机,但远程登录和http都无法连接。我可以使用 192.168.123.70 地址从客户机到客户机进行 telnet 和 http 连接,因此客户机上的端口肯定是打开的并且正在被监听。
客户机上的防火墙已关闭,因此当 telnet 失败时日志中没有任何消息。(Windows 防火墙不限制传出连接。)
我想不出任何东西可以允许 ssh 但不允许 telnet。(当我使用时,我可以从主机连接到客户机telnet 192.168.123.70 22
,但telnet 192.168.123.70 23
无法连接)。
其他数据:
/sbin/ifconfig -a
以下是来自访客的输出:
eth0 Link encap:Ethernet HWaddr 00:0C:29:1F:A5:E3
inet addr:192.168.123.70 Bcast:192.168.123.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:589132 errors:0 dropped:0 overruns:0 frame:0
TX packets:292849 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:864633856 (824.5 MiB) TX bytes:19627138 (18.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:275 errors:0 dropped:0 overruns:0 frame:0
TX packets:275 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:121617 (118.7 KiB) TX bytes:121617 (118.7 KiB)
netstat -l
以下是来自访客的输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:8008 *:* LISTEN
tcp 0 0 *:8010 *:* LISTEN
tcp 0 0 *:8011 *:* LISTEN
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:intu-ec-svcdisc *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 election-t1,:ipp *:* LISTEN
tcp 0 0 *:https *:* LISTEN
tcp 0 0 *:8030 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
udp 0 0 *:ipp *:*
udp 0 0 192.168.123.70:ntp *:*
udp 0 0 election-t1,:ntp *:*
udp 0 0 *:ntp *:*
udp 0 0 *:ntp *:*
任何关于可能原因以及需要进一步查找哪些信息的建议都将不胜感激。我没有可以解释这种行为的心理模型。
附录:重新启动客户机上的 xinetd 服务并停止主机上的 Windows 防火墙 - 完全没有效果。
附录 2:输出sudo iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答案1
这有点难以说(我应该说发布输出sudo iptables -L -n -v
,这样我们才能看到接口说明符;它可能lo
在似乎接受所有内容的规则上),但看起来客户机上的防火墙正在阻止连接,因为您唯一明显相关的接受是state NEW tcp dpt:22
(允许新的 SSH 连接;现有的 TCP 连接由第一条规则处理)。
尝试执行sudo iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
并重试来自主机的连接;这应该允许您通过 HTTP 进行连接。(将其放在规则5
之前REJECT
)如果有效,您需要研究如何正确允许在 telnet(23/tcp)、http(80/tcp)和可能的 https(443/tcp)端口上连接到主机。(可能有 CentOS 方法,但我对 CentOS 并不熟悉。)
然而,除非这是严格为了测试(即使这样我还是会怀疑),请重新考虑是否允许 telnet 访问。Telnet 未加密且完全不安全;任何在路径上拥有数据包嗅探器的人都可以监视所有流量,包括纯文本用户名和密码。Telnet 的历史可以追溯到 1969 年当时互联网还是一个非常不同的地方。考虑只允许 SSH,除非您有某些特定应用程序需要 telnet。
我还注意到,在 INPUT 链的末尾有一个 REJECT 规则,后面跟着一个 ACCEPT 策略。除非您有特殊原因要这样设置,否则设置默认拒绝操作的正常方法是简单地在链上设置策略(sudo iptables -P INPUT REJECT
应该这样做);那么您不需要明确的拒绝规则。
答案2
如果怀疑防火墙阻止,您可以尝试一些 VMware 测试我的端口被阻塞
您还可以输入自己的 TCP 和 UDP 端口列表。