本地 Ubuntu 网络服务器在与网关失去连接后响应缓慢

本地 Ubuntu 网络服务器在与网关失去连接后响应缓慢

我正在运行本地 Ubuntu 14.04 LTS(apache 2.4.7)网络服务器,该服务器在 /etc/network/interfaces 文件中配置了静态 ip,如下所示:

auto lo
iface lo inet loopback
auto em1
iface em1 inet static
address 192.168.2.230
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
gateway 192.168.2.254

该网络服务器通过网络交换机连接到另外两台本地 PC(客户端)。该网络交换机又连接到路由器(192.168.2.254)。

此设置在正常情况下运行良好,我可以从两台本地计算机毫无问题地连接到 Web 服务器。现在,我正在测试如果路由器离线,通过拔掉从网络交换机到路由器的网线,两个客户端是否仍可以访问 Web 服务器(以模拟路由器崩溃/重置或无法访问外部互联网)。

问题就在这里,从客户端计算机向 Web 服务器发出的每个请求现在都会延迟 10 秒(即使是静态 html 页面)。

如果我从 /etc/network/interfaces 文件(在服务器上)中删除网关条目并重新加载没有网关的网络接口,一切又恢复正常。因此,看起来服务器正在尝试连接网关 10 秒钟,然后决定它也可以直接连接客户端 PC。顺便说一下,客户端和服务器位于同一子网中,具有相同的网络掩码 255.255.255.0。

我也尝试绕过交换机,直接将其中一个客户端连接到服务器,同样的问题仍然存在,它可以工作,但有 10 秒的延迟。从客户端到服务器以及从服务器到客户端的 ping 操作都没有出现任何问题(不到 1 毫秒)。

route -n 使用网关设置输出以下内容:

Destination   Gateway        Genmask       Flags  Metric   Ref    Use  Iface
0.0.0.0       192.168.2.254  0.0.0.0       UG     0        0      0    em1
192.168.2.0   0.0.0.0        255.255.255.0 U      0        0      0    em1

我花了整整 12 个小时尝试设置静态路由、摆弄网络管理器、更改度量值等等,但毫无效果。目前我甚至完全删除了网络管理器,以排除可能存在冲突的路由和配置。

我只想让客户端能够以相同的速度访问 Web 服务器,无论网关是否存在。不设置网关可以在本地修复所有问题,但显然我无法再远程访问服务器。

希望我的问题和设置清楚,我真的很期待这个问题得到解决,并希望它是显而易见的。

编辑:服务器上的环回接口似乎不受影响,网站在具有有效网关的服务器上的加载速度与没有有效网关的一样快。

答案1

我终于设法让一切正常运转了!我将两个客户端 IP 地址添加到 /etc/hosts 文件(Ubuntu 服务器的),如下所示:

192.168.2.228       192.168.2.228
192.168.2.229       192.168.2.229

这完全解决了网络接口尝试使用路由器解析 IP 地址的 10 秒延迟问题,而是直接连接到客户端(应该如此)。

虽然这解决了问题,但我认为仍然存在问题,因为它应该直接连接到本地计算机,而不是尝试以某种方式用路由器解析“dns”(对吗?)。我绝不是网络或 ubuntu 专家(我更像是 Web 开发人员),所以也许有人可以澄清这里真正的问题是什么(也许提供更好的解决方案?)。

相关内容