Я отлаживаю что-то, связанное с логинами LDAP,Вход через Ldap SSH не работает - Те же конфигурации работали на 20+ других серверах - Ubuntuи я заметил, что на некоторых серверах логи используют localhost, а на других — имя хоста. Наличие имени хоста, кажется, имеет наибольший смысл, особенно если мы собираемся централизовать файлы журналов.
Как это настраивается? Почему по умолчанию не используется имя хоста? Просто стало любопытно...
Примеры :
Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)
Или
Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown
Обновлять:
user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com
Может быть, это связано с тем, что Daily использует полное доменное имя в hostname? Я всегда думал, что /etc/hostname — это просто короткая часть hostname, а не полное hostname.domain.com и т. д.
решение1
https://wiki.archlinux.org/index.php/rsyslog#Configure_Hostname
Rsyslog использует процедуру glibc gethostname() или gethostbyname() для определения имени хоста локальной машины. Процедура gethostname() или gethostbyname() проверяет содержимое
/etc/hosts
для полного доменного имени (FQDN), если вы не используете BIND или NIS.
Точнее, если localhost
запись о вашем IP-адресе стоит первой в /etc/hosts
, то она будет иметь приоритет.
(Предполагается, что files
это первое значение в hosts:
строке в /etc/nsswitch.conf
. Или же ваше имя хоста не может быть разрешено с помощью DNS).
На странице Arch Wiki далее поясняется:
Вы можете проверить, каков текущий настроенный FQDN локальной машины, запустив hostname --fqdn. Вывод hostname --short будет использоваться rsyslog при записи сообщений журнала. Если вы хотите иметь полные имена хостов в журналах, вам нужно добавить $PreserveFQDN в начало файла (перед использованием любой директивы, которая записывает в файлы). Это связано с тем, что rsyslog считывает файл конфигурации и применяет его на ходу, а затем считывает последующие строки.
Файл /etc/hosts содержит ряд строк, которые сопоставляют FQDN с IP-адресами и которые сопоставляют псевдонимы с FQDN. Смотрите пример файла /etc/hosts ниже:
/etc/хосты
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 localhost.localdomain somehost.localdomain localhost somehost ::1 localhost.localdomain somehost.localdomain localhost somehost
localhost.localdomain — первый элемент, следующий за IP-адресом, поэтому функция gethostbyname() вернет localhost.localdomain как полное доменное имя локальной машины. Затем файл /var/log/messages будет использовать localhost как имя хоста.
Чтобы использовать somehost в качестве имени хоста, переместите somehost.localdomain в первый элемент:
/etc/хосты
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 somehost.localdomain localhost.localdomain localhost somehost ::1 somehost.localdomain localhost.localdomain localhost somehost
Может быть сложно сказать, как именно выбирается соответствующая информация /etc/hosts
(или DNS) в различных обстоятельствах. Читая исходный код еще раз, я думаю, rsyslog
что пытается разрешить системное имя хоста (вывод hostname
команды) в полное доменное имя.
Я думаю, это означает, что там, где выше написано "gethostname или gethostbyname", на самом деле должно быть написано "gethostnameиgethostbyname». Так что эти инструкции, вероятно, можно было бы улучшить, но они, по крайней мере, указывают вам правильное место.
Очень похожий вопрос задают и наСписок рассылки rsyslog-users.