目錄
一、查看網絡信息:了解你的網絡狀態
1??核心工具:ip命令(替代ifconfig)
<1> 基本語法:
<2> 實用操作示例:
2??查看路由表:route命令
3??查看網絡連接狀態:netstat與ss
netstat常用用法:
ss更高效,常用用法:
4??查看主機名稱:hostname命令
二、測試網絡連通性:排查網絡故障
1??ping命令:測試主機是否可達
2??traceroute:追蹤數據包的路由路徑
3??測試 DNS?域名解析:nslookup與dig
nslookup:簡單查詢
dig:更詳細的 DNS 信息
三、配置網絡參數:臨時與永久設置
1??臨時配置(適合調試)
<1> 啟用 / 停止網卡
<2> 臨時添加 / 刪除 IP 地址
<3> 添加 / 刪除路由與默認網關
2??永久配置(推薦,通過配置文件)
<1> 網絡接口配置(Ubuntu 17.10+ 用netplan)
<2> 修改主機名
<3> DNS 與本地解析配置
總結
一、查看網絡信息:了解你的網絡狀態
在進行任何網絡操作前,首先需要知道當前系統的網絡狀態:網卡是否啟用?IP 地址是什么?路由表如何配置?Linux 提供了多個命令幫你獲取這些信息。
1??核心工具:ip
命令(替代ifconfig
)
過去,ifconfig
是查看網絡接口的常用命令,但如今許多 Linux 發行版(如 Ubuntu)已默認不安裝它,取而代之的是功能更強大的ip
命令。ip
命令可管理網絡接口、IP 地址、路由表等,是網絡查看與配置的 “全能工具”。
如果系統中已安裝 net-tools 包,則可以使用 ifconfig。
<1> 基本語法:
bash
ip [選項] 對象 {命令}
- 常用對象:
link
(網絡設備)、addr
(IP 地址)、route
(路由表)等。 - 常用選項:
-s
(詳細信息)、-4
(僅 IPv4)、-6
(僅 IPv6)、-h
(人類可讀格式)。
<2> 實用操作示例:
? 查看所有網絡接口信息(簡寫ip a
):
? bash
? ip addr show (簡寫: ip a )
ip addr show # 完整命令
ip a # 簡寫,推薦使用
? ??輸出結果中,你會看到類似ens33
和lo
的接口:
ens33
:物理以太網接口。en
代表以太網(Ethernet),s
表示熱插拔插槽,33
是插槽編號。lo
:回環接口(loopback),虛擬接口,IP 默認是127.0.0.1
,用于本機網絡測試。-
查看指定接口信息(如
ens33
):bash
?ip addr show ens33
輸出中包含接口狀態(
UP
表示啟用)、MAC 地址、IP 地址(inet
為 IPv4,inet6
為 IPv6)、子網掩碼等關鍵信息。
? ?<3> 查看網絡設備運行狀態(link
對象):
-
bash
-
? ?ip link list ( 簡寫: ip l l ) ---?顯示網絡設備運行狀態
-
?? ip -stats link list ( 簡寫: ip -s l l) ---?顯示詳細設備信息
-
?ip link list # 簡寫 ip l l ip -s link list # 帶統計信息(接收/發送的字節、數據包等)
其中
RX
(Receive接收)和TX
(發送)的統計數據可幫助判斷接口是否正常工作(如errors
不為 0 可能表示網絡故障)。
2??查看路由表:route
命令
路由表決定了數據從本機發送到其他網絡的 “路徑”,通過route
命令可查看:
bash
route # 查看路由表(默認顯示主機名)
route -n # 以IP地址顯示(更快,推薦)
輸出中關鍵列的含義:
Destination
:目標網段(default
表示默認網關)。Gateway
:下一跳路由器 IP(0.0.0.0
表示直連網段)。Iface
:數據發送的網卡接口(如ens33
)。
3??查看網絡連接狀態:netstat
與ss
這兩個命令用于查看當前的網絡連接(如 TCP/UDP 連接、監聽端口等),ss
是netstat
的現代替代者,速度更快。
netstat
常用用法:
bash
netstat -anpt # 顯示所有TCP連接(數字形式,含進程信息)
netstat -anpt | grep ":22" # 過濾SSH(22端口)相關連接
ss
更高效,常用用法:
bash
ss -t -a -p # 顯示所有TCP連接及進程
ss -t -l # 顯示監聽中的TCP端口
ss -u -a # 顯示所有UDP連接
ss -t state established # 顯示已建立的TCP連接
4??查看主機名稱:hostname命令
在 Linux 操作系統中,相當一部分網絡服務都會通過主機名來識別主機,如果主機名配置不當,可能會導致程序功能出現故障。
使用 hostname 命令可以查看當前主機的主機名,不用添加任何選項或參數。
二、測試網絡連通性:排查網絡故障
網絡不通?別急著重啟!用以下命令一步步定位問題。
1??ping命令
:測試主機是否可達
ping
通過發送 ICMP 數據包檢測目標主機是否連通,是最基礎的網絡測試工具。
bash
ping www.baidu.com # 測試與百度的連接
- 成功:會持續顯示響應時間(如
time=30ms
)。 - 失敗:可能顯示
Destination Host Unreachable
(主機不可達)或Request timeout
(超時,可能被防火墻攔截)。 - 終止測試:按
Ctrl+C
,會顯示統計結果(如發送 / 接收數據包數量、丟包率)。
2??traceroute
:追蹤數據包的路由路徑
如果ping
失敗,traceroute
可幫你找到故障點(哪一跳路由器出問題)。
bash
? ?traceroute
# 先安裝(Ubuntu):
sudo apt install traceroute
# 追蹤到百度的路徑:
traceroute www.baidu.com
輸出中,每一行代表一個中間路由器,*
表示該節點無響應。通過對比各節點的響應時間,可定位網絡中斷的位置。
3??測試 DNS?域名解析:nslookup
與dig
域名(如www.baidu.com
)需要通過 DNS 解析為 IP 地址才能訪問,這兩個命令用于檢測 DNS 是否正常。
nslookup
:簡單查詢
bash
nslookup www.baidu.com
成功會返回域名對應的 IP(如110.242.68.66
)和使用的 DNS 服務器(如127.0.0.53
)。
dig
:更詳細的 DNS 信息
bash
dig www.baidu.com # 基礎查詢
dig @8.8.8.8 www.baidu.com # 指定谷歌DNS(8.8.8.8)查詢
輸出包含查詢狀態(NOERROR
表示成功)、DNS 服務器、解析結果等,適合深入排查 DNS 問題。
三、配置網絡參數:臨時與永久設置
網絡配置分 “臨時”(重啟失效)和 “永久”(重啟保留),按需選擇。
1??臨時配置(適合調試)
<1> 啟用 / 停止網卡
bash
?ip link set? <interface>? up / down
ip link set ens33 up # 啟用ens33網卡
ip link set ens33 down # 停止ens33網卡
<2> 臨時添加 / 刪除 IP 地址
在對服務器網絡進行調試的過程中,有時候需要臨時在同一個網卡上使用一個新的 IP地址,但是又不能覆蓋原有 IP 地址而導致服務程序不可用。
bash
ip addr add / del 192.168.204.135/24 broadcast 192.168.204.255 dev br0
# 給br0接口添加IP(192.168.204.135/24):
ip addr add 192.168.204.135/24 broadcast 192.168.204.255 dev br0
# 刪除該IP:
ip addr del 192.168.204.135/24 broadcast 192.168.204.255 dev br0
<3> 添加 / 刪除路由與默認網關
bash
route add -net 192.168.3.0/24 gw 192.168.204.254 (添加靜態路由)
route del -net 192.168.3.0/24(刪除該路由)
# 添加到192.168.3.0/24網段的路由(下一跳192.168.204.254):
route add -net 192.168.3.0/24 gw 192.168.204.254
# 刪除該路由:
route del -net 192.168.3.0/24# 設置默認網關(臨時):
route add default gw 192.168.204.2
# 刪除默認網關:
route del default gw 192.168.204.2
2??永久配置(推薦,通過配置文件)
臨時配置重啟后會失效,生產環境需通過配置文件永久設置。
<1> 網絡接口配置(Ubuntu 17.10+ 用netplan
)
netplan
是 Ubuntu 推薦的網絡配置工具,配置文件通常位于/etc/netplan/
,格式為 YAML。
步驟:
①創建配置文件:
bash? ? ? ? ? ?
vim /etc/netplan/ens37-netcfg.yaml
sudo vim /etc/netplan/ens33-config.yaml
②寫入配置(以固定 IP 為例):
yaml
network:version: 2renderer: networkdethernets:ens33: # 網卡名稱dhcp4: no # 關閉DHCPaddresses: [192.168.204.133/24] # IP及子網掩碼gateway4: 192.168.204.2 # 網關nameservers:addresses: [114.114.114.114, 8.8.8.8] # DNS服務器
③保存退出后,應用配置:
bash
sudo netplan apply
<2> 修改主機名
主機名用于標識本機,可通過命令或配置文件修改:
bash
# 臨時修改(當前會話生效):
hostname newname
# 永久修改(重啟生效):
sudo hostnamectl set-hostname newname # 推薦,無需重啟
# 或修改配置文件:
sudo vim /etc/hostname # 寫入新主機名,重啟生效
<3> DNS 與本地解析配置
-
/etc/resolv.conf
:指定 DNS 服務器,修改后立即生效(最多 3 個,優先第一個):bash
sudo vim /etc/resolv.conf # 添加: nameserver 114.114.114.114 # 國內DNS nameserver 8.8.8.8 # 谷歌DNS
-
/etc/hosts
:本地 IP - 主機名映射表(優先于 DNS 查詢),適合加速常用網站訪問:bash
sudo vim /etc/hosts # 添加: 119.75.218.70 www.baidu.com # 訪問百度時直接用該IP,不查DNS
功能分類 | 命令 | 核心功能 | 典型用法示例 |
---|---|---|---|
查看網絡信息 | ip a (ip addr show 簡寫) | 顯示所有網絡接口的 IP 地址、MAC 地址、狀態(UP/DOWN)等關鍵信息 | ip a (查看所有接口)、ip a show ens33 (指定接口) |
ip l l (ip link list 簡寫) | 查看網絡設備物理狀態(啟用 / 禁用、MAC 地址) | ip l l (確認網卡是否啟用) | |
route -n | 以 IP 形式顯示路由表(含默認網關、目標網段),快速定位數據轉發路徑 | route -n (查看默認網關是否正確) | |
ss -tuln | 顯示所有監聽的 TCP/UDP 端口(數字形式,不解析服務名),排查端口占用問題 | ss -tuln (檢查 80/22 端口是否監聽) | |
測試網絡連通性 | ping <目標> | 測試與目標主機的基礎連通性,判斷網絡是否通暢 | ping www.baidu.com (測試外網連通) |
traceroute <目標> | 追蹤數據包到目標主機的路由路徑,定位網絡中斷點(哪一跳故障) | traceroute www.baidu.com (排查 ping 失敗原因) | |
nslookup <域名> | 測試域名解析(域名→IP),排查 DNS 故障 | nslookup www.baidu.com (確認域名是否解析正確) | |
配置網絡參數 | ip link set <網卡> up/down | 啟用 / 禁用指定網卡(臨時操作) | ip link set ens33 up (激活網卡) |
route add default gw <網關> | 臨時設置默認網關(訪問外網的出口) | route add default gw 192.168.204.2 | |
hostnamectl set-hostname <名> | 永久修改主機名(無需重啟) | hostnamectl set-hostname web-server | |
netplan apply | 應用 netplan 配置(Ubuntu 17.10+),使固定 IP、DNS 等配置生效 | 修改/etc/netplan/*.yaml 后執行生效 |
總結
Linux 網絡設置看似復雜,但掌握核心命令和配置文件后會變得清晰:
- 查看信息:用
ip
命令(ip a
、ip link
)、route -n
、ss
。 - 測試網絡:
ping
測連通性,traceroute
找故障點,nslookup
/dig
查 DNS。 - 配置參數:臨時配置用
ip
/route
,永久配置改netplan
/hostname
/resolv.conf
。