Как-то для нужд учебы понадобилось мне настроить статический 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, вылазила ошибка «ping: google.com: Имя или служба не известны».

Смешанные чувства: с одной стороны, теперь работает хоть что-то, с другой – соединение до сих пор не работает.

Далее были много часов отладки и проверки всех возможных проблем, была подключена нейросеть:

  • Я проверила содержимое /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 8.8.8.8 - ошибка

    dig @8.8.8.8 google.com +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 и не смогла. Можно посмотреть актуальные, настроенные в соединении. Если кто-то знает – буду очень признательна за апдейт.

Теория была незамедлительно проверена, были найдены расхождения:

Рабочие настройки (домен был замазан)
Рабочие настройки (домен был замазан)
Настройки при самостоятельной установке статического ip
Настройки при самостоятельной установке статического ip

Очевидно, что в работающей версии добавился указанный домен, а также указаны совершенно другие DNS-адреса. После их добавления к настройкам статического IP сеть заработала.

Итоговый путь от проблемы к решению занял 3 дня, отнял некоторое количество нервных клеток (теперь они спокойны навеки) и принес чувство глубокого удовлетворения от решенной проблемы.

Ну а у меня появился повод поделиться информацией с теми, кому она может оказаться полезна. Буду рада, если кому-то мой опыт сбережет нервы, силы и время.

