- PVSM.RU - https://www.pvsm.ru -
Как-тодля нужд учебы понадобилось мне настроить статический ip на виртуалке Linux. «No problemo» — подумала я, уже привыкшая решать все проблемы с помощью гугла, мата и смекалки.
Интернет полон инструкций о том, как настроить статический ip на CentOS 7 (да, в рамках задания мне пришлось использовать конкретно этот дистрибутив, хоть он и вышел из моды) и я, не чуя подвоха, открыла nmtui и отредактировала нужные поля в соединении в точности, как указано в инструкции:
Возможно, опытные пользователи уже на этом шаге поняли, что пошло не так, но я-то новичок и еще не познала всех прелестей Linux, развернутого на виртуалке.
Сохранив установленные параметры, я вышла из nmtui, выполнила команду systemctl restart network и проверила пинги.
Сеть пропала. Не пинговалось вообще ничего и никак. Я полезла в гугл за вопросом «как чинить», но нашла комментарии в духе «надо проверить шлюз». Хорошо, шлюз, а как?

В тот момент мне, измотанной борьбой с соединением, не пришло в голову ничего лучше, чем откатить все изменения и через команду ip route show посмотреть, какой шлюз поставит NetworkManager при автоматической настройке. И бинго! - там был указан совершенно другой шлюз
Сейчас, уже в спокойном состоянии, во время написания этой статьи я поняла, что в откате настроек соединения не было необходимости, но тогда мной овладела паника.
В тот момент я узнала адрес шлюза, радостно воткнула его в nmtui и снова перезапустила сеть:
Теперь команда ping 8.8.8.8 выполнялась и пинг шел. Но при попытке пингануть что-то дальше 8.8.8.8, например google.com [1], вылазила ошибка «ping: google.com [1]: Имя или служба не известны».
Смешанные чувства: с одной стороны, теперь работает хоть что-то, с другой – соединение до сих пор не работает.

Далее были много часов отладки и проверки всех возможных проблем, была подключена нейросеть:
Я проверила содержимое /etc/resolv.conf с помощью
cat /etc/resolv.conf, но так как там был прописан nameserver 8.8.8.8 – на этом я успокоилась и подумала, что все хорошо (как же сильно я ошибалась…)
Проверила, какие DNS использует система с помощью
systemd-resolve --status 2>/dev/null || nmcli dev show enp0s3 | grep DNS – и в выводе был прописанный мною 8.8.8.8
Проверила настройки хоста
cat /etc/hosts - чисто
grep hosts /etc/nsswitch.conf – все верно
sudo iptables -L -n | grep 53 – порт 53 не заблокирован
Попинговала 8.8.8.8 (пингуется, зараза) и google (Имя или служба не известны)
При проверке DNS ручным запросом через
nslookup google.com [1] 8.8.8.8 - ошибка
dig @8.8.8.8 google.com [1] +short - ошибка
Слазила в firewalld (так делать не надо, вот вообще, только в самом крайнем случае). Сначала попыталась добавить разрешение для DNS
sudo firewall-cmd --state
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload
Потом просто отключила
sudo systemctl stop firewalld
Перезагрузила соединение, после чего еще раз попробовала попинговать google. Не пингуется.
Отключила автоматический DNS от DHCP с помощью nmcli: sudo nmcli connection modify enp0s3 ipv4.ignore-auto-dns yes и перезагрузила соединение sudo nmcli connection down enp0s3 && sudo nmcli connection up enp0s3
Снова попробовала попинговать гугл. Не пингуется.
На всякий случай добавила адресу все разрешения в iptables.
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
sudo iptables -A OUTPUT -s 192.168.1.100 -j ACCEPT
И снова перезагрузка соединения и пинг гугл.
Не пингуется.
Итог: пинг 8.8.8.8 есть, а гугл все еще не пингуется. Круг замкнулся.
Я поставила, а затем удалила system-resolved (использовав рабочее соединение, которое настроилось автоматически), обновила resolv.conf, снова и снова обновляла параметры соединения и перезагружала его. Я понимала, что проблема в почему-то неработающем DNS, ��о не могла ее локализовать.
Смеркалось... На часах пробила полночь.
В этот момент я сдалась и решив, что утро вечера мудренее, отправилась спать, намереваясь утром сдаться и отправиться к знакомому девопсу с покаянной.
Утро действительно оказалось мудренее вечера – в голове крутилось несколько фактов: команда nmcli dev show показывала полные настройки соединения, DNS не работает, но рабочий DNS наверно можно посмотреть в выводе этой команды, когда соединение настроено автоматически.
Уже при написании текста я попыталась нагуглить команду, которая покажет рабочие адреса DNS в Linux и не смогла. Можно посмотреть актуальные, настроенные в соединении. Если кто-то знает – буду очень признательна за апдейт.
Теория была незамедлительно проверена, были найдены расхождения:
Очевидно, что в работающей версии добавился указанный домен, а также указаны совершенно другие DNS-адреса. После их добавления к настройкам статического IP сеть заработала.
Итоговый путь от проблемы к решению занял 3 дня, отнял некоторое количество нервных клеток (теперь они спокойны навеки) и принес чувство глубокого удовлетворения от решенной проблемы.
Ну а у меня появился повод поделиться информацией с теми, кому она может оказаться полезна. Буду рада, если кому-то мой опыт сбережет нервы, силы и время.
Автор: AnnLuciole
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/440790
Ссылки в тексте:
[1] google.com: http://google.com
[2] Источник: https://habr.com/ru/articles/982636/?utm_source=habrahabr&utm_medium=rss&utm_campaign=982636
Нажмите здесь для печати.