萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Fedora 系統 ifconfig/netstat 命令找不到?net-tools 與 ip/ss 現代替代方案

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/CentOS 7+ 默認不安裝 net-tools,需手動安裝

方案一:安裝 net-tools(兼容舊腳本、臨時過渡)


# Fedora / RHEL 8+ / CentOS 8+
dnf install -y net-tools

# CentOS 7 / RHEL 7
yum install -y net-tools

# 驗證
ifconfig -a
netstat -tulnp

方案二:掌握 ip/ss 現代命令(推薦,長期受益)

命令對照表(必背)

舊命令 (net-tools)新命令 (iproute2)功能
ifconfig -aip address show / ip a顯示所有接口地址
ifconfig eth0 upip link set eth0 up啟用接口
ifconfig eth0 192.168.1.10/24ip addr add 192.168.1.10/24 dev eth0配置 IP 地址
netstat -tulnpss -tulnp顯示監聽端口及進程
netstat -anss -an所有連接狀態
netstat -rnip route show / ip r路由表
route add default gw 192.168.1.1ip route add default via 192.168.1.1添加默認路由
arp -nip neigh show / ip nARP/鄰居表
netstat -sss -s協議統計
netstat -iip -s link接口統計

ss 進階用法(比 netstat 更強)


# 顯示 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 進階用法


# 查看接口詳情(統計、隊列、特性)
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

環境變量 PATH 問題(另一種「找不到」原因)

若安裝了 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),遷移後務必測試驗證。

總結建議

  1. 新腳本/新項目:直接寫 ip/ss,勿用舊命令
  2. 存量腳本維護:安裝 net-tools 過渡,計劃逐步重寫
  3. 容器鏡像構建:RUN dnf install -y iproute2(通常基礎鏡像已含),不安裝 net-tools 減小體積
  4. 學習投資:花 30 分鐘熟悉 ip/ss 常用參數,受益終身

「命令找不到」不是故障,是發行版推動現代化的信號。擁抱 iproute2,你將獲得更強大、更標準、更面向未來的網絡管理能力。

copyright © 萬盛學電腦網 all rights reserved