Como faço para definir um IP estático no Ubuntu?

56

Sou novo no Linux, tenho anos de experiência com servidores / desktops Windows e estou com problemas para definir um IP estático. Estou usando um método usado para versões anteriores do Ubuntu, que parece não funcionar com o 16.04

Eu usei o comando sudo nano /etc/network/interfacee adicionei o seguinte

iface enp0s25 inet static
address 10.10.8.2
netmask 255.255.0.0
gateway 10.10.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Reiniciei o sistema e a Ethernet está praticamente morta, o ping não funciona. Eu tentei modificar /etc/NetworkManager/NetworkManager.confe fiz as seguintes alterações

#dns=dnsmasq (comment out the dnsmasq)
[ifupdown]
managed=true (changed from false)

Com isso, posso fazer com que a Ethernet funcione esporadicamente, mas eventualmente falha.

Eu tentei essa configuração em duas outras máquinas, além de uma máquina virtual, e todas têm os mesmos resultados. Posso confirmar que essas configurações funcionam bem quando instalo o Windows em qualquer uma dessas máquinas. Além disso, quando deixo o DHCP configurar automaticamente, tudo funciona bem, sem problemas.

Eu acho que estou perdendo alguma coisa aqui, configurar um IP estático não deve ser nada difícil.

TeeStar
fonte
a única coisa que eu aviso e pode ter sido apenas um erro de digitação aqui, mas eu mudaria o Dns-nameserversque dns-nameserversprovavelmente não vai fazer nada para resolver este problema, mas pode parar de outras questões de acontecer
John Orion
11
DNS-nameservers é aceitável quanto à sintaxe, portanto não deve ser um problema. Quando estava trabalhando com o DHCP, você executou um ifconfigpara verificar o nome da interface ou supôs que fosse enp0s25? Você também tem um auto enp0s25no topo do seu arquivo de configuração? Se você não conseguir, a interface simplesmente não está sendo inicializada.
Andrew
Edite sua pergunta e publique o conteúdo exato do seu /etc/network/interfacesarquivo. Ao editar sua mensagem, destaque o texto deste arquivo e clique no {}link do código na parte superior do editor de mensagens para que ele formate corretamente o texto, facilitando a leitura do conteúdo. Execute também este comando ip addresse execute as mesmas etapas para {}(formato de código) dessa saída.
LD James

Respostas:

83

Eu tive o mesmo problema e esta foi a minha solução:

sudo nano /etc/network/interfaces

e cole (alterando para sua rede) isso em # The primary network interface:

auto enp0s25
iface enp0s25 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.4.4 8.8.8.8

Você pode obter o nome correto da interface usando o comando Terminal ifconfig -ano ubuntu 16.04 ou ip address18.04+

Desligue sua máquina virtual e depois !!! Vá para as configurações de rede e clique no botão Atualizar endereço MAC algumas vezes :)

insira a descrição da imagem aqui

e inicie sua VM e você deve ter internet!

ATUALIZAÇÃO 20.02.2019

Para o ubuntu 18.04+, você precisa editar este arquivo

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.55/24]
            gateway4: 192.168.0.1
            dhcp4: no
            nameservers:
              addresses: [1.1.1.1,8.8.8.8]
            optional: true
    version: 2
lewis4u
fonte
2
Muito obrigado, agradeço. Parece funcionar agora, sem problemas. É muito sólido agora!
TeeStar
Além da dns-nameserverscorreção, eu tive que usar essa correção: askubuntu.com/questions/574569/… Meu ISP é monkeybrains.net.
BSalita
56

Definir o endereço IP estático como acima na resposta aceita aqui funciona, mas é necessário liberar a configuração antiga do endereço IP e reiniciar o networking.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Em seguida, verifique se está correto:

ip add
Conceder
fonte
2
A liberação foi necessária para evitar que o endereço antigo estivesse presente na interface (com base em ip addr). O reinício systemctl funciona também, embora ifdowne ifupna interface irá trabalhar de forma mais seletiva.
RichVel
2
thx @Grant. adicionar flush fez este trabalho
Paweł Madej
3
No Ubuntu 16.04, é necessária uma liberação mais recente!
Diego Duarte
5

sudo vim /etc/network/interfaces

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

sudo ifdown eth0 && sudo ifup eth0

lanni654321
fonte
9
Olá @ lanni654321, talvez você deva editar sua resposta e adicionar algumas palavras, explicando brevemente o que está fazendo e por quê? Eu acho que isso tornaria sua resposta ainda mais útil. O que você acha?
Tshilidzi Mudau
5
# interfaces(5) file used by ifup(8) and ifdown(8)
# auto lo
# iface lo inet loopback
auto enp2s0 
iface enp2s0 inet static
    address 172.16.9.124
    netmask 255.255.240.0
    gateway 172.16.0.9
dns-nameservers 8.8.8.8
rajan
fonte
11
ifcace deve ser iface na linha 5
twoleggedhorse
@twoleggedhorse: Corrigido o erro de digitação para a resposta, mas eu tive que adicionar um pouco #na primeira linha, porque você não pode ter uma edição sem pelo menos 6 mudou caracteres que não são espaços em branco
Andrei Rînea
3

Eu tive o mesmo problema e a solução "era" simplesmente ... para mim, pelo menos.

auto ens160
iface ens160 inet static
address 172.31.0.164/22
netmask 255.255.252.0
gateway 172.31.0.2
network 172.31.0.0
broadcast 172.31.3.255
dns-nameservers 172.31.0.21 172.31.0.18

#Add internal route
up route add -net 172.16.168.0/21 gw 172.31.0.20 dev ens160

E, crie um arquivo vazio com o nome da interface de rede em:

~$ touch /etc/network/interfaces.d/ens160

Funciona...

Manu
fonte
2

Eu tive o mesmo problema e esta foi a minha solução: Remova todas as linhas vazias no final do arquivo /etc/network/interface.

AkYu
fonte
0

Eu costumava definir IPs estáticos nas minhas máquinas Ubuntu e, em seguida, notei que era possível atribuir o endereço IP usando o meu roteador. Esta pode ser a solução mais simples. Basta fazer login no seu roteador, encontrar os dispositivos conectados e atribuir o endereço IP lá.

Ole
fonte
0

Se o seu servidor estiver mostrando esse IP antigo e o novo IP atribuído, basta reiniciar o servidor. Ele liberará automaticamente o IP antigo e persistirá com o novo.
E se você não deseja reiniciar o servidor, use este comando:


sudo ip addr flush <your-interface-here>

Raios solares
fonte
0

Execute estes comandos simples para verificar se as interfaces de rede estão configuradas para aparecer quando a máquina inicializar / reiniciar.

grep "auto" /etc/network/interfaces

Se nenhuma linha for impressa na saída padrão, abra /etc/network/interfacescom um editor de texto (vi, nano, sed) e esperamos que você veja algo semelhante à imagem abaixo.

Um arquivo / etc / network / interfaces padrão

Obviamente, se grepnão retornou nenhuma linha para a janela do terminal, o formato de suas / etc / network / interfaces não pode ser muito semelhante. :-) No entanto, siga o formato das linhas automáticas .

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

====================

Agora, na sua máquina .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Não sabe quais nomes de interface estão disponíveis? Execute este comando.

ifconfig -a

O comando a seguir retornará apenas os nomes das interfaces de rede.

ifconfig -a | grep encap | awk {'print $1'}

insira a descrição da imagem aqui

Anthony Rutledge
fonte