我在 Raspberry Pi 上运行 ubuntu server 19.10。我的 pi 连接到 wifi 路由器和以太网交换机,接口名称分别为 wlan0 和 eth0。
我想为我的 wlan0 连接创建一个静态 IP 地址。我习惯使用 raspbian,这是我第一次认真尝试 ubuntu 服务器。
当我查看时/etc/netplan/
,有一个 yml 文件,其内容如下:
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
由于这里没有提到 wlan0,我假设 ubuntu 没有为 wlan0 运行 dhcp 客户端。因此,我安装了 dhcpcd5 并将其配置为请求静态 ip 地址 (192.168.1.202)。但是,wifi 路由器现在似乎为我的设备提供了两个 ip 地址;一个是我在 /etc/dhcpcd.conf 中请求的,另一个一定是(我认为)通过 netplan 请求的。当我尝试 ssh 连接到设备时,这两个都有效。
我想弄清楚为什么我会得到两个地址以及如何防止这种情况。当我从 打印出与 dhcp 相关的行时/var/log/syslog
,我得到了以下内容:
... dhcpcd[1173]: wlan0: carrier acquired
... dhcpcd[1173]: wlan0: IAID eb:25:ec:d9
... dhcpcd[1173]: wlan0: adding address XXX
... dhcpcd[1173]: wlan0: IAID eb:25:ec:d9
... dhcpcd[1173]: wlan0: adding address XXX
... NetworkManager[1162]: <info> [1573233133.0889] dhcp4 (wlan0): activation: beginning transaction (timeout in 45 seconds)
... dhcpcd[1173]: wlan0: probing address 192.168.1.202/24
... dhcpcd[1173]: wlan0: probing address 192.168.1.202/24
... NetworkManager[1162]: <info> [1573233133.1426] dhcp4 (wlan0): state changed unknown -> bound
... dhcpcd[1473]: wlan0: using static address 192.168.1.202/24
... dhcpcd[1473]: wlan0: adding route to 192.168.1.0/24
... dhcpcd[1473]: wlan0: no IPv6 Routers available
因此,dhcpcd5 似乎正常运行,但随后出现了来自 的意外条目NetworkManager
。dhcp4
此外,当我尝试 时ifconfig wlan0
,我发现我的设备认为其 wlan0 ip 地址不是我通过 dhcpcd5 请求的地址,这很令人惊讶,因为我最近的日志表明它正在将该路由添加到我的 wifi 路由器,但随后它似乎没有将结果本地写入我的设备。
我将非常感谢这里的澄清,即:
1a. 为什么 netplan 没有显示 wlan0 的信息/etc/netplan/*
?
1b. 如何禁用 netplan 的 dhcp4 服务?
- 欢迎就如何最好地设置静态 IP 地址提出一般性建议。在 ubuntu 上安装 dhcpcd5 来代替其原生设置是不是一个坏主意?等等。
答案1
NetworkManager 不是服务器映像的一部分,包括 19.10 raspi 预装的服务器映像。因此看起来您已经自行安装了它,这就是它在 wlan 接口上为您获取地址的原因。
至于ifconfig wlan0
不显示地址,ifconfig
这是一个弃用的工具,它不显示接口上的多个地址,只显示分配的第一个地址。如果您ip addr show
改为运行,您可能会看到两个地址都在接口上。
可以单独使用 netplan 来管理你的 wlan0 接口;请参阅https://netplan.io/examples有关详细信息。但是,如果您需要从 DHCP 服务器请求特定 IP 地址(您的“静态 IP 地址”),则不支持。我建议使用实际的静态 IP 地址(通过使用本地分配的地址,该地址不在 DHCP 服务器的池范围内),或者让 DHCP 服务器分配地址。大多数 DHCP 服务器实现都是有状态的,每次客户端请求时都会将相同的 IP 地址返回给客户端。