Медленный ответ локального веб-сервера Ubuntu после потери подключения к шлюзу
Я использую локальный веб-сервер Ubuntu 14.04 LTS (apache 2.4.7), настроенный со статическим ip в файле /etc/network/interfaces следующим образом:
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
Этот веб-сервер подключен к двум другим локальным компьютерам (клиентам) через сетевой коммутатор. Этот сетевой коммутатор, в свою очередь, подключен к маршрутизатору (192.168.2.254).
Эта настройка прекрасно работает в нормальных условиях, и я могу без проблем подключиться к веб-серверу с двух локальных компьютеров. Теперь я проверял, могут ли два клиента по-прежнему подключаться к веб-серверу, если маршрутизатор должен отключиться, отсоединив сетевой кабель, идущий от сетевого коммутатора к маршрутизатору (для имитации сбоя / сброса маршрутизатора или доступа к Интернету снаружи). быть недоступным).
Здесь возникает проблема: каждый запрос от клиентского компьютера к веб-серверу теперь задерживается даже на 10 секунд (даже статические html-страницы).
Если я удаляю запись шлюза из файла /etc/network/interfaces (на сервере) и перезагружаю сетевой интерфейс без шлюза, все снова в порядке. Таким образом, похоже, что сервер пытается достичь шлюза в течение 10 секунд, а затем решает, что он также может напрямую связаться с клиентским ПК. Между прочим, клиенты и сервер находятся в одной подсети и имеют одинаковую маску 255.255.255.0.
Я также попытался обойти коммутатор, напрямую подключив одного из клиентов к серверу, та же проблема сохраняется, но работает с 10-секундной задержкой. Пинг с клиента на сервер и с сервера на клиент проходит без проблем (менее 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 часов, пытаясь настроить статические маршруты, связываться с сетевым менеджером и изменять метрику, а что нет, но безрезультатно. На данный момент я даже полностью удалил Network-Manager, чтобы исключить возможные конфликтующие маршруты и конфигурации.
Все, что я хочу, - это чтобы клиенты могли подключаться к веб-серверу с одинаковой скоростью независимо от того, был ли там шлюз или нет. Отсутствие настройки шлюза исправляет все локально, но, очевидно, я больше не могу получить удаленный доступ к серверу.
Надеюсь, моя проблема и настройки ясны, я ДЕЙСТВИТЕЛЬНО с нетерпением жду, чтобы это исправить, и надеюсь, что это что-то очевидное.
РЕДАКТИРОВАТЬ: петлевой интерфейс на сервере, кажется, не зависит, кстати, сайт загружается так же быстро на самом сервере с действующим шлюзом, как и без него.
1 ответ
Мне наконец-то удалось заставить все работать как надо (!). Я добавил два IP-адреса клиента в файл /etc/hosts (сервера Ubuntu) следующим образом:
192.168.2.228 192.168.2.228
192.168.2.229 192.168.2.229
Это полностью решает 10-секундную задержку сетевого интерфейса, пытающегося разрешить IP-адрес с маршрутизатором, и вместо этого подключиться к клиенту напрямую (как и должно быть).
Хотя это решает проблему, я думаю, что где-то все еще есть проблема, так как она действительно должна предпочесть подключаться к локальным компьютерам напрямую, а не пытаться разрешить "днс" с маршрутизатором, как-то (верно?). Я ни в коем случае не эксперт по сетевым технологиям или Ubuntu (я больше похож на веб-разработчика), так что, возможно, кто-то мог бы прояснить, в чем здесь реальная проблема (и, возможно, предложить лучшее решение?).