Как узнать и настроить имя домена?
Я хочу узнать, как клиентский компьютер находит контроллер домена («В Unix-подобных системах Samba 4.x может работать в качестве контроллера домена»).
If . LDAP client wants to discover a LDAP server . for the domain example.com., it does a lookup of _ldap._tcp.example.com
Значит, перед тем, как обращаться к DNS-серверу, нужно узнать, какое у компьютера доменное имя, правильно?
$ domainname bash: domainname: command not found
#include int getdomainname(char *name, size_t len); int setdomainname(const char *name, size_t len);
в библиотеке glibc реализована функция getdomainname(), которая возвращает копию поля domainname, которую возвращает вызов uname(2).
$ uname --nodename localhost . -n, --nodename print the network node hostname
#include int uname(struct utsname *buf); . char nodename[]; /* Name within "some implementation-defined network" */ . #ifdef _GNU_SOURCE char domainname[]; /* NIS or YP domain name */ #endif $ uname --domainname uname: unrecognized option '--domainname'
Что такое NIS? Что такое YP? NIS/YP — «LDAP came to replace it»
$ ls /proc/sys/kernel/domainname /proc/sys/kernel/domainname $ file /proc/sys/kernel/domainname /proc/sys/kernel/domainname: empty # echo "linux.org.ru" > /proc/sys/kernel/domainname $ cat /proc/sys/kernel/domainname linux.org.ru
После этого команда dnsdomainname всё равно ничего не показывает, наверное она для чего-то другого?
«DNS (Internet Domain Name Server) domainname, not to be confused with the NIS (Network Information Service) or YP (Yellow Pages) domainname. These two domain names are in general different. For a detailed discussion see the hostname(1) man page.»
https://linux.die.net/man/1/hostname The complete Fully Qualified Domain Name (FQDN) of the system is returned with «hostname —fqdn»
$ hostname --fqdn localhost
В общем, предлагают прописывать hostname в файле /etc/hostname, а
FQDN прописывать в файле /etc/hosts после внешнего IP-адреса
Прописал, ничего не поменялось, что и логично.
Внутри файле /etc/hosts написано:
In the presence of the domain name service or NIS, this file may not be consulted at all; see /etc/host.conf for the resolution order.
Утилиты domainname в генте нет:
[ebuild R ] sys-apps/net-tools-2.10::gentoo USE="arp hostname ipv6 nls -nis -plipconfig (-selinux) -slattach -static" 225 KiB . $ equery files sys-apps/net-tools | grep domainname /bin/dnsdomainname /usr/share/man/de_DE/man1/dnsdomainname.1 /usr/share/man/fr_FR/man1/dnsdomainname.1 /usr/share/man/man1/dnsdomainname.1 /usr/share/man/pt_BR/man1/dnsdomainname.1
Может быть всё проще, и можно настроить получение имени домена с DHCP-сервера? Ну нет, сначала надо понять, как это имя устанавливается и извлекается. А затем уже автоматизировать эти процессы применяя программу dhcp-клиент.
В systemd есть какая-то hostnamectl, однако имя хоста, это ведь не то же самое, что FQDN? Хотя там и предлагают использовать «sequence of . labels separated by single dots that forms a valid DNS FQDN».
Ещё в systemd есть
$ sudo systemctl restart systemd-resolved $
Сделал, перезапустил, ничего не поменялось (hostname —fqdn показывает короткое имя).
Gentoo wiki [как обычно] демонстрирует низкое качество документации и обходит стороной этот вопрос.
$ sudo hostnamectl hostname shushundr.linux.org.ru $ hostname shushundr.linux.org.ru $ dnsdomainname linux.org.ru
Мне не нравится всё. Во-первых, я не понимаю, где эти настройки сохраняются и как это сделать перманентным. Во-вторых, мне не ясно, для чего нужна команда dnsdomainname и чем она отличается от domainname. Почему в gentoo нет команды domainname?
# echo "test" >/proc/sys/kernel/domainname # hostnamectl hostname shushundr.linux.org.ru # cat /proc/sys/kernel/domainname test #
UPD: я выяснил (спасибо firkax ), что всё ломает systemd. Поэтому вопрос — а как systemd должна работать?
Shushundr ★★★
11.02.23 00:21:46 MSK
Мда зачем ты такую простыню настрочил?
dnsdomainname пытается по айпи-адресу компа узнать его доменное имя (обычно — из /etc/hosts, но есть разные варианты), и вернуть его часть начиная с первой точки.
firkax ★★★★★
( 11.02.23 00:56:24 MSK )
Ответ на: комментарий от firkax 11.02.23 00:56:24 MSK
Я уже говорил, что в /etc/hosts я прописал IP-адрес и доменное имя (shushundr2.linux.org.ru). dnsdomainname выводит нечто другое.
Shushundr ★★★
( 11.02.23 00:59:59 MSK ) автор топика
Ответ на: комментарий от Shushundr 11.02.23 00:59:59 MSK
сделай ifconfig -a /// uname -n /// и покажи /etc/hosts /etc/nsswtich.conf /etc/reslv.conf
firkax ★★★★★
( 11.02.23 01:01:25 MSK )
Последнее исправление: firkax 11.02.23 01:04:09 MSK (всего исправлений: 1)
Ответ на: комментарий от firkax 11.02.23 01:01:25 MSK
# ifconfig -a . qemu0: flags=4163 mtu 1500 inet 192.168.45.140 netmask 255.255.255.0 broadcast 192.168.45.255 inet6 fe80::4ca0:7bff:faf4:d604 prefixlen 64 scopeid 0x20 ether 41:b0:7c:f4:a8:04 txqueuelen 1000 (Ethernet) RX packets 12026874 bytes 11169324884 (10.4 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7374974 bytes 1349644119 (1.2 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# grep "192.168.45.140" /etc/hosts 192.168.45.140 shushundr2.linux.org.ru localhost
# cat /etc/nsswtich.conf cat: /etc/nsswtich.conf: No such file or directory # grep -vE "(^#)|($^)" /etc/nsswitch.conf aliases: files ethers: files group: files [SUCCESS=merge] systemd gshadow: files systemd hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns netgroup: files networks: files dns passwd: files systemd protocols: files publickey: files rpc: files shadow: files [UNAVAIL=return] systemd services: files
# uname -n shushundr.linux.org.ru
Имя /etc/reslv.conf ты написал с ошибкой, да и неважен этот файл для этой задачи.
# cat /etc/resolv.conf # Generated by resolvconf .
Shushundr ★★★
( 11.02.23 01:06:02 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 01:11:12 MSK (всего исправлений: 7)
Ответ на: комментарий от Shushundr 11.02.23 01:06:02 MSK
Поставь hostname = какое_то_имя (припиши в /etc/hostname чтобы после ребута ставилось)
В hosts пропиши
192.168.45.140 имя.домен какое_то_имя
какое_то_имя может отличаться от имени в домене, но наверно лучше так не делать (путаница).
Может быть, если в /etc/hostname прописано имя уже с точками, то можно обойтись и без записи в /etc/hosts, но я не проверял.
firkax ★★★★★
( 11.02.23 01:17:51 MSK )
Ответ на: комментарий от firkax 11.02.23 01:17:51 MSK
# hostnamectl --transient set-hostname "" # cat /etc/hostname shushundr3 # grep "shushundr3" /etc/hosts 192.168.45.140 shushundr3.linux.org.ru shushundr3 # hostname shushundr3 # hostname --fqdn shushundr3
Shushundr ★★★
( 11.02.23 01:24:19 MSK ) автор топика
Ответ на: комментарий от Shushundr 11.02.23 01:24:19 MSK
А если в nsswitch.conf поставить hosts: files dns на время?
firkax ★★★★★
( 11.02.23 01:29:09 MSK )
Ответ на: комментарий от firkax 11.02.23 01:29:09 MSK
Да, так работает.
# grep hosts /etc/nsswitch.conf hosts: files dns shushundr /home/user # cat /etc/hostname shushundr4 shushundr /home/user # hostname shushundr4 # hostname --domain linux.org.ru # hostname --long shushundr4.linux.org.ru
Но это не настройка по-умолчанию! Поэтому надо разобраться почему по-умолчанию — не работает.
Shushundr ★★★
( 11.02.23 01:40:57 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 01:46:37 MSK (всего исправлений: 1)
Ответ на: комментарий от Shushundr 11.02.23 01:40:57 MSK
Наверно, надо выяснить, что скрывается за вот этим списком
hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns
(кроме уже известных files и dns) и научить давать правильный ответ.
А если в /etc/hostname прописать сразу с точками имя — не работает? Ну и в /etc/hosts его на всякий случай.
firkax ★★★★★
( 11.02.23 02:19:07 MSK )
Ответ на: комментарий от firkax 11.02.23 02:19:07 MSK
Я уже проверил практически, убирая из этого списка по одному слову. Кроме того, выше я привёл две ссылки на документацию по nss-модулям resolve и myhostname.
Если убрать их оба, то доменное имя показывается. Если хоть один (любой) оставить — доменное имя пропадает. Ещё я читал документацию на systemd-resolved (он вроде как демон, а эти nss-модули обращаются к нему за советом, по крайней мере первый модуль).
Ну так вот, в документации по этому поводу ничего хорошего не сказано. На форумах говорят — а ты прописывай FQDN при помощи hostnamectl. Но я уже в стартовом посте писал, что это не очень красиво работает.
Shushundr ★★★
( 11.02.23 02:23:36 MSK ) автор топика
Ответ на: комментарий от Shushundr 11.02.23 02:23:36 MSK
Но я уже в стартовом посте писал, что это не очень красиво работает.
Не нашёл где ты это писал. Если ты про то, что оно не сохраняется — то пропиши в /etc/hostname.
firkax ★★★★★
( 11.02.23 02:31:42 MSK )
Ответ на: комментарий от firkax 11.02.23 02:31:42 MSK
Если в файле /etc/nssswitch.conf написано «hosts: files», то hostname —long выводит длинное имя.
Если в файле /etc/nssswitch.conf написано «hosts: files myhostname», то hostname —long выводит короткое имя.
Я не понимаю, почему так происходит, и это пугает меня.
Пример про то, как после выполнения команды hostnamectl не изменяется содержимое вывода команды
# sysctl kernel.domainname kernel.domainname = test
оно, кстати, не изменилось несмотря ни на что, в том числе на прописывание /etc/hosts (без перезагрузки пока).
Shushundr ★★★
( 11.02.23 02:36:38 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 02:36:50 MSK (всего исправлений: 1)
Ответ на: комментарий от Shushundr 11.02.23 02:36:38 MSK
Оно и не изменится ни от каких редактирований файлов. Это ядерная переменная. Изменяется только если её специально кто-то перезапишет (вероятно, это делают какие-то скрипты старта системы). Хотя у меня она вообще пустая.
firkax ★★★★★
( 11.02.23 02:38:19 MSK )
Последнее исправление: firkax 11.02.23 02:39:20 MSK (всего исправлений: 1)
Ответ на: комментарий от firkax 11.02.23 02:38:19 MSK
Но это никак не отвечает на мой вопрос про то почему добавление nss-модуля В КОНЕЦ строки изменяет результат вывода.
Shushundr ★★★
( 11.02.23 02:39:59 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 02:40:12 MSK (всего исправлений: 1)
Ответ на: комментарий от Shushundr 11.02.23 02:39:59 MSK
Можешь strace hostname —long сравнить.
firkax ★★★★★
( 11.02.23 02:41:13 MSK )
Ответ на: комментарий от firkax 11.02.23 02:41:13 MSK
Во-первых, не могу. Во-вторых, мне нужны гарантии (то есть, прописанное в документации поведение), а не особенности конкретной реализации, которые могут поменяться когда разработчики не с той ноги встанут.
Shushundr ★★★
( 11.02.23 02:42:52 MSK ) автор топика
Ответ на: комментарий от Shushundr 11.02.23 02:42:52 MSK
Гарантии это не про линукс. Поменять что-то могут вместе с документацией. Ну или документацию оставить устаревшей и дезинформирующей. Ставь BSD.
firkax ★★★★★
( 11.02.23 02:45:01 MSK )
Ответ на: комментарий от firkax 11.02.23 02:45:01 MSK
Нет. Только ReactOS с пакетным менеджером nix, собранным через cygwin с mingw.
Shushundr ★★★
( 11.02.23 02:46:03 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 02:47:20 MSK (всего исправлений: 2)
У меня есть ощущение, что я уже задавал этот вопрос на LOR раньше, с таким же эффектом (посоветовали настроить /etc/hosts и изменить строчку hosts в /etc/nsswitch.conf). Это не то, что нужно, потому что нужно понимание, почему творится лютая необъяснимая дичь, когда модуль который стоит в строке hosts позже может переопределить то, что было сделано раньше.
«hosts — Host names and numbers, used by gethostbyname(3) and related functions.»
The order of the services on the line determines the order in which those services will be queried, in turn, until a result is found.
Мне не нравится, что описание деталей синтаксиса этого файла надо искать на сторонних ресурсах.
Даже если я вписываю «[SUCCESS=return]» после files, это всё равно не останавливает поиск в нужном месте.
«If none of the modules return useful answers, the only thing glibc would then need to do is to aggregate the answers, and return NSS_STATUS_UNAVAIL/EAGAIN if at least one module returned that, and NSS_STATUS_NOTFOUND/ENOENT otherwise.»
$ grep "^hosts" /etc/nsswitch.conf hosts: files [NOTFOUND=return] mymachines resolve [!UNAVAIL=return] myhostname dns
и так оно работает. Работает, это значит, что команда hostname —long выводит FQDN. А если [NOTFOUND=return] стереть, то hostname —long выводит короткое имя. Можете ли объяснить — почему?
Проблема не решена.
Shushundr ★★★
( 11.02.23 03:39:30 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 03:58:09 MSK (всего исправлений: 4)
Я бы изменил /etc/resolv.conf, но не знаю как, потому что этот файл управляется пакетом systemd.
domain — Local domain name, пишет man 5 resolv.conf «Most queries for names within this domain can use short names relative to the local domain. If set to ‘.’, the root domain is considered. If no domain entry is present, the domain is determined from the local hostname returned by gethostname(2); the domain part is taken to be everything after the first ‘.’»
Заметьте, что тут говорится про превращение имён в адреса, а не про узнавание домена по-умолчанию (а ведь это разные задачи/алгоритмы).
Я думаю, что в строке hosts при nss-модуле «files» информация о хосте оказывается не найдена (почему так происходит, я не знаю). И после этого FQDN-имя либо отдаётся при помощи systemd, либо срабатывает какой-то fallback-алгоритм, возможно тот, который описан в этом сообщении про man resolv.conf.
Значит должно быть три выхода:
1) настроить systemd таким образом, чтобы в файле resolv.conf появлялась строка domain. Но неясно, поможет ли это вообще. И недостаточно документации по systemd.
UPD: проверил, не поможет. Переделал симлинк в файл, вписал туда строку domain mydomain, но hostname —long всё равно выводит короткую строку, имя без домена.
2) написать свой nss-модуль, который будет возвращать имя домена более правильно, чем systemd. Но тут непонятно, что именно запрашивается.
3) разобраться как это работает полностью, перепроектировать и сделать как надо (это очень долго и муторно).
Shushundr ★★★
( 11.02.23 13:14:26 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 13:18:54 MSK (всего исправлений: 2)
Про настройку sysctl kernel.domainname мне непонятно, почему домен у машины должен быть ровно один. Машина ведь многопользовательская? Разве не могут работать разные пользователи с разными доменами?
Shushundr ★★★
( 11.02.23 13:21:35 MSK ) автор топика
Ответ на: комментарий от Shushundr 11.02.23 13:21:35 MSK
Даже более того, разве не может один пользователь работать с несколькими разными доменами. Да я в интернете это постоянно делаю, значит и с организациями тоже так может быть. Бывает же работа по совместительству…
Даже удивительно, как в таких условиях работает Single Sign On.
Shushundr ★★★
( 11.02.23 13:53:00 MSK ) автор топика
Последнее исправление: Shushundr 11.02.23 13:55:17 MSK (всего исправлений: 3)
Ответ на: комментарий от Shushundr 11.02.23 13:21:35 MSK
Тот домен, про который написано в стартовом посте Контроллер домена, это реалм Kerberos. В принципе каждый пользователь на хосте может сначала залогиниться на хост используя локальный логин-пароль (/etc/passwd, /etc/shadow), а затем получить TGT (ticket grant ticket) с KDC (key distribution center) с помощью kinit.
kinit использует krb5.conf чтобы понять какие Kerberos реалмы есть и какие у них KDC. По умолчанию это /etc/krb5.conf. Но каждый пользователь может прописать свой krb5.conf в переменной окружения KRB5_CONFIG.
Я работал на предприятии с AD-инфраструктурой и входил таким образом со своего линукса хоста в AD-домен (domain logon). После этого у меня работал прозрачный вход на CIFS шары и intranet web-ресурсы (outlook web access, и т.п.).
Если же ты хочешь, чтобы пользователи домена могли входить на твой линукс хост, то надо сделать этот хост частью домена (join domain). Я такого не делал, но слышал, что это возможно разными способами (winbind, realmd, freeipa, likewise, etc.).
iliyap ★★★★★
( 11.02.23 13:59:24 MSK )
Ответ на: комментарий от iliyap 11.02.23 13:59:24 MSK
БЛ*** ЧТО ТЫ НАДЕЛАЛ.
Он же щас с этими новыми словами еще тридцать тем наблюет.
thesis ★★★★★
( 11.02.23 14:04:43 MSK )
Ответ на: комментарий от thesis 11.02.23 14:04:43 MSK
А мне нравится смотреть как он мучительно захлебывается в потоках говна, найденного им самим в интернете. Хочу внести свою струю.
iliyap ★★★★★
( 11.02.23 14:17:00 MSK )
Я думаю, что библиотека NSS реализована неправильно. Она использует файл nsswitch.conf, а вместо этого должна была использовать директорию nsswitch.conf, в этой директории должны были размещаться файлы конфигурации для каждого из nss-модулей, а управляться всё это должно менеджером пакетов (а не устанавливаться пакетом systemd).
DNS и доменные имена. Команды Linux Подстановка локального домена
Хочу рассказать о несколько нестандартном способе с помощью которого можно открывать в браузере сайты, используя короткие имена. Например, вместо того чтобы набирать в браузере «yandex.ru» можно просто набрать одну букву «y». Поможет нам в этом файл /etc/hosts.
Файл /etc/hosts
В файле /etc/hosts задаются соответствия между IP адресом и именем хоста (hostname, домен), а также их псевдонимами (также называются, синонимами, алиасами). Когда вы обращаетесь к какому-нибудь адресу в сети, например, http://yandex.ru, то для доступа к сайту системе требуется вначале преобразовать адрес сайта в соответствующий ему IP адрес, для этого система запрашивает IP адрес у DNS сервера. Если в файле /etc/hosts прописано соответствие между yandex.ru и IP адресом, тогда система будет использовать именно этот IP адрес. А так как мы можем в файле /etc/hosts указать еще и псевдоним, по которому будет доступен конкретный IP адрес, то мы можем указать, например, для yandex.ru псевдоним «y». Соответственно, при запросе «y» в своем браузере, система прочитает IP адрес в файле /etc/hosts и откроет сайт yandex.ru. То есть /etc/hosts, это своего рода локальный DNS сервер.
Как узнать IP адрес сайта
Теперь нам нужно определить IP адреса сайтов, которые мы хотим добавить в /etc/hosts. Стоит отметить, что не все сайты имеют отдельный выделенный IP адрес и получить к ним доступ только по IP адресу нельзя. Но почти все крупные сайты и порталы имеют свой выделенный IP адрес. Простой способ узнать IP адрес сайта это использовать командну ping:
На экране отобразится процесс пинга (чтобы прервать нажмите Ctrl+C). Итак, мы получим вывод команды ping вида:
PING yandex.ru (87.250.250.11) 56(84) bytes of data. 64 bytes from yandex.ru (87.250.250.11): icmp_seq=1 ttl=57 time=3.57 ms .
Здесь видно, что yandex.ru соответствует IP адресу 87.250.250.11. Аналогично, выполняем для других сайтов.
Редактирование файла /etc/hosts
Редактировать файл /etc/hosts нужно осторожно, чтобы ничего не испортить, так как это системный файл и важно не нарушать его синтаксис. Откройте файл для редактирования, для этого выполните в командной строке:
Sudo gedit /etc/hosts
Содержимое файла выглядит примерно следующим образом:
127.0.0.1 localhost::1 mycomp localhost6.localdomain6 localhost6 127.0.1.1 mycomp # The following lines are desirable for IPv6 capable hosts::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet .
Синтаксис у файла /etc/hosts очень простой:
IP-адрес имя-хоста [псевдонимы, . ]
Добавим в файл новые строки для разных сайтов:
74.125.232.19 google.ru g 94.100.191.203 mail.ru m 194.186.36.211 rbc.ru r 87.250.250.11 yandex.ru y
Сохраните и закройте файл. Мы прописали соответствия между IP адресами, именами сайтов и их псевдонимами. Теперь перейдите в браузер и в адресной строке введите просто «g», должен открыться сайт google.ru. Чтобы открыть mail.ru введите просто «m», для rbc.ru — просто «r», yandex.ru — «y».
Еще один метод преобразования имен заключается в использовании локальной базы данных имен хостов, подобно тому, как это делалось на заре сети Internet. Файл /etc/hosts содержит список имен хостов с соответствующими IP-адресами. В листинге 4.3 приводится пример файла /etc/hosts для клиента на базе ОС Linux. В нем должны содержаться имя вашей машины и ее IP-адрес, а также IP-адрес петли 127.0.0.1 для служебных целей. Кроме того, если имеются какие-либо удаленные хосты, к которым периодически подключается ваш сервер на ОС Linux, их IP-адреса также желательно указать в файле /etc/hosts . Теперь при каждом обращении к этим хостам у Linux-сервера уже будут их IP-адреса; таким образом, необходимость в выполнении DNS-запросов отпадает. К тому же это намного ускоряет установление соединения.
1 127.0.0.1 localhost 2 192.168.0.1 shadrach.smallorg.org 3 10.0.0.1 mail1.isp.net 4 10.0.0.2 mail2.isp.net 5 10.0.0.3 fred.otherplace.com Листинг 4.3. Пример файла /etc/hosts
В первой и второй строках указываются IP-адреса для локального Linux-сервера. В строках 3–5 представлены IP-адреса для наиболее часто запрашиваемых машин вашей сети. Благодаря этому ускоряется доступ к ним c сервера на базе ОС Linux, по сравнению с использованием системы DNS.
Имя localhost
Во всех компьютерах с ОС Linux осуществляется поддержка имени localhost . Этому имени всегда соответствует IP-адрес 127.0.0.1 , который присваивается специальному сетевому устройству типа «петля». Эти имя и адрес позволяют внутренним процессам взаимодействовать с другими процессами в этой же системе по сетевым протоколам. Многие программы даже сконфигурированы на использование имени localhost . Изменение этого имени или соответствующего ему IP-адреса может повлиять на работу этих программ.
Файл преобразования DNS
В файле /etc/host.conf определяются методы и порядок преобразования имен ОС Linux. В листинге 4.4 показан пример файла /etc/host.conf .
1 order hosts,bind 2 multi on Листинг 4.4. Пример файла /etc/host.conf
В первой строке указывается порядок преобразования имен хостов. Здесь операционной системе Linux указывается, что в первую очередь она должна обращаться к файлу /etc/hosts и искать хост там, а затем попытаться преобразовать имя с помощью системы DNS (bind), если не удалось этого сделать с помощью /etc/hosts .
Утилиты клиента DNS в ОС Linux
В помощь системному администратору для ОС Linux было написано множество утилит, призванных облегчить для DNS поиск информации об удаленных хостах и сетях. Для UNIX-систем организацией Internet Software Consortium был создан программный пакет Berkeley Internet Name Domain (BIND), в который вошли три наиболее полезные, с точки зрения автора, и широко используемые утилиты: host , nslookup и dig . Эти программы распространяются совместно с программным обеспечением, входящим в большинство дистрибутивов ОС Linux. В Red Hat и Mandrake Linux эти программы поставляются в виде пакетов RPM.
При решении возможных проблем, связанных с работой электронной почты в Internet, эти утилиты весьма полезны. Часто отправитель допускает ошибки в адресе получателя электронной почты, и письма не принимаются. Естественно, он будет совершено уверен, что использовал правильный адрес, и вину за возвращаемые сообщения возложит на вас. Однако после небольшого общения с DNS можно сделать однозначные выводы о правильности или ошибочности адреса электронной почты.
Утилита host
Программа host производит простейшее преобразование имени с помощью DNS. Формат команды host следующий:
host [-l] [-v] [-w] [-r] [-d] [-t querytype] [-a] host
По умолчанию команда host пытается получить IP-адрес для имени, указанного как host , с помощью DNS-сервера, определенного в файле /etc/resolv.conf . Если в командной строке указан server , то по умолчанию команда host будет использовать его в качестве DNS-сервера. Добавляя дополнительные параметры в командной строке, можно модифицировать работу команды host . Все эти параметры указаны в табл. 4.5 .
Параметр | Описание |
---|---|
-l | Показывает полную информацию о домене |
-v | Использует подробный формат при выводе результатов |
-w | Заставляет команду host ожидать ответа |
-r | Выключает режим рекурсии |
-d | Включает режим отладки |
-t querytype | Определяет тип запроса |
-a | Восстанавливает все записи в DNS |
Параметр -l может использоваться для поиска информации обо всех хостах в домене. Очень часто вместе с ним используется параметр -t для того, чтобы отфильтровать информацию по типу (например, -t MX возвращает только записи МХ для домена). К сожалению, в настоящее время из соображений безопасности использование параметра -l затруднено, так как большинство DNS-серверов отказывает в предоставлении информации о хостах из своих баз данных. Если же информация запрашивается от удаленного или загруженного DNS-сервера (или через низкоскоростное соединение), то можно использовать параметр -w . С его помощью программа host принудительно ожидает ответа на запрос. По умолчанию время ожидания составляет около минуты.
Один из наиболее полезных параметров -r . Он указывает DNS-серверу возвращать только ту информацию, которая содержится в его локальной базе данных. В таком случае DNS-сервер не обращается за информацией к другим DNS-серверам.
Это весьма удобно при определении того, правильно ли ваш DNS-сервер кэширует ответы DNS. Во-первых, попытайтесь задать параметр -r . Если никакой информации об имени хоста нет, то от локального DNS-сервера ответ не будет получен. Затем задайте команду без параметра -r . Здесь должен быть получен нормальный ответ, так как локальному DNS-серверу разрешено получать данные от других серверов DNS. Далее еще раз попробуйте команду host с опцией -r . Теперь полученная информация должна в точности совпадать с данными, полученными в результате предыдущей попытки. Это означает, что DNS-сервер на этот раз почерпнул из кэша информацию, которая относилась к предыдущей попытке. Если никакой информации не получено, значит, локальный DNS-сервер не скэшировал предыдущий ответ. Тогда вы должны заметить значительное замедление при получении ответа на запрос, так как он делается по сети, а не берется из кэша.
По умолчанию команда host попытается вывести результаты своей работы в удобном для чтения формате. Например, как это показано в листинге 4.5. Если же задана опция -v , то вывод имеет вид исходных записей DNS. При отладке работы системы DNS это может оказаться полезным.
1 $host www.linux.org 2 www.linux.org has address 198.182.196.56 3 www.linux.org mail is handled (pri=2O) by router.invlogic.com 4 www.linux.org mail is handled (pri=30) by border-ai.invlogic.com 5 www.linux.org mail is handled (pri=10) by mail.linux.org 6 $ Листинг 4.5. Пример выполнения команды host
В строке 1 показан основной формат команды host — просто добавьте имя хоста, о котором требуется получить информацию. Строки 2–5 представляют собой результаты работы команды. Строка 2 показывает, что DNS-сервер смог преобразовать имя заданного хоста в его IP-адрес. Далее в строках 3-5 показаны три компьютера, которые могут принимать электронную почту для заданного хоста согласно записям МХ . Заметим, что команда host показывает даже весовые коэффициенты (или приоритеты) для каждого почтового сервера. Если почта была послана пользователю указанного хоста, то сначала ее доставкой займется сервер с приоритетом 10 (mail.linux.org ). Если же команда host не выполняется, то можно послать запрос через другой DNS-сервер, указав его адрес после адреса хоста в командной строке. Это весьма эффективно, если вы считаете, что локальный DNS-сервер ведет себя не совсем правильно.
Вопрос. Как я могу добавить пользователя в группу в Linux?
Ответ. Вы можете использовать команды useradd илиusermod для добавления пользователя в группу. Команда useradd создает нового пользователя или обновляет информацию у существующего. Команда usermod модифицирует существуюего пользователя. Вся информация о пользователях и группах храниться в файлах /etc/passwd, /etc/shadow и /etc/group.
Пример использования useradd — Добавляем нового пользователя в вторичную группу
Используем команду useradd для добавления нового пользователя в существующую группу. Если группа не существует создайте её. Синтаксис:
Useradd -G username
Создадим пользователя vivek и добавим его в группу developers. Залогиньтесь как пользователь root и убедитесь что группа developers существует:
# grep developers /etc/group
Если группы нет, используйте команду groupadd для создания новой группы developers:
Затем добавьте пользователя vivek в группу developers:
# useradd -G developers vivek
Установите пароль пользователю vivek:
Убедитесь что пользователь добавлен в группу developers:
# id vivek Output:
Uid=1122(vivek) gid=1125(vivek) groups=1125(vivek),1124(developers)
Опция -G позволяет добавить пользователю группу. Группы можно перечислять через запятую. К примеру, добавим пользователя jerry в группы
admins, ftp, www, and developers, введя:
# useradd -G admins,ftp,www,developers jerry
Пример использования useradd — Добавляем нового пользователя в основную группу
Для добавления пользователя tony в группу developers используем следующую команду:
# useradd -g developers tony
uid=1123(tony) gid=1124(developers) groups=1124(developers)
Опция -g позволяет добавить пользователя в основную группу. Группа должна существовать.
Пример использования usermod — Добавляем существующего пользователя в существующую группу
Добавляем существующего пользователя tony в вторичную группу ftp:
# usermod -a -G ftp tony
Изменяем существующему пользователю tony первучную группу на www:
# usermod -g www tony
Для второй вышки заказал реферат на сайте «Студинформ». Стыдно конечно, но времени делать самому совсем нет. Заказ выполнили очень быстро и качественно. Рекомендую!
Для своей машины сейчас думаю какие шины ставить. Очень задумался о шипованных шинах . По отзывам, насколько я почитал, разница тормозного пути лучших шипованных шин и лучших моделей без шипов составила 10 метров! Есть над чем подумать.
Version of host .
Description
In the syntax listed below, name is the domain name that is to be looked up. The name can also be a dotted-decimal IPv4 address or a colon-delimited IPv6 address, in which case host will by default perform a reverse lookup for that address. The server is an optional argument that is either the name or IP address of the name server that host should query instead of the server or servers listed in /etc/resolv.conf .
Syntax
host [-aCdlnrsTwv] [-c class ] [-N ndots ] [-R number ] [-t type ] [-W wait ] [-m flag ] [-4] [-6] name > [server ]
Options
The -a (all ) option is equivalent to setting the -v option and asking host to make a query of type ANY.
When the -C option is used, host will attempt to display the SOA records for zone name from all the listed authoritative name servers for that zone. The list of name servers is defined by the NS records that are found for the zone.
-c class
The -c option instructs host to make a DNS query of class class . This can be used to lookup Hesiod or Chaosnet class resource records. The default class is IN (Internet).
Verbose output is generated by host when the -d or -v option is used. The two options are equivalent. They have been provided for backward compatibility . In previous versions, the -d option switched on debugging traces and -v enabled verbose output.
List mode is selected by the -l option. This makes host perform a zone transfer for zone name. Transfer the zone printing out the NS, PTR, and address records (A/AAAA). If combined with -a all records will be printed.
The -i option specifies that reverse lookups of IPv6 addresses should use the IP6.INT domain as defined in RFC1886. The default is to use IP6.ARPA.
-N ndots
The -N option sets the number of dots that have to be in name for it to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf , or 1 if no ndots statement is present. Names with fewer dots are interpreted as relative names and will be searched for in the domains listed in the search or domain directive in /etc/resolv.conf .
-R number
The -s option tells host not to send the query to the next nameserver if any server responds with a SERVFAIL response, which is the reverse of normal stub resolver behavior.
-m flag
The -m can be used to set the memory usage debugging flags record, usage and trace.
Examples
host 204.228.150.3
This command performs a reverse lookup on the IP address 204.228.150.3 , which results in the output:
3.150.228.204.in-addr.arpa domain name pointer www.сайт.
Related commands
dig — DNS lookup utility.
nslookup — Query a name server for information about a remote host.
ping — Send ICMP ECHO_REQUEST packets to network hosts.
Эта статья расскажет вам о команде host. Утилита host предназначена для выполнения запросов к DNS-серверам.
[Алексей Выскубов]
Эта статья расскажет вам о команде host .
Примеры работы приводятся в операционных системах Linux 2.2.17 (Debian unstable, «woody») и FreeBSD 4.2.
Утилита host предназначена для выполнения запросов к DNS-серверам.
По умолчанию она просто находит IP-адрес, соответствующий заданному имени хоста, например:
Www.сайт A 195.5.132.10
Www.сайт has address 195.5.132.10
Как вы видите, в случае Linux утилита выдает DNS-запись типа A, а FreeBSD просто сообщает адрес хоста, используя английский язык. Следует отметить, что DNS-запись, выдаваемая Linux, непригодна для непосредственного помещения в базу данных DNS-сервера, так как имя хоста не заканчивается точкой; указание точки после имени хоста при вызове host также не помогает.
Кроме того, не хватает IN между именем хоста и A. Если вам нужно получить запись, которую можно было бы непосредственно поместить в базу DNS, в Linux вы можете использовать параметр -Z :
$ host -Z slashdot.org
Slashdot.org. 3600 IN A 64.28.67.48
В FreeBSD такая возможность отсутствует.
Аналогичная ситуация возникает, когда указанное имя является алиасом — Linux выводит строчку со словом CNAME, а FreeBSD использует конструкцию «xxx.yyy.zzz is a nickname for aaa.bbb.ccc» :
Admin1.piter-press.ru CNAME ns.piter-press.ru
Ns.piter-press.ru A 195.239.142.33
Admin1.piter-press.ru is a nickname for ns.piter-press.ru
Ns.piter-press.ru has address 195.239.142.33
Следует отметить, что после имени хоста в команде host может быть указано имя сервера, который вы хотите опросить. Если имя сервера не указано (как в наших примерах), то производится опрос одного из DNS-серверов для данной зоны.
Если host получает на вход не имя хоста, а IP-адрес, то производится обратное преобразование — в FQDN.
33.142.239.195.IN-ADDR.ARPA domain name pointer ns.piter-press.ru
На этот раз в случае Linux приведена обычная текстовая информация (хотя, казалось бы, почему не вывести DNS-запись типа PTR?). FreeBSD поступает логичнее — IP-адрес преобразован в соответствующее ему имя хоста в зоне IN-ADDR.ARPA, для которого и выведена информация — опять же, при помощи английского языка.
Подстановка локального домена
Еще одно важное отличие версий host в Linux и FreeBSD заключается в том, что FreeBSD в том случае, если имя хоста не заканчивается точкой, пытается подставить для него локальный домен, чего Linux не делает (возможно, это баг, поскольку man-страница утверждает обратное):
Woe does not exist (Authoritative answer)
Как мы видим, spb.ru является локальным доменом, хост woe.spb.ru существует, но команда host woe не выдает желаемого результата. Следует отметить, что наличие в файле /etc/resolv.conf строки search spb.ru (или domain spb.ru) решило бы проблему. Под FreeBSD поведение host иное:
Alv.home has address 192.168.1.1
Локальный домен был подставлен только в первом случае, так как имя не заканчивалось точкой. Наличие строк search и/или domain в resolv.conf не обязательно.
Подробная информация: параметр -v
Полезным параметром является -v (verbose). И в Linux, и во FreeBSD его действие практически одинаково: выводится дополнительная информация о зоне.
$ host -v www.spb.ru
Query about www.spb.ru for record types A
Query done, 1 answer, status: no error
Www.spb.ru 2134 IN A 195.190.101.3
Www.spb.ru 48235 IN NS ns.nevalink.ru
Www.spb.ru 48235 IN NS ns1.gldn.net
Www.spb.ru 48235 IN NS ns2.gldn.net
Ns.nevalink.ru 54275 IN A 195.190.100.28
Ns1.gldn.net 10978 IN A 194.67.2.108
Ns2.gldn.net 10972 IN A 195.218.218.8
$ host -v www.spb.ru.
Rcode = 0 (Success), ancount=1
The following answer is not authoritative:
The following answer is not verified as authentic by the server:
Www.spb.ru 2053 IN A 195.190.101.3
For authoritative answers, see:
Www.spb.ru 48154 IN NS ns.nevalink.ru
Www.spb.ru 48154 IN NS ns1.gldn.net
Www.spb.ru 48154 IN NS ns2.gldn.net
Ns.nevalink.ru 51480 IN A 195.190.100.28
Ns1.gldn.net 10348 IN A 194.67.2.108
Ns2.gldn.net 10342 IN A 195.218.218.8
Пояснений требует числовое поле, появившееся в ответе host . Вызвав host несколько раз, можно заметить, что его значение постоянно уменьшается, что не удивительно, так как это поле содержит TTL — время жизни записи в зоне.
Под Linux вы можете использовать параметр -vv , вызывающий вывод информации о процессе получения DNS-записей.
Выбор типов записей: параметры -a и -t
Еще два важных параметра команды host — -a и -t . Параметр -a означает -t ANY в Linux и -v -t any во FreeBSD, поэтому разберем значение параметра -t .
Этот параметр используется для задания типа DNS-записей, которые вас интересуют. Поддерживаются типы записей A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, INFO, MX, UINFO, UID, GID, UNSPEC. Обратите внимание, что в Linux тип записи можно указвать в любом регистре, а во FreeBSD — только строчными буквами (a, ns, cname и т. п.). Если параметр -t не указан, то Linux по умолчанию производит поиск записей типа A, если указан параметр -l (см. ниже) — то типов A, NS, PTR. FreeBSD при неуказанном параметре -t производит поиск записей типов A и MX, при указанном параметре -l — еще и PTR и NS. Linux-версия host также поддерживает тип записи MAILB, означающий любой тип из MB, MR, MG или MINFO. Вместо указания параметра -t MAILB можно указать параметр -m ; в этом случае также будет произведено рекурсивное раскрытие записей типов MR и MG до MB. Листинг зоны: параметр -l При помощи команды host с параметром -l можно получить листинг целой зоны. Для указания типов записей, которые вас интересуют, используйте параметры -a и -t . Имейте в виду, что листинг зоны генерируется при помощи запроса AXFR на передачу зоны и выделения нужной информации из полученной. Это означает, что параметр -l создает дополнительную нагрузку на сеть и DNS-сервера, поэтому использовать его следует как можно реже. Кроме того, многие системные администраторы так настраивают свои DNS-сервера, что они не отдают зону «кому попало», отказывая в обработке запроса AXFR (при этом FreeBSD-версия host даже не потрудится внятно объяснить вам, что произошло):
$ host -l slashdot.org
Slashdot.org AXFR record query refused by ns2.andover.net
Slashdot.org AXFR record query refused by ns3.andover.net
Slashdot.org AXFR record query refused by ns1.andover.net
No nameservers for slashdot.org responded
$ host -l slashdot.org
Server failed: Query refused
Под Linux вы можете создать полную копию зоны, пригодную для «скармливания» bind, при помощи команды host -Z -a -l (и записать ее в файл, добавив -f имя_файла).
Прочие параметры
Как известно, DNS представляет собой рекурсивную систему. Если DNS-сервер не находит информацию, запрошенную у него, он инициирует рекурсивный запрос к «вышестоящему» серверу.
Команда host имеет возможность для предотвращения этого: параметр -r запрещает производить рекурсивные запросы: опрашивается только DNS-сервер по умолчанию. Этот параметр работает практически одинаково и под Linux, и под FreeBSD, но вывод команды в том случае, когда запись не найдена, слегка отличается:
$ host -r www.spb.ru
Www.spb.ru A record currently not present
$ host -r www.spb.ru
Как видно, FreeBSD просто ничего не выводит.
Команда host , в принципе, может использоваться не только в сети Интернет. Параметр -c позволяет задать класс записей, которые нас интересуют. Поддерживаются классы записей IN, CHAOS, HS, HESIOD (по умолчанию используется IN). Под Linux также поддерживаются классы INTERNET, CS, CSNET, CH. Для указания всех классов можно использовать ключевое слово ANY (под Linux также можно использовать символ *, только не забудьте заэкранировать его от шелла).
Для вывода отладочной информации используйте параметр -d (под Linux его можно продублировать — -dd — для увеличения количества отладочной информации).
В FreeBSD-версии host ключ -s используется для работы с DNSSEC (Linux-версия не работает с DNSSEC, ключ -s используется для указания тайм-аута DNS-сервера в секундах).
Параметры, описанные в этом разделе, специфичны для Linux-версии host.
Рекурсивные листинги: параметр -L Парамер -L задает уровень рекурсии при выводе листинга зоны. Например, команда:
$ host -l -a -L 1 some.zone
Выведет листинг зоны some.zone, а также всех ее делегированных зон.
Увеличение уровня рекурсии увеличивает глубину просмотра делегированных зон. Все, сказанное о нежелательности применения параметра -l , имеет еще большее значение при применении комбинации -L -l .
Статистика: параметр -S Указание параметра -S при получении листинга зоны выводит статистическую информацию о числе найденных записей различных типов, количестве хостов различных типов, количестве делегированных зон и т. п.:
$ host -l -a -S freshmeat.net
Freshmeat.net. SOA freshmeat.net. dns-admin.freshmeat.net.
Использование определенных DNS-серверов: параметры -p и -P
Параметр -p указывает при получении листинга зоны использовать только основной (primary) DNS-сервер. Имя основного DNS-сервера определяется при помощи записи SOA рассматриваемой зоны.
Параметр -P позволяет указать список предпочтительных доменов (через запятую). Будет использоваться DNS-сервер, имеющий наибольшее число совпадений компонентов имени с одним из указанных доменов. Использование этих параметров видно на следующем примере:
$ host -vv -p -l piter.com
Trying server 195.239.142.33 (ns.piter.com) .
$ host -vv -P hellix.piter.com -l piter.com
Finding nameservers for piter.com .
Query done, 2 answers, status: no error
The following answer is not authoritative:
Piter.com 3308 IN NS ns.piter.com
Piter.com 3308 IN NS hellix.piter.com
Ns.piter.com 85293 IN A 195.239.142.33
Hellix.piter.com 3308 IN A 193.125.199.13
Found 1 address for ns.piter.com
Found 1 address for hellix.piter.com
Trying server 193.125.199.13 (hellix.piter.com) .
Пропуск зон: параметр -N
Параметр -N позволяет указать список зон (через запятую), информация о которых не требуется. Обычно он применяется совместно с параметром -L .
Linux: расширенный синтаксис Задав параметр -x , вы можете использовать так называемый расширенный синтаксис команды host , передавая ей не одно, а несколько имен хостов. Поскольку каждое имя в этом случае трактуется как имя хоста, информацию о котором необходио получить, то для указания DNS-сервера, который нужно опрашивать, используется параметр -X . Если указан параметр -X , то -x подразумевается.
Расширенный синтаксис позволяет запустить host вообще без имен хостов, передавая их впоследствии на стандартный вход программы. Одна строка может содержать несколько имен хостов, но если в строке появляется символ # или;, то ее остаток игнорируется.
Linux: специальные режимы
Одним из специальных режимов, поддерживаемых утилитой host, является режим передачи зоны, активируемый параметром -l . В Linux-версии утилиты имеется еще несколько специальных режимов, все из которых, за исключением одного, являются вариациями режима -l .
Вариации режима передачи зоны
Параметр -C аналогичен параметру -l , но вызывает различные проверки зоны, в частности, проверяется, действительно ли каждый из DNS-серверов, перечисленных в NS-записях для зоны, способен дать авторитетный (authoritative) ответ на запрос о зоне. Выполняются также прочие проверки корректности зоны.
Параметр -H также аналогичен параметру -l , вызывая передачу зоны, хотя он не выводит информации о записях. Вместо этого производится подсчет количества A-записей в зоне. Принимаются специальные меры (см. man 1 host) для того, чтобы принимать во внимание только «настоящие» хосты. Сочетание параметров -H -S позволяет получить подробную статистику зоны:
$ host -H -S freshmeat.net
Found 34 A records within freshmeat.net
Found 4 NS records within freshmeat.net
Found 9 CNAME records within freshmeat.net
Found 2 SOA records within freshmeat.net
Found 4 MX records within freshmeat.net
Found 32 hosts within freshmeat.net
Found 9 duplicate hosts within freshmeat.net
Found 12 extrazone hosts within freshmeat.net
Found 1 gateway host within freshmeat.net
Found 0 delegated zones within freshmeat.net
Параметры -G , -D , -E выводят имена соответственно хостов-шлюзов (gateway), дублирующихся хостов и внезонных (extrazone) хостов. При этом под шлюзом понимается хост, имеющий более одного IP-адреса, под дублирующимся хостом понимается хост с ровно одним IP-адресом, которому также соответствует несколько имен (возможно, из разных зон — это может означать ошибку в зоне). Под внезонным хостом для зоны some.zone понимается хост вида host.something.some.zone, где something.some.zone не является делегированной зоной.
Режим проверки адресов
Последний не разобранный нами режим Linux-версии утилиты host — режим проверки адресов, инициируемый параметром -A . При этом производятся следующие действия:
* Если в качестве аргумента было указано имя хоста, то определяется его адрес, по которому определяется имя хоста, и проверяется на совпадение с исходным именем.
* Если в качестве аргумента был указан IP-адрес, то определяется соответствующее ему имя хоста, после чего проверяется, входит ли исходный IP-адрес в список IP-адресов для найденного имени хоста.
* Если параметр задан совместно с параметром -l , то описанные действия производятся для каждой A-записи в зоне.
Алексей Выскубов ,
Как узнать имя компьютера (hostname) в Linux
Нужно узнать Hostname компьютера. Как это можно сделать в Linux?
Способ 1 (hostname)
Узнать имя компьютера можно используя команду hostname. Выполните в терминале команду:
hostname
В результате отобразится имя компьютера, например:
$ hostname pingvinus
Способ 2 (hostnamectl)
Еще один способ, это использование команды hostnamectl. Выполните в терминале:
hostnamectl
Будет выведена информация о системе, включая hostname (см. первую строку Static hostname):
$ hostname Static hostname: pingvinus Icon name: computer-desktop Chassis: desktop Machine ID: … Boot ID: … Operating System: Ubuntu 1.2.3 Kernel: Linux 4.15.0-33-generic Architecture: x86-64
Способ 3 (cat ..)
cat /proc/sys/kernel/hostname
Способ 4 (uname)
uname -n
Войдите, чтобы ставить лайки мне нравится
войдите, чтобы ставить лайки
Другие вопросы и ответы
- Какой командой можно изменить прокси для всей системы?
- Лена скачивает дистрибутив ОС Linux (задача по информатике)
- Denwer для Linux
- Как настроить usb модем Связной в ubuntu 12.04?
- Как добавить поддержку Mp3 и DivX кодеков в Fedora 16?
Категории вопросов:
- Ubuntu
- Интернет и сети
- Командная строка
- Работа с файлами
- Оборудование и драйвера
- Программы и игры
Форум
по Linux
Руководство
по Ubuntu
Аналоги программ
Windows vs Linux
Новое в галерее
Комментарии
Комментариев пока не было.
Fqdn как узнать linux
hostname — вывести или установить системное имя хоста
domainname — вывести или установить NIS/YP доменное имя
dnsdomainname — вывести DNS доменное имя
nisdomainname — вывести или установить NIS/YP доменное имя
ypdomainname — вывести или установить NIS/YP доменное имя
СИНТАКСИС
hostname [ -v ] [ -a ] [ —alias ] [ -d ] [ —domain ] [ -f ] [ —fqdn ] [ -i ] [ —ip-address ] [ —long ] [ -s ] [ —short ] [ -y ] [ —yp ] [ —nis ]
hostname [ -v ] [ -F имя_файла ] [ —file имя_файла ] [ имя_файла ]
domainname [ -v ] [ -F имя_файла ] [ —file имя_файла ] [ имя ]
hostname [ -v ] [ -h ] [ —help ] [ -V ] [ —version ]
ОПИСАНИЕ
Hostname — это программа, предназначенная для вывода либо установки текущего имени машины или домена системы. Это имя используется множеством сетевых программ для идентификации машины. Доменное имя также используется системами NIS/YP.
При запуске без аргументов, программы выводят следующие текущие имена: When called without any arguments, the program displays the current names:
hostname выводит имя системы, возвращаемое функцией gethostname(2) .
domainname, nisdomainname, ypdomainname выводит имя системы, возвращаемое функцией getdomainname(2) . Это имя также называется YP/NIS доменным именем системы.
dnsdomainname выводит доменную часть FQDN (Fully Qualified Domain Name, Полностью Определенное Доменное Имя). Полное FQDN имя системы возвращается командой hostname —fqdn .
При запуске с одним аргументом или опцией —file , программы устанавливают имя машины или NIS/YP доменное имя.
Заметьте, что только суперпользователь может изменять эти имена.
С помощью команды dnsdomainname невозможно установить FQDN имя или доменное имя DNS (см. FQDN ниже).
Имя машины обычно устанавливается один раз при старте системы в скриптах /etc/rc.d/rc.inet1 или /etc/init.d/boot (как правило, оно считывается из соответствующего файла, содержащего это имя, например /etc/hostname ).
С помощью этих команд нельзя сменить FQDN имя (возвращаемое hostname —fqdn ) или доменное имя DNS (возвращаемое dnsdomainname ). FQDN имя системы — это имя, возвращаемое системой разрешения имен (резолвер, resolver(3) ) для имени машины.
Технически это выглядит так: FQDN — это имя, возвращаемое функцией gethostbyname(2) для имени машины, возвращаемого функцией gethostname(2) . Доменное имя DNS системы — это часть вышеопределенного имени, следующая за первой точкой.
Поэтому способ смены имен сильно зависит от конфигурации (задаваемой обычно в файле /etc/host.conf ). Как правило (если файл со списком имен машин обрабатывается до запуска DNS или NIS) они могут быть изменены в файле /etc/hosts .
ОПЦИИ
Вывести псевдоним хоста (если он есть).
Вывести имя домена DNS. Не используйте для этого команду domainname , поскольку она выводит имя домена NIS, а не DNS. Вместо нее используйте команду dnsdomainname .
-F, —file имя_файла
Прочитать имя хоста из указанного файла. Строки, начинающиеся символом `#’, считаются комментариями и игнорируются.
Вывести FQDN (Fully Qualified Domain Name, Полностью Определенное Доменное Имя). FQDN состоит из короткого имени машины и имени домена DNS. Если Вы не используете BIND или NIS для поиска хостов, Вы можете изменить FQDN и имя домена DNS (являющееся частью FQDN) в файле /etc/hosts .
Вывести краткую подсказку и завершиться.
Вывести IP адрес хоста.
Вывести короткое имя хоста. Это имя машины до первой точки.
Вывести информацию о версии на стандартный вывод и успешно завершиться.
Выводить дополнительную информацию.
Вывести доменное имя NIS. Если при этом задан параметр имя (либо задана опция —file имя_файла ), то суперпользователь может также задать новое доменное имя NIS.
ФАЙЛЫ
АВТОР(Ы)
Bernd Eckenfels, < net-tools@lina.inka.de > (NIS и страница руководства).
Index
Закладки на сайте Проследить за страницей | Created 1996-2023 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |