我有一个项目,用户可以通过以下 Web 界面更改 RPI 的网络设置:
- 无线网络配置
- DHCP 以太网
- 静态无线网络
- 静态以太网
每次选择都会重新配置dhcpcd_conf
并wpa_conf
进行相应的配置。效果非常好。
整个软件包设计为在首次启动时位于 DHCP 以太网中。但这种设计有一个缺陷,因为并非每个用户都有 DHCP 服务器。
那时我就想到做一个后备静态以太网 IP这就是我想出的:
案例 1 - DHCP 以太网
# dhcpcd_conf
interface wlan0
noipv4
noipv6
interface eth0
hostname DeviceEth
clientid
profile static_eth0
static ip_address=192.168.1.150/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
interface eth0
fallback static_eth0
# wpa_conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
正如你所看到的,我设置wlan0
为没有 IP,然后设置eth0
为 DHCP,然后将其设置eth0
为fallback profile
.
它是否正确 ?我可以在同一界面上有两种不同的设置吗?
案例 2 - DHCP WiFi:
# dhcpcd_conf
interface wlan0
hostname DeviceWiFi
clientid
interface eth0
noipv4
noipv6
profile static_eth0
static ip_address=192.168.1.150/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
interface eth0
fallback static_eth0
# wpa_conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=RO
network={
ssid="SSID"
psk="password"
}
这里我设置wlan0
为 DHCP,然后设置eth0
为 no ip,然后将其设置eth0
为fallback profile
.
这个配置正确吗?
在这两种情况下,我只希望一个接口处于活动状态,这就是为什么我将一个接口配置为 DHCP,而另一个接口配置为无 IP。
如果是无线网络配置wlan0
在后备生效后是否保持正常运行并不重要,因为用户在到达 Web 界面后很可能会配置静态 IP,并且静态配置与 DHCP 配置类似,每次仅使一个接口保持活动状态。
答案1
您不能用于fallback
在不同的界面之间切换(这似乎是情况 2 中的目标)。如果同一接口上的 dhpc 失败,则 dhcp 回退配置文件将在为其配置的接口上使用,而不是在另一个接口上的 dhcp 失败时。
不确定是否可以用于arping
此类目的(请参阅dhcpd配置文件)。想法是 ping 第一个接口并指向一个带有“no ip”的配置文件。然后,备用 MAC 地址配置文件将包含要在辅助接口上使用的静态 IP 或 DHCP。但我担心这不会可靠地工作,因为它取决于主接口何时获得 IP 地址的时间。
答案2
inform
你可以使用所说的来做到这一点这里
打开 /etc/dhcpcd.conf 以在 nano 中进行编辑。
纳米/etc/dhcpcd.conf
将以下行添加到文件底部。如果此类行已存在且未注释掉,请将其删除。
将下面框中括号中的注释替换为正确的信息。接口将为 wlan0(用于 Wi-Fi)或 eth0(用于以太网)。
interface [INTERFACE]
static_routers=[ROUTER IP]
static domain_name_servers=[DNS IP]
static ip_address=[STATIC IP ADDRESS YOU WANT]/24
在我们的例子中,它看起来像这样。
interface wlan0
static_routers=192.168.7.1
static domain_name_servers=192.168.1.1
static ip_address=192.168.7.121/24
您可能希望将最后一行的“static”替换为“inform”。使用 inform 意味着 Raspberry Pi 将尝试获取您请求的 IP 地址,但如果不可用,它将选择另一个。如果使用静态,则当请求的地址正在使用时,它将根本没有 IPv4 地址。
- 按 CTRL + X 保存文件并重新启动。
从现在开始,每次启动时,Pi 都会尝试获取您请求的静态 IP 地址。