Комментарии (21)


  1. Viktor-T
    03.01.2026 18:41

    Непонятны обстоятельства и причины такой ситуации.

    Это где произошло - дома, в аудитории, в общежитии, на работе?

    Почему не проходили DNS-запросы к 8.8.8.8?

    Что за адреса DNS назначались по DHCP?

    Что за виртуализация использовалась?


    1. AnnLuciole Автор
      03.01.2026 18:41

      Использовался VirtualBox, сеть через домашний роутер, 8.8.8.8 не пинговалось потому что адрес шлюза стоял неверный. Видимо стоит подкорректировать, раз вы заметили.

      Адреса, назначенные по DHCP, видны на скрине с автоматической настройкой.


      1. Viktor-T
        03.01.2026 18:41

        Адреса видны, да. Поэтому я и спросил. Имею ввиду - кто их выдал и почему они такие?

        Так 8.8.8.8 стал пинговаться после правки шлюза. Почему DNS-запросы к нему не проходили?


        1. AnnLuciole Автор
          03.01.2026 18:41

          Судя по всему, автоматическая настройка от NetworkManager. Я новичок в этой теме, так что пока изучаю, что и о чем.


  1. JoshMil
    03.01.2026 18:41

    Один из недостатков линуксов - тьма способов решения одной и той же задачи, и их хаотичное применение в разных версиях из поставки. в разных вариантах кастомной установки. С этим ничего не поделаешь. Я сам регулярно перезадаю вопрос нейросети - как узнать, чем управляется сетевая подсистема в ? и каждый раз забываю, методом тыка нахожу и тп. Хрен знает что с этим делать. только помнить, имхо - надежнее и быстрее метода нет.

    И это не единственная проблема. Скажем в поставке современных линуксов нет сетевых утилит. В пакетах они находятся не под своими названиями а под странными, да еще и в нескольких вариантах упаковки. Удачно что в убунту. например, на эту тему есть хелпер. Он экономит много времени. Но вообщето это дичь все. И это не единственный варик, на самом деле. Ничего не поделаешь - философия линукс располагает к таким проблемам.

    Это из разряда проблем с Windows когда иной раз абсолютно не понятно как получить обратную связь от сервиса. Вроде журналы поддерживаются. Но почемуто сервис не имеет режима отладки. Или скудно пишет, или вообще не пишет ничего специального.
    Я все время вспоминаю свою бывшую. когда ее спрашиваешь о чем нибудь. мол - почему? Она так пожимает плечами, и говорит "ну... так..".


  1. askharitonov
    03.01.2026 18:41

    Правильно ли я понимаю, что всего лишь был выбран IP-адрес не из той сети? И надо было не 192.168.1.100 ставить, а, допустим, 10.0.2.100?


    1. kvazimoda24
      03.01.2026 18:41

      Судя по всему, да. Автор вбил какие-то выдуманные настройки сети, ничего не заработало, после чего автор три дня бился с этим.

      Не уверен, что всё это достойно статьи на Хабре...


      1. gotch
        03.01.2026 18:41

        Пожалуй, здесь удивить может разве что работоспособность связки ip 192.168.1.100/24 и шлюза 10.0.0.2 (в отсутствие маршрута до него). Это волшебство видимо обеспечивается Nat в хостовой ОС.


      1. askharitonov
        03.01.2026 18:41

        Вообще говоря, иногда возишься с проблемой, копаешь глубоко, а всего лишь ошибся в написании опции или что-то другое элементарное, поэтому может статья имеет смысл, чтобы проиллюстрировать поиск решения в некоторых ситуациях.


    1. AnnLuciole Автор
      03.01.2026 18:41

      Это была лабораторная работа с чётко заданным необходимым ip.


      1. outlingo
        03.01.2026 18:41

        У вас был целый набор путей:

        1. добавить в гостевую ОС виртуальный интерфейс - например, бридж - с заданным адресом

        2. добавить этот адрес как дополнительный на существующий интерфейс (правда получить рабочее сочетание DHCP + static на одном интерфейсе с помощью "удобных инструментов администратора" это задача со звездочкой)

        3. добавить в виртуальную машину второй сетевой адаптер привязанный к host-only сети виртуалбокса и сконфигурировать там статический адрес.

        Но, с упорством, достойным лучшего применения, вы три дня методом эникейского тыка пытались дойти до тайного знания (и, похоже, не поняли вообще ничего - потому что не разделили в голове настройки сети и настройки  DNS). Да-да, ping 8.8.8.8 это проверка работоспособности сети, а dig/nslookup это проверка DNS. А люимый многими ping google.com может споткнуться как в DNS так и в сети.

        Сеть у вас заработала после указания маршрутизатора по умолчанию - строки IP4.ROUTE[2] и IP4.ROUTE[3] как на последней картинке как раз и показывают этот статус: ROUTE[3] это указанный вами default gateway, а ROUTE[2] это работа NetworkManager который "понимает базу": поскольку адрес default gateway не принадлежит сети которая назначена интерфейсу, то без указания явного маршрута на default gateway ничего работать не будет. И поэтому NM добавляет маршрут сразу.

        DNS вы не починили потому, что он не был сломан (или сломан не вами) - просто администратор вашей сети внезапно(ц) зафильтровал исходящий DNS-трафик. Поэтому использовать внутренние DNS - работает, а внешние - нет.


  1. checkpoint
    03.01.2026 18:41

    А я смотрю, Linux хорошеет с каждым днём. ;)

    PS: На рутерах и серверах надо использовать FreeBSD.


    1. askharitonov
      03.01.2026 18:41

      Да всё в порядке с Linux, ошибиться при настройке можно в любой системе.


      1. DikSoft
        03.01.2026 18:41

        Да всё в порядке с Linux

        Нет. Далеко не всё в порядке. Нет стандартизации в настройке базовой функциональности.

        Удача, если открыв /etc/network/interfaces найдёшь там заботливо оставленную фразу типа "можешь даже не пытаться тут что-то редактировать, настройки переехали туда-то и туда-то", чаще или фразы нет, или файла. И сиди бегай по мануалам, куда засунули и чем теперь считается "правильно" управлять сетевыми интерфейсами и службами. И это даже не в разных дистрибутивах, а просто при обновлении с одной стабильной версии ОС на следующую стабильную версию. При этом где-то 255.255.255.0 принимается, а где-то только /24. Расширения, имена, внутренние форматы файлов - запомнить нереально. . .conf .cfg .config .yaml .toml.Только каждый раз читать родные мануалы, написанные, видимо, в расчете на тех, кому это и так очевидно... Потому что самое главное или не упомянуто, или написано внизу "мелким шрифтом" за десятой ссылкой.

        Про разнообразие, куда и в каком формате вписать IP DNS серверов, тоже можно вспомнить. Про файрволл по-умолчанию, ещё одна отдельная история.

        У меня в инфраструктуре есть некоторое количество легаси бизнес систем, имеющих в своём составе VM на двух десятках разных версий Linux, каждый раз элементарная задача превращается в короткий квест с поиском документации.

        В FreeBSD же, которая тоже имеется, с этим всё стабильно и понятно.

        ошибиться при настройке можно в любой системе.

        Согласен, но к собственным ошибкам тут добавляется фактор отсутствия стандартизации, когда начинаешь сомневаться, то ли ты опечатался, то ли вообще не там что-то менял.


        1. askharitonov
          03.01.2026 18:41

          Если сравнивать зоопарк, то с зоопарком, то есть, все Linux со всеми *BSD. Если сравнивать одну систему, то с одной системой. Допустим, Debian GNU/Linux и FreeBSD.

          Ну и настраивать в основном нужно не саму систему, а тот или иной софт под неё, а он может быть одинаковым и для Linux, и для *BSD, потому разница в настройках разных приложений будет и там, и там.


          1. DikSoft
            03.01.2026 18:41

            Ну и настраивать в основном нужно не саму систему, а тот или иной софт под неё, ..

            В моём случае наиболее часто встречающаяся задача - миграция сервисов в другие сегменты сети. При этом сначала обеспечивается сетевая связность хостов, а уже потом при необходимости тюнится софт. За который отвечает подразделение бизнес приложений. Отсюда и потребность разбираться с "зоопарком".

             все Linux со всеми *BSD

            Я был неточен: BSD семейство у нас представлено не только в виде FreeBSD, в основном это сетевые и около сетевые appliances на базе разных дистрибутивов NetBSD, FreeBSD, OpenBSD .. . Так что сравнивал. В BSD порядка больше.


  1. TIEugene
    03.01.2026 18:41

    Снесите Вы этот NetworkManager и не мучайтесь. systemd-networkd проще и его предостаточно.


  1. rumanzo
    03.01.2026 18:41

    Centos 7 не вышел из моды, он EOL. Больше 10 лет старичку, отпустите и забудте


  1. alfos
    03.01.2026 18:41

    Изучите разницу в VirtualBox между сетями "Виртуальная сеть" и "Сеть NAT".


  1. ispokalin
    03.01.2026 18:41

    Спасибо, что поделились своим опытом траблшутинга, было интересно почитать. Однако, появился вопрос.
    Я так понимаю, что в virtualbox стоял "Тип подключения: NAT", а что если поставить "Сетевой мост"? Будут ли такие танцы вокруг DNS? :)


    1. AnnLuciole Автор
      03.01.2026 18:41

      Вопрос интересный, тип подключения в самом VirtualBox я не меняла - так как оно до меня работало нормально. Надо будет попробовать и посмотреть.