Como configurar um IP estático no Ubuntu Server 18.04

29

Eu já vi algumas pessoas dizendo que o arquivo para definir o IP estático ainda está /etc/network/interfaces

E eu vi outras pessoas dizendo que em 18.04 está agora /etc/netplan(o que as pessoas parecem infelizes)

Eu tentei colocar isso:

version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.9/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

No meu /etc/netplan/50-cloud-init.yamle fazendo, sudo netplan applymas isso apenas mata a conexão dos servidores com a internet.

final20
fonte
É uma área de trabalho ou um servidor?
user68186
Esta é uma nova instalação ou atualização 18.04 de outra versão?
WinEunuuchs2Unix
Desculpe, eu deveria ter dito isso no texto, é uma nova instalação do servidor 18.04.
final20
A solução mais simples para mim foi especificar um endereço IPv4 estático durante a instalação (junto com sub-rede, gateway etc.). Basta preencher alguns campos do assistente, sem mexer nos arquivos de configuração.
Uwe Keim
Você também pode fazer isso em roteadores. As etapas são auto-explicativas na configuração do roteador.
EODCraft Staff

Respostas:

13

Isso define uma instrução IP estática no Ubuntu-Server 18.04

$ sudo nano /etc/netplan/50-cloud-init.yaml

Em seguida, substitua sua configuração, por exemplo, as seguintes linhas:

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
     dhcp4: no
     addresses: [192.168.1.137/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]

Aplicar mudanças:

$ sudo netplan apply

Caso você encontre alguns problemas, execute:

$ sudo netplan --debug apply

[ NOTA ]:

  • /24 é equivalente a 255.255.255.0
  • ens160 é o seu nome Ethernet, você pode obtê-lo usando $ ifconfig
  • A configuração da interface de rede do Ubuntu 16.04 e 14.04 possui um método diferente.
  • O arquivo está no formato YAML : use espaços, sem guias.
Benyamin Jafari
fonte
não é possível
executar
OK .... Eu sou capaz de executar o ping depois de fazerservice networking restart
user2763554
1
Eu não faria isso, já que esse arquivo é gerado pelo CloudInit
Ludovic Kuty
13

Todas as respostas para você editar diretamente /etc/netplan/50-cloud-init.yamlestão erradas, pois o CloudInit é usado e gerará esse arquivo. No Ubuntu 18.04.2 está claramente escrito dentro do arquivo:

$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eno1:
            dhcp4: true
    version: 2

Portanto, você não deve editar esse arquivo, mas o arquivo abaixo, /etc/cloud/cloud.cfg.d/se ainda desejar usar o CloudInit.

