Принудительно использовать IPv4-адрес

15

Я обновил свой Raspberry Pi до Джесси, которая использует systemd. Одним из побочных эффектов является то, что он подключается только по IPv6 и не имеет адреса IPv4. Как я могу заставить его получить IPv4-адрес от DHCP-сервера?

Одним из специальных решений является команда

sudo dhclient -4 -v eth0

но это длится только для текущей сессии.

Джон Смит
источник
Ни один из приведенных ниже ответов не работал для меня, вместо этого мне нужно было sudo apt-get install isc-dhcp-clientпосле использования, sudo dhclient -4 -v eth0чтобы выйти в Интернет.
mrswadge
Некоторый дополнительный контекст к моему предыдущему комментарию. В моей ситуации симптомы при запуске sudo ifup -v eth0вызова dhclient не сработали и вместо этого отображались сведения об использовании.
Mrswadge

Ответы:

9

У Raspbian Jessie больше нет файла с именем /etc/sysctl.d- теперь это папка с тем же именем.

Согласно файлу read-me в той же папке, README.sysctlон в основном говорит, что любой .confфайл будет считан во время загрузки и обработан. Любое законное имя файла будет работать, но они предложили local.conf, вот что я использовал.

Я создал /etc/sysctl.d/local.confи добавил единственную строку из других ответов:

net.ipv6.conf.all.disable_ipv6=1

Это, кажется, работает просто отлично.

Джим
источник
Все, что .dв нем /etcникогда не было, кроме каталога, с которого можно начать. Я не знаю, если ответ Джо Платано включает опечатку или это действительно сработает, почему-то я сомневаюсь в этом (хотя, кажется, есть другой ответ, подтверждающий, что это будет).
Златовласка
2

Вы можете вставить строку в sysctl, чтобы отключить ipv6.

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

это будет работать после следующей перезагрузки.

Джо Платано
источник
Это /etc/sysctl.conf в качестве целевого файла. Имейте в виду, что> переопределит весь файл!
Дэвид
2

В Raspbian Jessie / Jessie Lite просто отредактируйте /etc/sysctl.confфайл и добавьте переключатель для отключения ipv6 следующим образом:

sudo nano /etc/sysctl.conf

Введите текст:

net.ipv6.conf.all.disable_ipv6=1

Сохраните файл с Ctrl-O, Ctrl-Xи перезагрузите RPI.

guitarpicva
источник
2

sudo nano /etc/sysctl.conf

добавьте следующие строки, чтобы отключить ipv6:

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

запустить, sudo sysctl -pчтобы вступить в силу или просто перезагрузиться.

AlexOnLinux
источник
1

Самый простой способ получить адрес IPv4 для интерфейса - это изменить / etc / network / interfaces: установить для руководства значение dhcp ... которое также дает вам адрес IPv4 для eth0 ... возможно, только взлом, но убежище ' Ничего лучшего пока не нашел ...

    auto eth0
    allow-hotplug eth0
    # iface eth0 inet manual
    iface eth0 inet dhcp
Ghosty
источник
Raspbian Jessie не использует dhcp(если пользователь действительно не поиграл с ним), и это помешало бы работе поддержки GUI WiFi.
Милливэйс
1

Объединение, исправление и добавление к предыдущим ответам:

Чтобы исправить интерфейс (eth или wlan), который показывает только адрес inet6 (IPV6) и адрес inet (IPV4), вы можете добавить файл конфигурации, чтобы отключить назначение inet6 (IPV6), чтобы все интерфейсы получали inet (IPV4) адрес. Если этот файл конфигурации затем снова удаляется, интерфейсы получат ОБА inet (IPV4) и inet6 (IPV6), то есть возврат к обычному состоянию по умолчанию.

Чтобы добавить файл:

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

и добавьте одну строку:

net.ipv6.conf.all.disable_ipv6=1

Сохранить с помощью Ctrl-O, Y, [Return]. Перезагрузитесь и войдите снова.

sudo reboot

Проверьте адреса с помощью

ifconfig

Удалите файл конфигурации и перезагрузите компьютер:

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

Проверьте еще раз с ifconfig:

ifconfig

См. Адреса inet (IPV4) и inet6 (IPV6) для всех интерфейсов:

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

И я снова могу использовать SSH для Pi Zero, используя eth0 или wlan0, оба с использованием адреса IPV4 или IPV6.

экспериментатор
источник
1

Я обновил свой Raspberry Pi до Stretch, и у меня не было никакого успеха с любым вариантом net.ipv6.conf.all.disable_ipv6=1ответов.

Запуск вручную sudo dhclient -4 -v eth0для восстановления работоспособности подключения к сети / Интернету, однако, как указано в первоначальном постере, он не переживает перезагрузку.

Я заметил, что sudo ifup -v eth0позвонил dhclient, но он не работал и вместо правильного функционирования показывал информацию об использовании dhclientкоманды.

Обходное решение, кажется, состоит в том, чтобы отойти dhclientи вместо этого установить isc-dhcp-client. После перезагрузки мое подключение было автоматически доступно после установки этого пакета.

sudo apt-get install isc-dhcp-client
sudo reboot
mrswadge
источник
0

У меня та же проблема, и я попробовал решение ниже, это прекрасно работает после перезагрузки моего Pi.

sudo nano  /etc/sysctl.d

тип

net.ipv6.conf.all.disable_ipv6=1

сохранить с ^Oвsysctl.d

sudo reboot

Теперь я вижу свой IP4-адрес на загрузочном экране.

sns5400
источник