有家庭网络:192.168.1.0/24
,默认网关192.168.1.1
(DHCP)
有一个在主机上运行的 Web 服务器,我们称该主机为“服务器”。
有多个设备通过 wifi(客户端)连接到路由器。
问题:当服务器通过 wifi 连接网络时,客户端无法连接到服务器。但当服务器通过以太网连接时,客户端可以连接到服务器。
“无法连接”的意思是:
http ://192.168.1.15/myservice
- “糟糕!Google Chrome 无法连接到 192.168.1.15”telnet/ping-
192.168.1.15
“目标主机无法访问”
服务器:Ubuntu 12.04 x86_64(内核 3.8.0-35-generic)
# ufw 状态
Status: inactive
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
服务器以太网网络配置
# ifconfig eth2
inet addr:192.168.1.14 Bcast:192.168.1.255 Mask:255.255.255.0
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
服务器wifi网络配置
# ifconfig eth3
inet addr:192.168.1.15 Bcast:192.168.1.255 Mask:255.255.255.0
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth3
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth3
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
JIC,我能够从服务器连接到我的 wifi 接口(但可能只是通过环回接口连接)。
什么问题?
答案1
虽然我认为所有已经提供的答案都是不错的猜测,但我认为这里有两种可能性。要么 Daniel B. 的“AP 隔离”想法是正确的,要么 arp 存在问题。
我无法告诉你如何检查路由器的“AP 隔离”设置,因为我确信这在很大程度上取决于你的特定路由器中是否存在该功能以及你的路由器提供什么样的 UI。由于这个问题已经很老了,我想我也不会得到答复,但如果 OP 确实回复了,我愿意研究它并提供如何检查/修复的说明。
我可以告诉你如何检查 arp 是否存在问题。如果你正在运行 Windows 客户端,请启动管理命令提示符。在 Windows 10 中,单击“开始”,键入“cmd”,然后右键单击命令提示符并在上下文菜单中选择“以管理员身份运行”。在命令提示符下,你可以键入“arp -a”;
C:\Windows\system32>arp -a 192.168.1.15
Interface: 192.168.0.123 --- 0x13
Internet Address Physical Address Type
192.168.1.15 00-50-56-3e-ce-3e dynamic
确保列出的 MAC 地址与无线网卡的 MAC 地址匹配。如果不匹配,您可以尝试清除 arp 缓存...
C:\Windows\system32>arp /d 192.168.1.15
尝试再次从客户端 ping 服务器地址 192.168.1.15,然后再次检查 arp 缓存,看看它是否获取了服务器上无线网卡的正确 MAC 地址。如果没有,那么您可能需要更改无线路由器上的某些设置,同样,如果没有更多信息,我无法提供太多帮助。
答案2
您的服务器如何获取其 IP 地址?
通常,DHCP 会为不同的接口分配不同的 IP 地址,尽管相关的 NIC 可能属于同一台 PC。
事实上,DHCP 服务器如何知道两个不同的网卡属于同一台 PC?DHCP 服务器看到的只是两个网卡的 MAC 地址,而它们是不同的。因此,它分配不同的 IP 地址。
作为测试,尝试
http://192.168.1.15/myservice
使用,而不是15,即通过 wifi 连接时 Web 服务器的 IP 地址。我敢打赌它一定会起作用。
到目前为止,最简单的解决方案是让服务器始终通过同一个 NIC 卡进行连接。第二个最简单的解决方案是启用地址预订获取 Web 服务器以太网卡的 MAC 地址,并在通过 wifi 连接到 Web 服务器时将相同的地址欺骗到 Web 服务器的无线网卡上。
如果你对这个词感到困惑欺骗,意思是屏蔽无线网卡的真实 MAC 地址,使其看起来像是有不同的 MAC 地址。所有操作系统中都有可以执行此操作的程序。
答案3
Wi-Fi 接口可能在系统服务启动后出现,而以太网连接在服务启动之前出现。
如果您的 Web 服务器明确绑定到 Wi-Fi 地址并在 Wi-Fi 启动之前启动,那么它可能会尝试打开监听端口,失败,并且完全忘记该 IP 地址 - 这意味着之后没有连接。
请记住,Wi-Fi 必须先通过路由器进行身份验证,然后才能使用(包括所有系统服务)。如果您在系统启动后手动执行此操作,则很可疑。
答案4
老问题已经老了,但仍然...我注意到没有人提到 Web 服务器可能绑定到特定 IP 地址,尽管显示的无法连接错误是在 192.168.1.15,而 eth2 明确配置为 192.168.1.14,eth3 为 192.168.1.15。在这种情况下,应该检查他们的 Web 服务器是否绑定到正确的 IP 或设置为使用任何可用的 IP。