每次重新启动 Raspberry Pi 时,我的静态 IP 地址设置都会被清除。
我刚刚在 Raspberry Pi 3 上安装了Ubuntu Core,但我一直在努力建立一个 wifi 静态 IP 地址。
以下是我经历的步骤:
- 登录到 Pi 后,我执行了sudo classic
执行sudo nano /etc/network/interfaces并添加以下内容:
源目录 /etc/network/interfaces.d
auto wlan0 iface wlan0 inet static address 192.168.0.30 broadcast 192.168.0.255 netmask 255.255.255.0 gateway 192.168.0.1
保存文件并执行sudo ifup wlan0
此时,当我执行ifconfig时,可以在wlan0下看到 IP 地址和其他设置。挥拳庆祝。
我执行exit以返回快照,然后执行sudo reboot以重新启动 Pi。我还立即从 Pi 远程连接以太网电缆,以便 wifi 可以处理 Internet 要求。
这就是我的问题开始的地方。
我检查了我的路由器 IP 地址列表,但我的静态 IP 不包括在内。
我重新登录我的 Pi 并再次执行ifconfig , wlan0的 IP 地址和其他设置不再存在。
wifi ID 和密码包含在/etc/wpa_supplicant/wpa_supplicant.conf文件中,内容如下:
network={
ssid="SKY8317B"
psk="TRUMBOX"
key_mgmt=WPA-PSK
}
如果我的静态 IP 地址无法持续存在,我将非常感谢您在解决此问题方面的帮助。
更新#1:以下是基于@chili555 非常有用的输入的详细调试输出
sudo ifdown wlan0 && sudo ifup -v wlan0
ifdown: interface wlan0 not configured
Reading directory /etc/network/interfaces.d
Configuring interface wlan0=wlan0 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/bridge
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
wpa_supplicant: wpa-driver nl80211,wext (default)
wpa_supplicant: /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -C /run/wpa_supplicant
Starting /sbin/wpa_supplicant...
wpa_supplicant: creating sendsigs omission pidfile: /run/sendsigs.omit.d/wpasupplicant.wpa_supplicant.wlan0.pid
wpa_supplicant: ctrl_interface socket located at /run/wpa_supplicant/wlan0
wpa_supplicant: configuring network block -- 0
wpa_supplicant: wpa-ssid "SKY8317B" -- OK
wpa_supplicant: wpa-psk ***** -- OK
wpa_supplicant: enabling network block 0 -- OK
/bin/ip addr add 192.168.0.30/255.255.255.0 broadcast 192.168.0.255 dev wlan0 label wlan0
/bin/ip link set dev wlan0 up
/bin/ip route add default via 192.168.0.1 dev wlan0 onlink
/bin/run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/000resolvconf
run-parts: executing /etc/network/if-up.d/openssh-server
run-parts: executing /etc/network/if-up.d/ubuntu-fan
run-parts: executing /etc/network/if-up.d/upstart
run-parts: executing /etc/network/if-up.d/wpasupplicant
更新#2:
执行结果 => lsb_release -d:
Description: Ubuntu 16.04.4 LTS
执行结果 => cat /etc/netplan/*:
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
all-eth:
match:
name: "eth*"
dhcp4: true
更新#3:
在我在 Internet 上的旅行中,我在某处发现了一个帖子,上面说手动对/etc目录进行的更新不会持续存在。当时我选择不相信这一点,但我只是发现了sudo console-conf命令,这似乎是内置的解决方案。
使用该命令,您可以提供 wifi SSID 和密码。重置 Pi 并重新登录表明我提供的设置仍然存在。
要提供的另一个设置是静态 IPv4 数据,但我不知道如何设置该信息,即CIDR 格式的子网。下面是我尝试设置的屏幕截图:
您没有指定要连接的 SSID(通常是路由器),没有提供 WPA2 密码,没有提供 DNS 名称服务器,最后,广播声明是不必要的。我建议您将文件修改为:
重启界面:
查看:
你应该准备好了。
这花了很长时间才弄清楚。
我只能猜测Ubuntu Core做的事情与以前版本的 Ubuntu 和 Raspbian 不同。否则,像我在原始帖子中所做的那样编辑/etc/network/interfaces文件应该可以工作。
我要衷心感谢chili555为帮助我解决这个问题所做的一切努力。
解决方案:
Ubuntu Core 运行 SNAP 包管理器。我假设它是负责sudo console-conf命令的 SNAP。执行后,您应该会看到类似以下内容:
在突出显示的 OK 按钮上按 enter,您将可以访问网络连接区域:
在此区域中,与console-conf下的所有其他区域一样,您可以使用箭头键导航到感兴趣的部分。wlan0,无线网卡#1,我很感兴趣,所以我在屏幕截图中突出显示了它。然后,我按回车。
注意配置 WIFI 设置菜单。当您在突出显示该菜单的情况下按 Enter 键时,生成的界面就是您设置 wifi SSID 和密码的地方。
这同样适用于我设置静态 IP 地址的尝试。只需按一次向下箭头即可进入使用静态 IPv4 配置,然后按 Enter 以提供您希望让 Pi wifi 可访问的 IP 详细信息。
子网掩码给我带来了很多麻烦。我不是网络工程师,我认为它应该是255.255.255.0/?? 但菜单抱怨错误消息。以下是有效的数据(我猜到了正确的子网掩码):
我希望人们发现这段时间可以节省时间并有所帮助。