Fedora 26 e nomes de domínio totalmente qualificados?

1

Eu instalei o Fedora 26 para testes no GCC 7. O F26 é instalado em uma VM VirtualBox de 64 bits. Eu executei os seguintes comandos para configurar o sistema após a instalação e, em seguida, reiniciei:

localhost:~$ sudo hostnamectl set-chassis desktop
localhost:~$ sudo hostnamectl set-deployment production
localhost:~$ sudo hostnamectl set-hostname --static --transient --pretty asus-f26-x64.

Após o logon, o nome do host é:

asus-f26-x64:~$ hostname
asus-f26-x64

Parece que o nome de domínio totalmente qualificado foi ignorado. Os nomes de domínio totalmente qualificados terminam em ponto ( . ) e significam o topo da árvore DNS. Veja também TCP / IP Illustrated, Volume I de Steven .

Como defino um nome de domínio totalmente qualificado como o nome do host?

Um problema relacionado é que o host não registra seu nome no meu servidor DHCP. Não vejo uma opção para enviar o nome do host na hostnameclt man page .

Acho que o problema do nome do DHCP está relacionado ao problema do FQDN, pois a máquina não precisa de um nome de um servidor DHCP, mas o host não percebe isso porque o FQDN está sendo mal utilizado.

Como faço para instruir a máquina para enviar seu nome de host?

Abaixo está a partir de hostnamectl status . As coisas são um pouco piores porque o ponto está sendo interpretado como um tipo de adorno para o nome bonito; e não ser reconhecido como um FQDN.

$ hostnamectl status
   Static hostname: asus-f26-x64
   Pretty hostname: asus-f26-x64.
         Icon name: computer-desktop
           Chassis: desktop
        Deployment: production
        Machine ID: 3d914cf11226f83093acc
           Boot ID: 21fb5dabfd6a0c24ba8f2
    Virtualization: oracle
  Operating System: Fedora 26 (Workstation Edition)
       CPE OS Name: cpe:/o:fedoraproject:fedora:26
            Kernel: Linux 4.11.9-300.fc26.x86_64
      Architecture: x86-64
    
por jww 14.07.2017 / 08:02

2 respostas

3

Se você olhar para o código-fonte hostnamectl aqui , verá que hostnamectl usará a função set_hostname para executar a ação.

Um comentário dessa seção diz o seguinte (ênfase minha):

Now that we set the pretty hostname, let's clean up the parameter and use that as static hostname. If the hostname was already valid as static hostname, this will only chop off the trailing dot if there is one. If it was not valid, then it will be made fully valid by truncating, dropping multiple dots, and dropping weird chars. Note that we clean the name up only if we also are supposed to set the pretty name. If the pretty name is not being set we assume the user knows what he does and pass the name as-is.

De fato, se você verificar o method_set_static_hostname aqui , onde tenta definir o hostname estático, a parte relevante é assim:

if (!hostname_is_valid(name, false))
    return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid static hostname '%s'", name);

A assinatura da função hostname_is_valid é esta:

bool hostname_is_valid(const char *s, bool allow_trailing_dot) _pure_;

Você verá então que hostname_is_valid é chamado com o allow_trailing_dot arugment como false - assim, systemd e hostnamectl não permitem o ponto final no hostname estático.

EDIT: Bem, a discussão sobre este assunto pode ser encontrada aqui . AFAIK, isso funciona "como pretendido" - o ponto final é opcional. Há argumentos a favor e contra, mas não vou entrar nisso aqui.

Então - você não pode fazer isso através da ferramenta hostetectl do systemd, ...

No entanto, você pode adicionar o ponto final ao arquivo /etc/hostname e, em seguida, ele será exibido na saída de hostnamectl .

Claro, se você usar hostnamectl ou qualquer outra ferramenta para definir o nome do host em algum ponto no futuro, ele irá sobrescrever isso.

    
por 14.07.2017 / 08:38
0

É muito raro que ferramentas como essa usem um ponto final (impresso) (mesmo que seja aceito).
Para obter um nome totalmente qualificado, que deve ser impresso com isto:

$ hostname -f
asus-f26-x64.example.com

Você precisa criar /etc/resolv.conf (ou equivalente no fedora) para ter uma linha de domínio:

domain example.com.

Mas entenda que não é possível ter um fqdn de apenas um rótulo:

asus-f26-x64

Esse poderia ser o nome do computador, um rótulo. Mas você precisa de algum outro rótulo (ou rótulos, texto limitado por pontos) para funcionar como um domínio (como exemplo). E como a internet tem sua própria lista de TLD na Internet que também deve ser adicionada. Assim, o fqdn deve ser algo como:

asus-f26-x64.company.domain.net.
    
por 14.07.2017 / 08:25