当前位置:首页 > 娱乐

如何利用ifconfig命令禁用和重启网络接口

ifconfig 这个命令,何利如今在多数现代 Linux 发行版里已经被 ip 命令取代了。用i用和但老系统、令禁脚本、重启还有像我这样手指肌肉记忆改不过来的网络人,依然天天跟它打交道。接口禁用和重启网络接口,何利用 ifconfig 其实就两条命令的用i用和事,但坑往往藏在细节里。令禁

先看禁用。重启假设你要操作的网络是 eth0,直接敲 ifconfig eth0 down。接口就这么简单,何利接口立刻停止收发数据包,用i用和IP 地址也会从系统里消失——注意,令禁是消失,不是保留。你再用 ifconfig 单独查看 eth0,只会得到一句 "Device not found" 之类的提示,连 MAC 地址都看不见了。这跟 Windows 下“禁用网卡”的概念有点像,但更彻底。

有个容易忽略的点:如果你是通过 SSH 远程操作服务器,并且只有这一个网络接口,执行 down 的瞬间,你的连接就断了。别慌,这不是命令执行失败,是网络确实没了。我当年在一台托管机房的老机器上干过这事,结果只能打电话让机房同事帮忙重启。所以,远程操作前务必确认有带外管理(比如 IPMI)或者物理访问权限。

重启接口,自然是对应的 ifconfig eth0 up。但这里有个问题——单纯 up 只会把接口激活,之前配置的 IP 地址不会回来。因为 down 的时候地址已经清了,up 只是把硬件驱动拉起来,协议栈还没绑定任何 IP。你需要重新配置地址。手动指定就是 ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up,一条命令把地址、掩码、激活全干了。如果你之前用的是 DHCP,那还得跑一遍 dhclient eth0 或者 dhcpcd eth0,看发行版而定。

实际操作中,我遇到过一种诡异情况:执行 up 之后,接口状态显示为 UP,但就是 ping 不通网关。查了半天,发现是路由表的问题。ifconfig 只管接口本身,它不会帮你添加默认网关。你 down 之前的路由条目,在 down 的时候就被内核删掉了。所以重启后,除了配 IP,还得手动加路由:route add default gw 192.168.1.1。这一步忘了,网络就跟断了没两样。

还有个细节,ifconfig 对无线网卡的操作稍微不同。比如 wlan0,直接 down 再 up,有时候无线网卡不会自动重新关联到 AP。你得先 iwlist wlan0 scan 看看能搜到什么信号,再用 iwconfig wlan0 essid "你的WiFi名" 手动连。不过现在大多数桌面环境用 NetworkManager 管理无线,命令行下这么折腾纯属自虐,除非你在写无头服务器的脚本。

最后说点个人体会。ifconfig 这套命令虽然老,但它的行为模式非常直观——down 就是彻底关,up 就是重新开,没有中间状态。相比之下,ip link set eth0 down/up 的行为跟它基本一致,但 ip 命令还提供了 state 查询、txqueuelen 调整等更细的控制。如果你在维护旧系统,ifconfig 够用;要是新部署的机器,我建议直接学 ip 命令,毕竟 net-tools 包在很多新发行版里已经不预装了。不过,就像有人喜欢用 vim 有人用 nano,工具没有绝对的好坏,顺手就行。

分享到: