树莓派-有线无线IP设置

Posted by 周思进 on April 18, 2020

因为更换了路由器热点名称,所以设备无线无法连接,需要进行重新配置,只能先通过有线接入。

印象里设备之前有线是配置的静态ip,所有想到的是先通过bonjour协议来查找到设备ip,手机上之前有装过bonjour协议工具discovery,打开查找了下,发现设备的有线ip是新网段的ip地址,说明eth0网口是通过dhcp获取了ip地址。

不管怎样,先通过该ip登入了设备ssh,查看/etc/network/interfaces文件,显示之前eth0配置的的确是静态ip(实际最后确认是缺少了auto语句,具体见文末),如下

auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.1.121
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "myssid"
wpa-psk "mypw"

先只修改了下无线热点ssid和密码配置,然后重启了下网络服务

sudo service networking restart

再通过ifconfig命令查看wlan0网口已连接分配到ip地址,有线则仍旧不是配置中的静态ip地址。

通过无线ip进行ssh登入,然后对eth0网口进行ifconfig eth0 down、ifconfig eth0 up操作后,显示ip是配置中原先设置的192.168.1.121地址了, 但设备reboot重启后,eth0还是dhcp分配的31网段ip地址~


没在网上查找到具体原因,不过从文末搜索到的链接看到如下语句

For the purposes of using Jessie in a fairly simple way you can pretty much ignore the interfaces file and work with dhcpcd.conf and wpa_supplicant.conf.

可以在/etc/dhcpcd.conf配置静态ip,如果有注意文件/etc/network/interfaces开头的那几行,也是有说明~

通过lsb_release -a命令查看显示设备linux系统也正式Jessie

image

先通过man dhcpcd.conf命令查看帮助手册,直接查找static关键字,可以看到手册中给的例子:

interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

修改成自己对应路由器的ip信息后添加到/etc/dhcpcd.conf文件,这样修改重启后有线ip就是手动设置的静态ip地址。

无线ip地址如果也要设置成静态ip地址也可以在该文件进行设置配置。


无线ssid和密码也可以在wpa_supplicant.conf中进行设置,同样通过man wpa_supplicant.conf命令查看帮助手册,对于个人家庭网络基本都是WPA2加密方式,参考如下示例,修改其中的ssid(wifi名称)和psk(wifi密码),添加到/etc/wpa_supplicant/wpa_supplicant.conf文件后面即可。

# allow frontend (e.g., wpa_cli) to be used by all users in 'wheel' group
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#
# home network; allow all valid ciphers
network={
    ssid="home"
    scan_ssid=1
    key_mgmt=WPA-PSK
    psk="very secret passphrase"
}

修改配置文件后,需要重启下wpa服务,可以先看看系统原本执行方式,通过命令ps -ef | grep wpa进行查看,显示如下:
image

根据man wpa_supplicant手册里查看的选项说明,只需替换下-C选项,其它选项保持不变,先kill原有wpa进程,再起新的进程,具体命令如下:

killall wpa_supplicant
/sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wlan0.pid -i wlan0 -D nl80211,wext -c /etc/wpa_supplicant/wpa_supplicant.conf

稍等一会,通过iconfig命令查看wlan0分配到ip地址了。

然后需要再打开/etc/network/interfaces配置文件,修改下起wifi的方式,否则重启设备,系统仍旧是执行的前面截图的命令,而不会以配置中指定的ssid去进行连接,再修改配置的过程中发现,之前eth0不生效的原因原来是少了auto eth0语句… 不管怎么样,还是都按新的方式修改了,具体如下:

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

重启后有线固定ip,无线也连接上,并通过dhcp动态分配。


当然如果嫌上面分开配置麻烦,统一都在/etc/network/interfaces文件修改也可以

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.121
netmask 255.255.255.0
gateway 192.168.1.1

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid "myssid"
wpa-psk "mypw"

设备为了方便后续登入,所以一般会设置成静态ip,这样也方便将登入命令以简短的别名形式执行,比如在bash_profile文件里增加如下语句:
alias pi=ssh [email protected]


附加阅读链接:
https://raspberrypi.stackexchange.com/questions/39785/differences-between-etc-dhcpcd-conf-and-etc-network-interfaces