Представьте: ваш 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-роутера или конкретных настроек.