Внезапная недоступность устройства в сети: причины и решение

Представьте: ваш HTPC (домашний кинотеатр) вдруг перестал видеть ноутбук, а телефон не может к нему подключиться – при этом интернет и связь с другими устройствами работают. Такая проблема часто возникает после установки Docker или подобных инструментов, и сейчас я подробно объясню, как её решить.

Шаг 1: Проверьте таблицу ARP и MAC-адреса

Начнём с базового – ARP-таблицы (это что-то вроде «контактного списка» устройств в локальной сети). На ноутбуке, который не видит HTPC, выполните команду:

arp -a

В выводе обратите внимание на запись для HTPC (192.168.1.20). Если вместо MAC-адреса стоит (incomplete), это значит, что устройство не смогло определить физический адрес.

Что делать:

1. На HTPC перезагрузите сетевой интерфейс:

sudo ip link set wlo1 down && sudo ip link set wlo1 up

2. На ноутбуке очистите ARP-кэш:

sudo arp -d 192.168.1.20

После этого попробуйте снова пинговать устройство. Если проблема осталась, идём дальше.

Шаг 2: Анализ правил iptables и Docker

Установка Docker часто меняет сетевые настройки. В вашем случае в цепочке FORWARD политика установлена на DROP, а правила DOCKER-ISOLATION могут блокировать трафик между подсетями.

Посмотрите на текущие правила:

sudo iptables -L -v

Особое внимание – цепочкам DOCKER-USER и DOCKER-ISOLATION. Если там есть правила, ограничивающие взаимодействие между интерфейсами (например, wlo1 и docker0), их нужно скорректировать.

Пример исправления:

Разрешите трафик между основным интерфейсом (wlo1) и Docker-сетями:

sudo iptables -I DOCKER-USER -i wlo1 -o docker0 -j ACCEPT  
sudo iptables -I DOCKER-USER -i docker0 -o wlo1 -j ACCEPT

Кстати, если не хотите возиться с правилами вручную, можно временно остановить Docker:

sudo systemctl stop docker

…и проверить, восстановилась ли связь.

Шаг 3: Проверка сетевых мостов и маршрутов

Docker создаёт виртуальные мосты (например, docker0 или br-a221f258ed7f), которые могут конфликтовать с основным сетевым интерфейсом. Выполните:

ip addr show

Убедитесь, что у HTPC основной интерфейс (wlo1) имеет корректный IP (192.168.1.20), а Docker-мосты находятся в других подсетях (172.17.0.0/16).

Возможная ошибка: Если Docker случайно получил адрес из основной подсети (192.168.1.0/24), это приведёт к конфликту. Исправьте конфиг Docker в файле /etc/docker/daemon.json:

{
  "bip": "172.17.0.1/16"
}

Дополнительные нюансы

1. Проверьте MTU (Maximum Transmission Unit): Слишком большое значение MTU на одном из устройств может обрывать пакеты. На HTPC выполните:

ping -s 1472 -M do 192.168.1.90

Если пакеты не проходят, уменьшайте число после -s до успешного результата.

2. Обновите драйверы Wi-Fi: Особенно если используете нестандартные адаптеры (например, с чипами Realtek).

Итог: В 90% случаев проблема решается сбросом ARP – кэша и настройкой правил iptables. Если же вы недавно устанавливали Docker, проверьте его конфигурацию – иногда он «перехватывает» сетевые интерфейсы без предупреждения. Не забудьте перезагрузить устройства после внесения изменений – это как «волшебный пендель» для сети.

P.S. Если вдруг после всех манипуляций ноутбук всё равно не видит HTPC, попробуйте подключить устройства через Ethernet-кабель – это поможет локализовать проблему до Wi-Fi-роутера или конкретных настроек.

Добавить комментарий

Все поля обязательны к заполнению. Ваш адрес email не будет виден никому.

Новое
Интересное