目录
一、查看网络信息:了解你的网络状态
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
。