我在 Raspberry Pi 上运行 Alpine Linux。我尝试设置静态 IP 地址。因此,我将/etc/network/interfaces
文件内容从
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
到
auto lo
iface lo inet loopback
address 192.168.0.137
netmask 255.255.255.0
gateway 192.168.0.1
文件的内容/etc/resolv.conf
是
nameserver 8.8.8.8
之后我跑
ifdown eth0
ifup eth0
而且我没有网络。无论我做什么,都无法连接任何东西。我甚至无法 ping 通路由器。但如果我重新启动设备,突然间一切都可以使用新的 IP 地址。当我尝试切换回 DHCP 时也是如此。
所以我的问题是 - 有人知道为什么新 IP 地址在重启后有效,但在其他情况下无效吗?重启期间发生了什么有帮助的事情,而重新加载界面时不会发生这种情况?我想让它在不重启的情况下工作。谢谢!
附加信息
我能够在我朋友的网络上测试它,看起来它在那里工作得很好。需要一段时间才能赶上,但最终我可以连接到网络和一切。这似乎与我的路由器有关,尽管我不知道它是什么。我有 TP-Link Archer C5。
附加信息 2
我按照这里的建议尝试了 ifconfig,一开始我以为它有效,因为我获得了新的 IP 地址并且能够在 LAN 中通信。但后来我发现我仍然无法连接到互联网。
答案1
如果不调试启动过程,很难说出问题背后的原因,但是,这些是我最好的猜测:
- RaspberryPi 3 及以下版本的网卡通过 USB 连接到主板。Ifdown 可能导致它进入一种能量状态,除非重新启动,否则无法恢复(这可能不是原因)。
- Alpine 发行版移植到 Raspberry 时效果不佳,并且 ifdown 无法正确关闭网卡,导致其处于不可恢复的状态(无论是电气状态还是逻辑状态)
可能的解决方案:
重新启动网络服务。不过,正如你所说,它在这种情况下不起作用,因为它依赖于 ifdown / ifup
命令:
sudo systemctl restart networking
使用 ipconfig 配置您的网卡,无需使用 ifdown / ifup。此设置在重启时会丢失,因此您仍需要手动修改文件。
sudo ifconfig eth0 192.168.0.137 netmask 255.255.255.0 broadcast 192.168.0.1
答案2
我觉得你的/etc/network/interfaces
看起来不对。试试这个
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.137
netmask 255.255.255.0
gateway 192.168.0.1
这将您的本地主机定义为环回接口,并定义eth0
为具有与您的问题相同的地址、网络掩码和网关的静态接口。