阅读时长:8分钟
适合人群:Linux新手、系统管理员、开发者
你将了解:IP地址配置、DNS设置、防火墙管理、故障排查
刚装好的Linux系统连不上网?手动配置IP地址一头雾水?DNS解析失败不知道怎么排查?
网络配置是Linux入门的第二大关(仅次于软件安装),但也是最容易踩坑的地方。本文将从零开始,带你系统掌握Linux网络配置的核心技能。
Linux网络配置的核心三要素:
| IP地址 | ||
| 子网掩码 | ||
| 网关 |
关键理解:
# 查看当前网络配置
$ ip addr show
# 输出示例
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.1.100/24 brd 192.168.1.255 scope global enp0s3
# ↑IP地址 ↑子网掩码(/24=255.255.255.0)DNS负责将域名转换为IP地址:
# 查看当前DNS配置
$ cat /etc/resolv.conf
# 输出示例
nameserver 192.168.1.1 # 路由器DNS
nameserver 8.8.8.8 # Google DNS
nameserver 114.114.114.114 # 国内DNS常见DNS服务器:
Linux网络接口名称有规律可循:
en | ||
wl | ||
NetworkManager是Ubuntu默认的网络管理服务,nmcli是其命令行工具:
# 查看所有网络连接
$ nmcli connection show
NAME TYPE DEVICE
有线连接 1 ethernet enp0s3
docker0 bridge docker0
# 查看网络设备状态
$ nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected 有线连接 1
lo loopback unmanaged --
# 查看当前IP配置
$ nmcli device show enp0s3
GENERAL.DEVICE: enp0s3
IP4.ADDRESS[1]: 192.168.1.100/24
IP4.GATEWAY: 192.168.1.1
IP4.DNS[1]: 192.168.1.1Ubuntu桌面用户可以直接使用图形界面:
# 创建DHCP连接
$ sudo nmcli connection add type ethernet con-name "dhcp-connection" ifname enp0s3
# 启用DHCP
$ sudo nmcli connection modify "dhcp-connection" ipv4.method auto
# 激活连接
$ sudo nmcli connection up "dhcp-connection"# 创建静态IP连接
$ sudo nmcli connection add type ethernet con-name "static-connection" ifname enp0s3
# 配置IP地址、子网掩码、网关
$ sudo nmcli connection modify "static-connection" \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.method manual
# 配置DNS
$ sudo nmcli connection modify "static-connection" \
ipv4.dns "8.8.8.8,114.114.114.114"
# 激活连接
$ sudo nmcli connection up "static-connection"关键参数说明:
ipv4.addresses:IP地址/子网掩码(CIDR格式)ipv4.gateway:网关地址ipv4.dns:DNS服务器(多个用逗号分隔)ipv4.method:auto=DHCP,manual=手动# 设置DNS服务器
$ sudo nmcli connection modify "有线连接 1" \
ipv4.dns "8.8.8.8 114.114.114.114 223.5.5.5"
# 忽略自动DNS(防止被覆盖)
$ sudo nmcli connection modify "有线连接 1" ipv4.ignore-auto-dns yes
# 重新激活连接
$ sudo nmcli connection up "有线连接 1"# 编辑Netplan配置文件(Ubuntu 18.04+)
$ sudo nano /etc/netplan/01-network-manager-all.yaml
# 添加DNS配置
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: yes
nameservers:
addresses: [8.8.8.8, 114.114.114.114, 223.5.5.5]
# 应用配置
$ sudo netplan apply# 测试域名解析
$ nslookup baidu.com
# 输出示例
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: baidu.com
Address: 220.181.38.148
# 测试DNS响应速度
$ dig google.com @8.8.8.8
# 查看DNS查询时间
;; Query time: 12 msecUFW(Uncomplicated Firewall)是Ubuntu默认防火墙工具:
# 查看防火墙状态
$ sudo ufw status
Status: inactive # 未启用
# 启用防火墙
$ sudo ufw enable
# 默认拒绝所有入站连接
$ sudo ufw default deny incoming
# 默认允许所有出站连接
$ sudo ufw default allow outgoing
# 查看防火墙规则(带编号)
$ sudo ufw status numbered
Status: active
To Action From
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere# 开放SSH端口(22)
$ sudo ufw allow ssh
# 或
$ sudo ufw allow 22/tcp
# 开放HTTP端口(80)
$ sudo ufw allow http
# 或
$ sudo ufw allow 80/tcp
# 开放HTTPS端口(443)
$ sudo ufw allow https
# 或
$ sudo ufw allow 443/tcp
# 开放特定端口范围
$ sudo ufw allow 8000:9000/tcp
# 开放特定IP访问
$ sudo ufw allow from 192.168.1.100 to any port 22
# 删除规则
$ sudo ufw delete allow 8080/tcp
# 或按编号删除
$ sudo ufw delete 3⚠️ 安全建议:
limit规则防止暴力破解:# SSH连接限制(6次/30秒)
$ sudo ufw limit ssh# 测试外网连通性
$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=11.8 ms
# 测试域名解析
$ ping -c 4 google.com
# 如果ping IP成功但ping域名失败 → DNS问题# 查看到目标主机的路由路径
$ traceroute google.com
traceroute to google.com (142.250.189.78), 30 hops max
1 192.168.1.1 (192.168.1.1) 1.234 ms
2 10.0.0.1 (10.0.0.1) 5.678 ms
3 * * * # 超时,可能是防火墙拦截# 查看所有监听端口
$ ss -tulpn
# 输出示例
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
# 参数说明
# -t: TCP端口
# -u: UDP端口
# -l: 监听状态
# -p: 显示进程名
# -n: 数字显示端口# 查看所有网络连接
$ netstat -anp
# 查看特定端口
$ netstat -anp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx# 测试端口是否开放
$ nc -zv 192.168.1.100 22
Connection to 192.168.1.100 22 port [tcp/ssh] succeeded!
# 测试Web服务
$ curl -I http://192.168.1.100
HTTP/1.1 200 OK
Server: nginx/1.24.0# 查看网络接口
$ ip link show
# 查看IP地址
$ ip addr show
# 查看路由表
$ ip route show
default via 192.168.1.1 dev enp0s3
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.100
# 查看ARP表
$ ip neigh show
192.168.1.1 dev enp0s3 lladdr 00:11:22:33:44:55 REACHABLE
# 添加临时IP地址(重启失效)
$ sudo ip addr add 192.168.1.101/24 dev enp0s3
# 删除IP地址
$ sudo ip addr del 192.168.1.101/24 dev enp0s3# 1. 检查DNS配置
$ cat /etc/resolv.conf
# 2. 测试DNS解析
$ nslookup baidu.com
$ dig baidu.com
# 3. 测试特定DNS服务器
$ dig baidu.com @8.8.8.8
# 4. 清除DNS缓存(如果启用了systemd-resolved)
$ sudo systemd-resolve --flush-caches症状:
$ ip addr show
2: enp0s3: <BROADCAST,MULTICAST> mtu 1500
# 没有inet地址解决方案:
# 1. 检查网线连接
$ ethtool enp0s3 | grep Link
Link detected: yes
# 2. 启用网络接口
$ sudo ip link set enp0s3 up
# 3. 请求DHCP地址
$ sudo dhclient enp0s3
# 4. 重启NetworkManager
$ sudo systemctl restart NetworkManager症状:
$ ping google.com
ping: google.com: Temporary failure in name resolution解决方案:
# 1. 检查DNS配置
$ cat /etc/resolv.conf
# 如果为空或DNS服务器不可达
# 2. 手动设置DNS
$ sudo nmcli connection modify "有线连接 1" ipv4.dns "8.8.8.8"
# 3. 检查systemd-resolved服务
$ sudo systemctl status systemd-resolved
# 4. 重启DNS服务
$ sudo systemctl restart systemd-resolved症状:服务本地可访问,远程无法访问
解决方案:
# 1. 检查防火墙状态
$ sudo ufw status
# 2. 临时关闭防火墙测试
$ sudo ufw disable
# 3. 如果连接成功 → 开放对应端口
$ sudo ufw allow 8080/tcp
# 4. 重新启用防火墙
$ sudo ufw enable症状:重启后网络配置丢失
解决方案:
# 检查NetworkManager是否开机自启
$ systemctl is-enabled NetworkManager
enabled
# 如果未启用
$ sudo systemctl enable NetworkManager
# 检查连接是否自动连接
$ nmcli connection show "有线连接 1" | grep autoconnect
connection.autoconnect: yes
# 如果未启用自动连接
$ sudo nmcli connection modify "有线连接 1" connection.autoconnect yesip link show | UP | |
ip addr show | ||
ip route show | ||
nslookup google.com | ||
sudo ufw status | Status: active | |
ss -tulpn |
limit规则防止暴力破解iftop监控流量nload查看带宽使用tcpdump抓包分析Ubuntu 26.04带来以下网络改进:
| NetworkManager 1.50 | |
| systemd 257 | |
| Netplan 2.0 | |
| WireGuard优化 |
升级建议:
# 升级后检查网络配置
$ sudo netplan try
# 自动验证配置,30秒无确认自动回滚
# 查看NetworkManager版本
$ nmcli --version
nmcli tool, version 1.50.0ip link show | |
ip addr show | |
ip route show | |
cat /etc/resolv.conf | |
ping -c 4 8.8.8.8 | |
nslookup baidu.com | |
ss -tulpn | |
sudo ufw status | |
sudo ufw allow 80/tcp | |
nmcli connection show |
网络故障排查流程:
1. ping 127.0.0.1 → 失败 → 网络接口未启动
↓ 成功
2. ping 192.168.1.1 → 失败 → 本地网络问题
↓ 成功
3. ping 8.8.8.8 → 失败 → 网关或ISP问题
↓ 成功
4. ping google.com → 失败 → DNS问题
↓ 成功
5. 网络正常 → 检查防火墙/服务配置🐧 关注我们,获取更多Ubuntu/Linux技术干货
💬 加入QQ群/频道,与全国爱好者交流成长
❤️ 觉得有用?点个"在看"分享给更多人!