Определить полное доменное имя, если имя хоста его не дает?

Определить полное доменное имя, если имя хоста его не дает?

ВДругой вопрос, я обнаружил, что Puppet генерирует сертификаты для FQDN моей машины, но не простого имени хоста. В этом примере kungfumasterбыло имя хоста, а было значение, полученное при запуске hostname. Puppet генерировал сертификаты, в которых указывалось FQDN kungfumaster.domain.com.

Как Puppet определил, что это мое полное доменное имя? Я перепробовал все нижеперечисленное и не увидел ничего подходящего *.domain.com:

$ hostname -a && hostname -d && hostname --domain && hostname -f && \ 
    hostname --fqdn && hostname -A && hostname --long

kungfumaster
kungfumaster
kungfumaster 
kungfumaster

Как мне получить kungfumaster.domain.comиз Bash? Я заметил, что domain.comэто действительно существует в /etc/resolv.conf, но я не смог найти его где-либо еще.

Я в основном хочу получить FQDN текущей машины в виде строки. Другие решения здесь, на unix.se, мне не помогли. (т.е.: dnsdomainname, domainname, и т.д.)

решение1

Похоже, что Puppet использует Facter для оценки доменных имен:

$ facter domain
domain.com
$ facter hostname
kungfumaster
$ facter fqdn
kungfumaster.domain.com

Ответ всоответствующий исходный код Фактора.

Он выполняет следующие действия по порядку и использует первый из них, содержащий доменное имя:

  1. имя хоста -f
  2. dnsdomainname
  3. анализ resolv.conf на предмет записи «домен» или «поиск»

решение2

Вероятно, потому что ваша система является частью доменной сети, которая назначает доменное имя. Например, в моем случае мой маршрутизатор разрешает все имена хостов в форме host.lan, "lan" — это мой домен, а "host" — имя моей системы.

Полное доменное имя, скорее всего, берется из DNS вашего маршрутизатора, просто выполните любую из этих команд:

nslookup your-ip-here
dig -x your-ip-here
host your-ip-here

Пример использования dig:

dig @10.0.0.1 -x 10.0.0.1

; <<>> DiG 9.9.5-4-Debian <<>> @10.0.0.1 -x 10.0.0.1
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11384
;; flags: qr aa rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;1.0.0.10.in-addr.arpa.     IN  PTR

;; ADDITIONAL SECTION:
1.0.0.10.in-addr.arpa.  86400   IN  PTR dsldevice.lan.

;; Query time: 2181 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: Thu Jun 19 20:01:32 AST 2014
;; MSG SIZE  rcvd: 77

Поскольку я использую свой DNS, а не маршрутизатора, мне нужно задать домен для запроса в @части. Я запрашиваю собственное доменное имя маршрутизатора.

Вы увидите, что он вернет доменное имя, как его видит ваш DNS/маршрутизатор. Есть разные способы отключить это в маршрутизаторе, но я обнаружил, что самый простой способ — просто использовать другой DNS.

Связанный контент