强制IPv4地址


15

我将Raspberry Pi升级为使用的Jessie systemd。副作用是它仅使用IPv6进行连接,而没有IPv4地址。如何强制它从DHCP服务器获取IPv4地址?

一种临时解决方案是命令

sudo dhclient -4 -v eth0

但这仅在当前会话中持续。


以下所有答案均不适用于我,相反,sudo apt-get install isc-dhcp-client在使用后我需要sudo dhclient -4 -v eth0上网。
mrswadge

我之前的评论有一些其他背景。在我的情况下,运行sudo ifup -v eth0对dhclient的调用时的症状失败,而是显示使用情况信息。
mrswadge

Answers:


9

Raspbian Jessie不再有一个名为的文件/etc/sysctl.d-它现在是一个同名文件夹

根据同一文件夹中的自述文件,README.sysctl它基本上说任何.conf文件都将在引导时被读取并进行处理。任何合法的文件名都可以使用,但是他们建议使用local.conf,所以这就是我使用的名称。

/etc/sysctl.d/local.conf从其他答案中创建并添加了单行:

net.ipv6.conf.all.disable_ipv6=1

这似乎工作正常。


凡是.d/etc从来没有什么,但一个要启动的目录。我不知道乔普拉塔诺(Joe Platano)的答案是否涉及错字或是否真的有效,我对此表示怀疑(尽管似乎还有另一个答案可以确认这一点)。
goldilocks

2

您可以在sysctl中插入一行以禁用ipv6。

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

这将在下次重新启动后起作用。


/etc/sysctl.conf作为目标文件。请注意,>将覆盖整个文件!
戴维

2

在Raspbian杰西/杰西精简版,只需编辑/etc/sysctl.conf文件,并将开关添加到禁用IPv6,如下所示:

sudo nano /etc/sysctl.conf

输入文字:

net.ipv6.conf.all.disable_ipv6=1

使用保存文件Ctrl-OCtrl-X然后重新启动RPi。


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以生效或只是重新启动。


1

我发现也获得该接口的IPv4地址的最简单方法是更改​​/ etc / network / interfaces:将手册设置为dhcp ...这也使您在eth0上获得了IPv4地址...可能只是黑客,但还没有。还没有发现更好的东西...

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

Raspbian Jessie不使用dhcp(除非用户真的摆弄了它),这将阻止GUI WiFi支持工作。
Milliways 2015年

1

合并,更正并添加到先前的答案中:

要修复仅显示inet6(IPV6)地址而没有inet(IPV4)地址的接口(eth或wlan),可以附加配置文件以禁用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,[返回]保存。重新启动并再次登录。

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

然后我可以再次使用eth0或wlan0 SSH到我的Pi Zero,两者都使用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

0

我遇到了同样的问题,并尝试了以下解决方案,重新启动Pi后可以正常使用。

sudo nano  /etc/sysctl.d

类型

net.ipv6.conf.all.disable_ipv6=1

保存^Osysctl.d

sudo reboot

现在,我在启动屏幕上看到了我的ip4地址。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.