在 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 命令不会。