Forcer l'adresse IPv4

15

J'ai mis à niveau mon Raspberry Pi vers Jessie, qui utilise systemd. Un effet secondaire est qu'il se connecte en utilisant IPv6 uniquement et n'a pas d'adresse IPv4. Comment puis-je le forcer à obtenir une adresse IPv4 du serveur DHCP?

Une solution ad hoc est la commande

sudo dhclient -4 -v eth0

mais cela ne dure que pour la session en cours.

John Smith
la source
Aucune des réponses ci-dessous n'a fonctionné pour moi, au lieu de cela, j'en avais besoin après sudo apt-get install isc-dhcp-clientavoir utilisé sudo dhclient -4 -v eth0pour me connecter.
mrswadge
Un contexte supplémentaire à mon commentaire précédent. Dans ma situation, les symptômes lors de l'exécution de sudo ifup -v eth0l'appel à dhclient échouaient et affichaient plutôt les informations d'utilisation.
mrswadge

Réponses:

9

Raspbian Jessie n'a plus de fichier appelé /etc/sysctl.d- c'est maintenant un dossier du même nom.

Selon le fichier Lisez-moi dans le même dossier, README.sysctlil indique essentiellement que tout .conffichier sera lu au démarrage et traité. Tout nom de fichier légal fonctionnera, mais ils ont suggéré local.conf, c'est donc ce que j'ai utilisé.

J'ai créé /etc/sysctl.d/local.confet ajouté la ligne unique à partir des autres réponses:

net.ipv6.conf.all.disable_ipv6=1

Cela semble fonctionner très bien.

Jim
la source
Tout ce qui .den /etcn'a jamais été autre chose qu'un répertoire pour commencer. Je ne sais pas si la réponse de Joe Platano implique une faute de frappe ou si cela fonctionnera réellement, en quelque sorte j'en doute (bien qu'il semble y avoir une autre réponse confirmant que ce sera le cas).
goldilocks
2

vous pouvez insérer une ligne dans sysctl pour désactiver ipv6.

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

cela fonctionnera après le prochain redémarrage.

Joe Platano
la source
C'est /etc/sysctl.conf comme fichier cible. Sachez que le> remplacera tout le fichier!
David
2

Dans Raspbian Jessie / Jessie Lite, modifiez simplement le /etc/sysctl.conffichier et ajoutez le commutateur pour désactiver ipv6, comme suit:

sudo nano /etc/sysctl.conf

Entrez le texte:

net.ipv6.conf.all.disable_ipv6=1

Enregistrez le fichier avec Ctrl-O, Ctrl-Xpuis redémarrez l'IPD.

guitarpicva
la source
2

sudo nano /etc/sysctl.conf

ajoutez les lignes suivantes pour désactiver ipv6:

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

exécuter sudo sysctl -ppour prendre effet ou simplement redémarrer.

AlexOnLinux
la source
1

la manière la plus simple que j'ai trouvée pour obtenir également une adresse IPv4 pour l'interface était de changer / etc / network / interfaces: définir le manuel sur dhcp ... qui vous permet également d'obtenir une adresse IPv4 sur eth0 ... probablement seulement un hack mais un havre '' t rien trouvé de mieux encore non plus ...

    auto eth0
    allow-hotplug eth0
    # iface eth0 inet manual
    iface eth0 inet dhcp
Fantôme
la source
Raspbian Jessie ne l'utilise pas dhcp(à moins que l'utilisateur ne l'ait vraiment tripoté) et cela empêcherait la prise en charge du WiFi GUI.
Milliways
1

Combiner, corriger et ajouter aux réponses précédentes:

Pour corriger une interface (eth ou wlan) qui affiche uniquement une adresse inet6 (IPV6) et aucune adresse inet (IPV4), vous pouvez ajouter un fichier de configuration pour désactiver l'affectation inet6 (IPV6), afin que toutes les interfaces reçoivent un inet (IPV4). Si ce fichier de configuration est ensuite supprimé à nouveau, les interfaces recevront à la fois une adresse inet (IPV4) et une adresse inet6 (IPV6), c'est-à-dire un retour à l'état par défaut habituel.

Pour ajouter le fichier:

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

et ajoutez la seule ligne:

net.ipv6.conf.all.disable_ipv6=1

Enregistrez avec Ctrl-O, Y, [Retour]. Redémarrez et reconnectez-vous.

sudo reboot

Vérifiez les adresses à l'aide

ifconfig

Supprimez le fichier de configuration et redémarrez:

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

Vérifiez à nouveau avec ifconfig:

ifconfig

Voir les adresses inet (IPV4) et inet6 (IPV6) pour toutes les 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

Et je peux à nouveau me connecter SSH à mon Pi Zero en utilisant eth0 ou wlan0, les deux utilisant l'adresse IPV4 ou IPV6.

ExperiMentor
la source
1

J'ai mis à niveau mon Raspberry Pi vers Stretch et je n'ai pas pu réussir avec une variation des net.ipv6.conf.all.disable_ipv6=1réponses.

Courir manuellement sudo dhclient -4 -v eth0pour que ma connectivité réseau / Internet fonctionne à nouveau, mais comme indiqué par l'affiche originale, il ne survit pas à un redémarrage.

J'ai remarqué que sudo ifup -v eth0appelédhclient , mais il échouait et au lieu de fonctionner correctement, il montrait les informations d'utilisation de la dhclientcommande.

La solution de contournement semble être de s'éloigner dhclientet d'installer à la place isc-dhcp-client. Au redémarrage, ma connectivité était automatiquement disponible après l'installation de ce package.

sudo apt-get install isc-dhcp-client
sudo reboot
mrswadge
la source
0

J'ai le même problème et j'ai essayé la solution ci-dessous, cela fonctionne bien après le redémarrage de mon Pi.

sudo nano  /etc/sysctl.d

type

net.ipv6.conf.all.disable_ipv6=1

enregistrer avec ^Opoursysctl.d

sudo reboot

Maintenant, je vois mon adresse ip4 sur l'écran de démarrage.

sns5400
la source