当 wlan0 恢复时如何使 dhclient 运行(但已经有旧地址)

当 wlan0 恢复时如何使 dhclient 运行(但已经有旧地址)

在 Devuan Chimaera Linux 上进行以下配置:

/etc/网络/接口

auto wlan0
iface wlan0 inet dhcp
        pre-up /sbin/wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
        post-down /usr/bin/killall -q wpa_supplicant

/etc/wpa_supplicant/wpa_supplicant.conf

network={
    ssid="MySSID"
    psk="redacted"
}   
ctrl_interface=/run/wpa_supplicant
update_config=1

dhclient 仅在接口首次出现时运行。

如果我使用ifconfig wlan0 down,IP 地址会在关闭时保留,并ifconfig wlan0 up在不运行 dhclient 的情况下恢复接口。

不幸的是,我有一个自定义的 /etc/dhcp/dhclient-exit-hooks.d/wlan0-routes,它添加​​了自定义路由,该路由是根据 dhclient 提供的默认路由计算的。

当我关闭 wlan0 时,自定义路由会丢失,正如预期的那样。

当我启动 wlan0 时,dhclient 不会运行,因此不会重新添加自定义路由。


更新:

ifconfig wlan0 down(导致此问题的原因)和的行为似乎存在差异ifdown wlan0

root@demo:~# ifconfig wlan0 down
root@demo:~# ip addr show wlan0 
9: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 00:0e:8e:4c:f6:a3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.98.196/24 brd 192.168.98.255 scope global dynamic wlan0
       valid_lft 7130sec preferred_lft 7130sec

root@demo5:~# ifconfig wlan0 up
...
root@demo5:~# ifdown wlan0
root@demo5:~# ip addr show wlan0 
9: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 00:0e:8e:4c:f6:a3 brd ff:ff:ff:ff:ff:ff

当我使用ifdown wlan0而不是ifconfig wlan0 down dhclient调用时,当我打开界面时,一切都会按预期工作。

ifconfig wlan0 down和 和有什么区别ifdown wlan0

答案1

引用男人的话:

ifup 和 ifdown 命令可用于根据文件 /etc/sysconfig/network 和 /etc/sysconfig/network-scripts/ifcfg-<configuration> 中的接口定义来配置(或分别取消配置)网络接口

尽管

ifconfig 用于配置内核驻留网络接口。它在启动时用于根据需要设置接口。之后,通常只有在调试或需要系统调整时才需要它。

ifconfig 是 net-tools(网络实用程序)的一部分https://net-tools.sourceforge.io/

我认为这是一种过时且已弃用的工具,已被 iproute2 取代https://wiki.linuxfoundation.org/networking/iproute2

答案2

https://access.redhat.com/solutions/27166

“ifconfig up eth0”和“ifup eth0”有什么区别?

解决:

“ifconfig”命令和“ifup”或“ifdown”命令可以激活网络接口。 “ifconfig”直接控制网络接口,但“ifup”或“ifdown”执行“/etc/sysconfig/network-scripts/ifup-”或“ifdown-”脚本。这些脚本使用 ip 命令。

“ifconfig”和“ip”命令使用 ioctl() 来激活或停用网络接口。 “ifconfig”标记网络接口“IFF_UP |” IFF_RUNNING',但是“ip”标记为“IFF_UP”。

“ifconfig up eth0”激活 eth0,但不设置 IP 地址,但“ifup eth0”设置 IP 地址或基于 ifcfg-eth0 的其他选项,因为“ifup”使用“ifup-eth*”脚本。

ifup 命令还将配置在网络脚本目录中配置的任何静态路由。 ifconfig 命令不会。

相关内容