Fedora 18+(RHEL 7+、CentOS 7+)已將 net-tools(包含 ifconfig、netstat、route、arp)標記為**棄用**,默認不再預裝,取而代之的是 iproute2 套件(ip、ss)。本文說明為什麼會「找不到命令」、如何安裝舊工具、以及現代替代命令的對照表與遷移指南。
net-tools 最後一次更新在 2001 年,代碼老舊、無法支持現代網絡特性(命名空間、VRF、多隊列、BPF 等)iproute2 直接通過 Netlink 與內核交互,功能更強、輸出可機器解析、支持 JSON 格式
# Fedora / RHEL 8+ / CentOS 8+
dnf install -y net-tools
# CentOS 7 / RHEL 7
yum install -y net-tools
# 驗證
ifconfig -a
netstat -tulnp
| 舊命令 (net-tools) | 新命令 (iproute2) | 功能 |
|---|---|---|
ifconfig -a | ip address show / ip a | 顯示所有接口地址 |
ifconfig eth0 up | ip link set eth0 up | 啟用接口 |
ifconfig eth0 192.168.1.10/24 | ip addr add 192.168.1.10/24 dev eth0 | 配置 IP 地址 |
netstat -tulnp | ss -tulnp | 顯示監聽端口及進程 |
netstat -an | ss -an | 所有連接狀態 |
netstat -rn | ip route show / ip r | 路由表 |
route add default gw 192.168.1.1 | ip route add default via 192.168.1.1 | 添加默認路由 |
arp -n | ip neigh show / ip n | ARP/鄰居表 |
netstat -s | ss -s | 協議統計 |
netstat -i | ip -s link | 接口統計 |
# 顯示 TCP 連接狀態統計(含進程名)
ss -tan state established
# 顯示監聽在 80/443 的進程
ss -tlnp 'sport = :80 or sport = :443'
# 顯示特定進程的連接
ss -tnp | grep nginx
# JSON 格式輸出(便於程序解析)
ss -tan -j | jq .
# 顯示內存佔用、定時器等內核詳情
ss -tan -e -i
# 查看接口詳情(統計、隊列、特性)
ip -s link show eth0
# 添加多 IP(同一接口多地址)
ip addr add 10.0.0.10/24 dev eth0 label eth0:1
# 設置 MTU
ip link set dev eth0 mtu 9000
# 臨時修改路由(測試用)
ip route add 192.168.100.0/24 via 192.168.1.254 dev eth0
# 網絡命名空間操作(容器網絡基礎)
ip netns add testns
ip netns exec testns ip a
若安裝了 net-tools 但仍提示 command not found,檢查 PATH:
# 1. 確認二進制位置
whereis ifconfig
# 輸出:ifconfig: /usr/sbin/ifconfig
# 2. 檢查 PATH 是否包含 /usr/sbin
echo $PATH
# root 用戶應包含 /usr/sbin:/sbin
# 3. 臨時修復
export PATH=$PATH:/usr/sbin:/sbin
# 4. 永久修復(/etc/profile 或 ~/.bashrc)
echo 'export PATH=$PATH:/usr/sbin:/sbin' >> ~/.bashrc
source ~/.bashrc
# 簡單替換示例(需人工核對參數差異)
sed -i 's/ifconfig/ip address show/g' scripts/*.sh
sed -i 's/netstat -tulnp/ss -tulnp/g' scripts/*.sh
sed -i 's/netstat -an/ss -an/g' scripts/*.sh
sed -i 's/route -n/ip route show/g' scripts/*.sh
sed -i 's/arp -n/ip neigh show/g' scripts/*.sh
注意:參數語法不完全兼容(如netstat -an | grep ESTABLISHED→ss -tan state established),遷移後務必測試驗證。
ip/ss,勿用舊命令net-tools 過渡,計劃逐步重寫RUN dnf install -y iproute2(通常基礎鏡像已含),不安裝 net-tools 減小體積ip/ss 常用參數,受益終身「命令找不到」不是故障,是發行版推動現代化的信號。擁抱 iproute2,你將獲得更強大、更標準、更面向未來的網絡管理能力。