Forçar endereço IPv4

15

Atualizei meu Raspberry Pi para Jessie, que usa systemd. Um efeito colateral é que ele se conecta usando apenas IPv6 e não possui um endereço IPv4. Como forçá-lo a obter um endereço IPv4 do servidor DHCP?

Uma solução ad-hoc é o comando

sudo dhclient -4 -v eth0

mas isso só dura a sessão atual.

John Smith
fonte
Nenhuma das respostas abaixo funcionou para mim; em vez disso, eu precisava sudo apt-get install isc-dhcp-clientdepois de usar sudo dhclient -4 -v eth0para ficar online.
Mrswadge 20/05/19
Algum contexto adicional ao meu comentário anterior. Na minha situação, os sintomas ao executar sudo ifup -v eth0a chamada para dhclient estavam falhando e mostrando as informações de uso.
Mrswadge 21/05/19

Respostas:

9

Raspbian Jessie não tem mais um arquivo chamado /etc/sysctl.d- agora é uma pasta com o mesmo nome.

De acordo com o arquivo leia-me na mesma pasta, README.sysctlbasicamente diz que qualquer .confarquivo será lido no momento da inicialização e processado. Qualquer nome de arquivo legal funcionará, mas eles sugeriram local.conf, e foi isso que eu usei.

Eu criei /etc/sysctl.d/local.confe adicionei a única linha das outras respostas:

net.ipv6.conf.all.disable_ipv6=1

Isso parece funcionar muito bem.

Jim
fonte
Qualquer coisa .dem /etcnunca foi nada além de um diretório para começar. Não sei se a resposta de Joe Platano envolve um erro de digitação ou se isso realmente funciona, de alguma forma eu duvido (embora pareça haver outra resposta confirmando que sim).
goldilocks
2

você pode inserir uma linha no sysctl para desativar o ipv6.

echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d

isso funcionará após a próxima reinicialização.

Joe Platano
fonte
É /etc/sysctl.conf como arquivo de destino. Esteja ciente de que o> substituirá o arquivo inteiro!
David
2

No Raspbian Jessie / Jessie Lite, basta editar o /etc/sysctl.confarquivo e adicionar a opção para desativar o ipv6, da seguinte maneira:

sudo nano /etc/sysctl.conf

Digite o texto:

net.ipv6.conf.all.disable_ipv6=1

Salve o arquivo com Ctrl-O, Ctrl-Xe reinicie o RPI.

guitarpicva
fonte
2

sudo nano /etc/sysctl.conf

anexe as seguintes linhas para desativar o ipv6:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

executar sudo sysctl -ppara entrar em vigor ou apenas reiniciar.

AlexOnLinux
fonte
1

a maneira mais fácil de obter um endereço IPv4 para a interface foi mudar o / etc / network / interfaces: configurar o manual para dhcp ... que também fornece um endereço IPv4 em eth0 ... provavelmente apenas um hack, mas não é o caso ' Também não encontrei nada melhor ...

    auto eth0
    allow-hotplug eth0
    # iface eth0 inet manual
    iface eth0 inet dhcp
Ghosty
fonte
O Raspbian Jessie não usa dhcp(a menos que o usuário realmente tenha brincado com isso) e isso impediria o suporte ao GUI WiFi de funcionar.
Milliways
1

Combinando, corrigindo e adicionando às respostas anteriores:

Para corrigir uma interface (eth ou wlan) que está mostrando apenas um endereço inet6 (IPV6) e nenhum endereço inet (IPV4), você pode anexar um arquivo de configuração para desativar a atribuição inet6 (IPV6), para que todas as interfaces recebam um inet Endereço (IPV4). Se esse arquivo de configuração for excluído novamente, as interfaces receberão um endereço inet (IPV4) e um inet6 (IPV6), ou seja, um retorno ao estado padrão usual.

Para adicionar o arquivo:

sudo nano /etc/sysctl.d/local.conf

e adicione a única linha:

net.ipv6.conf.all.disable_ipv6=1

Salve com Ctrl-O, Y, [Return]. Reinicie e faça login novamente.

sudo reboot

Verifique os endereços usando

ifconfig

Remova o arquivo de configuração e reinicie:

cd /etc/sysctl.d
sudo rm local.conf
sudo reboot

Verifique novamente com ifconfig:

ifconfig

Veja os endereços inet (IPV4) e inet6 (IPV6) para todas as interfaces:

eth0      Link encap:Ethernet  HWaddr 00:e0:4c:53:44:58
          inet addr:192.168.1.228  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::26a5:b629:f948:92c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:62:b4:7a
          inet addr:192.168.1.229  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::254c:3f61:fdc:bc49/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

E posso novamente SSH para o meu Pi Zero usando eth0 ou wlan0, ambos usando o endereço IPV4 ou IPV6.

ExperiMentor
fonte
1

Atualizei meu Raspberry Pi para Stretch e não consegui obter nenhum sucesso com nenhuma variação das net.ipv6.conf.all.disable_ipv6=1respostas.

A execução manual sudo dhclient -4 -v eth0para recuperar minha conectividade de rede / Internet, no entanto, conforme afirmado no pôster original, ela não sobrevive a uma reinicialização.

Notei que sudo ifup -v eth0chamou dhclient, mas estava falhando e, em vez de funcionar corretamente, estava mostrando as informações de uso do dhclientcomando.

A solução alternativa parece ser afastar-se dhcliente instalar isc-dhcp-client. Após a reinicialização, minha conectividade estava automaticamente disponível após a instalação deste pacote.

sudo apt-get install isc-dhcp-client
sudo reboot
mrswadge
fonte
0

Eu tenho o mesmo problema e tentei a solução abaixo, isso funciona bem após a reinicialização do meu Pi.

sudo nano  /etc/sysctl.d

tipo

net.ipv6.conf.all.disable_ipv6=1

salve com ^Oparasysctl.d

sudo reboot

Agora vejo meu endereço ip4 na tela inicializada.

sns5400
fonte