имя хоста -i против имени хоста -I в linux - PullRequest
0 голосов
/ 10 марта 2020

Так что я посмотрел в Google о разнице между выводом для имя-хоста -i и имя-хоста -I , но не смог получить ничего существенного. Вывод имени хоста -i : 127.0.1.1 Вывод имени хоста -I : 192.168.X.X. Все, что я мог получить, это: -i: эта опция используется для получения IP (сетевых) адресов. Эта опция работает, только если имя хоста разрешаемо. -I: эта опция используется для получения всех IP (сетевых) адресов. Опция не зависит от разрешимости имени хоста. Было бы замечательно, если бы кто-то мог прояснить это для меня.

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Если ваше имя хоста установлено на myhost, hostname -i пытается разрешить myhost. У вас, вероятно, есть такая строка в вашем /etc/hosts

127.0.0.1       myhost

Это разрешит myhost как 127.0.0.1.

С hostname -I вы получите адреса вашего сетевого интерфейса ( с) видимо без петлевых адресов. Эти адреса могут быть назначены DHCP.

В вашем случае с выходом 192.168.X.X у вас есть только один интерфейс, связанный только с IPv4-адресом.

Моя система Ubuntu 19.10 отображает один адрес IPv4 и один адрес IPv6 при подключении только к WiFi, или два адреса IPv4 и IPv6 каждый при подключении к WiFi и Ethe rnet.

0 голосов
/ 10 марта 2020

Из информации в вашем вопросе я делаю вывод, что ваш вопрос касается команды linux hostname. Это важно, поскольку BSD-вариант этой команды (например, найденный в системе macOS) имеет другой набор аргументов.

Страница man для linux hostname команда на самом деле очень специфична c относительно разница, и вы уже опубликовали отрывок из нее:

  -i, --ip-address
         Display  the  network address(es) of the host name. Note that this works only if the host name can be resolved. Avoid
         using this option; use hostname --all-ip-addresses instead.
  -I, --all-ip-addresses
         Display all network addresses of the host. This option enumerates all configured addresses on all network interfaces.
         The  loopback interface and IPv6 link-local addresses are omitted. Contrary to option -i, this option does not depend
         on name resolution. Do not make any assumptions about the order of the output.

«Разрешаемый адрес» (аргумент -i) означает, что он разрешается через DNS. Вы можете получить аналогичные результаты, используя некоторую команду разрешения имен, например nslookup <yourhostname> или getent hosts <yourhostname>:

$ nslookup myhostname
Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:    myhostname
Address: X.X.X.X

С другой стороны, -I перебирает все сетевые интерфейсы вашего хоста и видит, как они на самом деле настроен. Это означает, что он получает IP-адрес совершенно другим способом.

...