Почему ifconfig показывает другой IP-адрес

В Ubuntu 18.04 используется NetworkManager. Вам нужно удалить файл resolv.conf и позволить NetworkManager сгенерировать его для вас.

Чтобы удалить файл в терминале, введите sudo rm -f /etc/resolv.conf; это удалит файл для вас.

Перезагрузите систему, и NetworkManager создаст для вас файл resolv.conf.

1
06.10.2021, 10:52
1 ответ

Поскольку в Linux ifconfigиспользуется устаревший API ядра (ioctl -на основе ), который был заменен более 20 лет назад (и со временем улучшен )другим API ядра на основе on сообщения сокета netlink .Среди других ограничений старого API:

  • может обрабатывать только один IPv4-адрес (, хотя он может обрабатывать несколько IPv6-адресов ). Даже удаление этого адреса выполняется с помощью кладжа :, устанавливающего адрес как 0.0.0.0
  • .
  • не будет одновременно предоставлять сетевую маску адреса при его установке. Таким образом, для назначения адреса обычно требуется два системных вызова :, один для (хостовой части )адреса, один для исправления сетевой маски
  • .
  • обработка более чем одного IPv4-адреса также выполняется с помощью кладжа :поэтому -интерфейсы псевдонимов (действительно реализованы с меткой на адресе, а не в виде отдельного интерфейса ), которые видны вот так только по ifconfig, не по другим частям (маршрут, брандмауэр... ).
  • как показывает OP, дополнительные IP-адреса без метки (, настроенные с помощью более нового API ), вообще не будут видны ifconfig.

Очевидно, что если нет адресной метки (, которая при правильном названии будет отображаться как псевдоним интерфейса с помощью ifconfig), ваша сеть была настроена с использованием более нового API на основе netlink -. Таким образом, вы можете даже сэкономить встроенное пространство, придерживаясь более новых инструментов и полностью удаляя ifconfig.

ip address

отобразит все адреса, назначенные на всех интерфейсах, включая несколько адресов IPv4, если их больше одного.

Можно повторно реализовать ifconfigс помощью более нового API (здесь есть по крайней мере обычный пользователь UL SE, который сделал это ), но похоже, что обновление этой команды (, например :для совместимость с другими *NIX )вместо (медленная )замена его более новыми инструментами не интересовала большинство разработчиков Linux или специалистов по сопровождению дистрибутива.

Таким образом, в Linux вам следует рассмотреть возможность использованияip linkиip addressвместо ifconfig. Аналогично, ip routeвместо route,bridge( в дополнение кip link)для замены brctl, а затем другие подкомандыipдля замены различных других команд (для VLAN, туннелей, связующих интерфейсов... ).

Теперь о том, почему адресов больше одного. Вероятная причина в том, что устройство использует Avahi / Zeroconf (, эквивалентную реализации Apple Bonjour ), для связи в локальной сети и анонсирования функций. В то же время он, вероятно, настроен с использованием DHCP для стандартной связи (, в том числе с Интернетом ). Zeroconf использует (не -маршрутизируемый)IPv4LL адрес, отдельный от обычного адреса, полученного с помощью DHCP.

4
06.10.2021, 11:39

Теги

Похожие вопросы