Wymuś adres IPv4


15

Zaktualizowałem Raspberry Pi do Jessie, która korzysta systemd. Jednym z efektów ubocznych jest to, że łączy się tylko przy użyciu IPv6 i nie ma adresu IPv4. Jak mogę zmusić go do uzyskania adresu IPv4 z serwera DHCP?

Jednym z rozwiązań ad-hoc jest polecenie

sudo dhclient -4 -v eth0

ale to trwa tylko dla bieżącej sesji.


Żadna z poniższych odpowiedzi nie działała dla mnie, zamiast tego musiałem sudo apt-get install isc-dhcp-clientpo skorzystaniu sudo dhclient -4 -v eth0z internetu.
mrswadge

Dalszy kontekst do mojego poprzedniego komentarza. W mojej sytuacji objawy podczas uruchamiania sudo ifup -v eth0połączenia z dhclient nie powiodły się i zamiast tego pokazały informacje o użyciu.
mrswadge

Odpowiedzi:


9

Raspbian Jessie nie ma już pliku o nazwie /etc/sysctl.d- jest to teraz folder o tej samej nazwie.

Zgodnie z plikiem read-me w tym samym folderze, w README.sysctlzasadzie mówi, że każdy .confplik zostanie wczytany podczas rozruchu i przetworzony. Każda legalna nazwa pliku będzie działać, ale zasugerowali local.conf, więc tego właśnie użyłem.

Utworzyłem /etc/sysctl.d/local.confi dodałem jedną linię z innych odpowiedzi:

net.ipv6.conf.all.disable_ipv6=1

To wydaje się działać dobrze.


Wszystko .dw /etcnim nigdy nie było niczym innym jak katalogiem na początek. Nie wiem, czy odpowiedź Joe Platano dotyczy literówki lub czy to rzeczywiście zadziała, jakoś wątpię w to (chociaż wydaje się, że jest inna odpowiedź potwierdzająca, że ​​tak będzie).
złotowłosy

2

możesz wstawić linię do sysctl, aby wyłączyć ipv6.

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

to zadziała po następnym restarcie.


Jest to plik /etc/sysctl.conf jako plik docelowy. Pamiętaj, że> zastąpi cały plik!
David

2

W Raspbian Jessie / Jessie Lite po prostu edytuj /etc/sysctl.confplik i dodaj przełącznik, aby wyłączyć ipv6 w następujący sposób:

sudo nano /etc/sysctl.conf

Wpisz tekst:

net.ipv6.conf.all.disable_ipv6=1

Zapisz plik Ctrl-O, Ctrl-Xa ponowne uruchomienie RPI.


2

sudo nano /etc/sysctl.conf

dodaj następujące wiersze, aby wyłączyć ipv6:

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

uruchom, sudo sysctl -paby zadziałać lub po prostu uruchom ponownie.


1

najłatwiejszym sposobem, aby uzyskać adres IPv4 dla interfejsu, była zmiana / etc / network / interfaces: ustawienie instrukcji na dhcp ... która również daje ci adres IPv4 na eth0 ... prawdopodobnie tylko włamanie, ale raj ' Znalazłem coś lepszego jeszcze ...

    auto eth0
    allow-hotplug eth0
    # iface eth0 inet manual
    iface eth0 inet dhcp

Raspbian Jessie nie używa dhcp(chyba że użytkownik naprawdę się z nią bawił), a to uniemożliwiłoby obsługę GUI WiFi.
Milliways,

1

Łączenie, poprawianie i dodawanie do poprzednich odpowiedzi:

Aby naprawić interfejs (eth lub wlan), który pokazuje tylko adres inet6 (IPV6) i brak adresu inet (IPV4), możesz dołączyć plik konfiguracyjny, aby wyłączyć przypisanie inet6 (IPV6), aby wszystkie interfejsy otrzymywały inet (IPV4) adres. Jeśli plik konfiguracyjny zostanie następnie ponownie usunięty, interfejsy otrzymają ZARÓWNO adres inet (IPV4) i inet6 (IPV6), tj. Powrót do zwykłego stanu domyślnego.

Aby dodać plik:

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

i dodaj pojedynczą linię:

net.ipv6.conf.all.disable_ipv6=1

Zapisz za pomocą Ctrl-O, Y, [Return]. Uruchom ponownie i zaloguj się ponownie.

sudo reboot

Sprawdź adresy za pomocą

ifconfig

Usuń plik konfiguracyjny i uruchom ponownie:

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

Sprawdź ponownie za pomocą ifconfig:

ifconfig

Zobacz adresy inet (IPV4) i inet6 (IPV6) dla wszystkich interfejsów:

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

I znów mogę SSH do mojego Pi Zero za pomocą eth0 lub wlan0, oba używając adresu IPV4 lub IPV6.


1

Uaktualniłem mój Raspberry Pi do Stretch i nie byłem w stanie odnieść sukcesu przy żadnej odmianie net.ipv6.conf.all.disable_ipv6=1odpowiedzi.

Uruchomiony ręcznie, sudo dhclient -4 -v eth0aby przywrócić połączenie z siecią / Internetem, jednak, jak stwierdzono w oryginalnym plakacie, nie przetrwa ponownego uruchomienia.

Zauważyłem, że to sudo ifup -v eth0wywołanie dhclient, ale zawiodło i zamiast poprawnie działać, wyświetlało informacje o użyciu dhclientpolecenia.

Obejściem wydaje się być odejście od dhclientinstalacji i instalowanie jej isc-dhcp-client. Po ponownym uruchomieniu moja łączność była automatycznie dostępna po zainstalowaniu tego pakietu.

sudo apt-get install isc-dhcp-client
sudo reboot

0

Mam ten sam problem i wypróbowałem poniższe rozwiązanie, działa to dobrze po ponownym uruchomieniu mojego Pi.

sudo nano  /etc/sysctl.d

rodzaj

net.ipv6.conf.all.disable_ipv6=1

oszczędzaj z ^Odosysctl.d

sudo reboot

Teraz widzę mój adres IP4 na ekranie rozruchowym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.