Outra maneira é desativar completamente o CloudInit, criando um arquivo vazio /etc/cloud/cloud-init.disabled(consulte https://cloudinit.readthedocs.io/en/latest/topics/boot.html ) e, em seguida, as outras respostas estão OK. No Ubuntu 18.04.2, eu tive que usar dpkg-reconfigure cloud-initpara permitir que ele levasse em conta o arquivo /etc/cloud/cloud-init.disabled. Eu acho isso um pouco estranho.

Sugiro que você renomeie o arquivo (não o nome correto, pois 50-cloud-init.yamlvamos pensar que ele ainda usa o CloudInit).

Você pode acabar com um nome de arquivo /etc/netplan/01-netcfg.yamlque contém a configuração abaixo. Observe o uso do networkdrenderizador em vez de NetworkManagerporque a configuração está em um servidor.

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: no
      addresses: [192.168.1.246/24]
      gateway4: 192.168.1.1
      nameservers:
         addresses: [192.168.1.1]
Ludovic Kuty
fonte
2
Isso funciona muito bem. Essa deve ser a melhor resposta. 50-cloud-init.yaml, conforme indicado, não deve ser modificado.
Relic
2
Se ainda estiver usando o CloudInit, você precisará fazer sudo cloud-init clean -ro que for necessário, conforme a resposta do veperr (pelo menos para mim no Ubuntu Server 18.04.3).
Stuart Rossiter
1
... mais a rendererlinha não é mais válida, parece (e está ausente na versão base do arquivo que você edita).
Stuart Rossiter
6

O Ubuntu 18.04 usa agora o Netplan para configurar as interfaces de rede; portanto, a configuração deve ser feita no arquivo /etc/netplan/50-cloud-init.yaml; a documentação aconselha a não mexer mais no arquivo antigo /etc/network/interfaces. Eu usei essa configuração com minha máquina virtual Ubuntu Server e ela funciona até agora, apenas verifique se as informações estão corretas; a optional: trueconfiguração supostamente acelera o tempo de inicialização, não verificando se a interface está conectada ou não; isso é o padrão; também não há necessidade de declarar valores não utilizados, por exemplo, DHCP; se estiverem ausentes, eles serão tomados como desativados; O renderizador padrão no Ubuntu Server é, networkdportanto, não há necessidade de declará-lo. Tomando as informações da sua postagem, deve ser assim:

network:
    ethernets:
        eht0:
            addresses:
            - 192.168.1.9/24
            gateway4: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
            optional: true
    version: 2

Depois de salvar o arquivo, execute sudo netplan --debug applyo debugsinalizador para gerar mais informações e pode ajudar a detectar erros. Verifique o cabo Ethernet, se estiver na revisão virtual da configuração da VM. Se estiver usando uma WLAN, li que é um pouco mais complicado de configurar, mas ainda não configurei uma máquina conectada ao WiFi com esta versão do servidor.

Se você quiser obter mais informações sobre a Netplan, existe um site, que contém alguns exemplos básicos de configuração.

https://netplan.io/

badger_8007
fonte
5

O arquivo de configuração está no formato YAML : não use TAB ao configurar o arquivo. Funciona apenas com o ESPAÇO .

Este foi o meu problema.

HubbleT
fonte
4

Eu encontrei outra maneira usando o cloud-init.

  1. Edite o arquivo /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg- o conteúdo parece ser o mesmo do / etc / netplan.
  2. limpe, reinicie e reinicialize cloud-initcom este comando:

    sudo cloud-init clean -r
    
  3. É isso aí! Seu sistema será reinicializado, reinicializará cloud-inite coletará as alterações /etc/cloud/cloud.cfg.d/50-curtin-networking.cfge as aplicará /etc/netplan/50-cloud-init.yamle tudo ficará bem. Verifique com ifconfig.

veperr
fonte
0

Essa é a configuração que faz funcionar.

$sudo nano /etc/netplan/50-cloud-init.yaml

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
  version: 2  

$sudo netplan apply

reinicie o servidor

altere eth0 para seu adaptador, encontre seu adaptador usando ifconfig.

Digerate
fonte
0

Para encontrar interfaces Ethernet disponíveis, use ip link show

Em seguida, edite o arquivo 50-cloud-init.yaml usando $sudo nano /etc/netplan/50-cloud-init.yaml

Adicione a configuração para interfaces disponíveis como eth0: e eth1:

network:
   ethernets:
     eth0:          
     addresses:
     - 192.168.1.9/24
     dhcp: false
     gateway4: 192.168.1.1
     nameservers:
        addresses:
        - 192.168.1.1
        - 8.8.8.8
        - 8.8.4.4
        search: []
     eth0:
     addresses:
     - 192.168.1.9/24
     dhcp: false
  version: 2  

Em seguida, use o comando $sudo netplan applypara aplicar as alterações.

Anand Prakash Singh
fonte
0

Como configurar um IP estático no Ubuntu Server 18.04

Em seguida, edite o arquivo 50-cloud-init.yaml usando$sudo vim /etc/netplan/50-cloud-init.yaml


network:
  ethernets:
    eno1:
        addresses:
        - 10.0.1.10/24
        dhcp4: false
        gateway4: 10.0.1.1
        nameservers:
            addresses:
            - 10.0.1.2
            search: []
version: 2

Aplicar mudanças:

$ sudo netplan apply

yousif3350
fonte
Eu não faria isso, pois esse arquivo é gerado pelo CloudInit.
Ludovic Kuty 13/03
Por que, oh, por que todos os guias para definir um IP estático na 18.04 estão me dizendo para editar um arquivo yaml que diz que é um arquivo criado dinamicamente e que não persiste? Outra piada cruel dos desenvolvedores do Ubuntu que acham que é bom apenas quebrar as coisas por padrão ...
Bigtexun 20/03
0

A configuração de rede no 18.04 é gerenciada via netplan e configurada com cloud-init. Para alterar sua configuração de rede, edite o 50-curtin-networking.cfgarquivo em /etc/cloud/cloud.cfg.d/. Se esse arquivo não existir, crie-o.

Encontre o nome da sua interface

ip address show

Edite / crie o arquivo de configuração de rede cloud-init

sudo nano /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg

Para definir um endereço IP estático, use a chave de endereços, que lista os endereços (IPv4 ou IPv6) juntamente com o comprimento do prefixo da sub-rede (por exemplo, / 24). As informações de gateway e DNS também podem ser fornecidas:

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.9/24
      gateway4: 192.168.1.1
      nameservers:
          addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]

Você pode encontrar mais opções de configuração em https://netplan.io/examples

Recarregue a configuração cloud-init. Isso irá reiniciar o servidor.

sudo cloud-init clean -r
Ryan
fonte