Linux 网络配置完全指南:ip命令、NetworkManager 与 Netplan
在 Linux 服务器运维中,网络配置是最基础也最重要的技能之一。无论你是刚接触 Linux 的新手,还是有一定经验的运维人员,掌握现代 Linux 网络配置工具都是必修课。本文将系统性地介绍 Linux 网络配置的三大核心工具:ip 命令族、NetworkManager 服务管理以及 Ubuntu 上的 Netplan 配置方案。文章还会用表格形式汇总常用命令,方便你快速查阅。
一、Linux 网络配置概述 传统上,Linux 网络配置依赖 ifconfig、route、netstat 等工具(来自 net-tools 包),但这些工具已不再被积极维护。现代 Linux 发行版推荐使用 iproute2 工具包,其中的核心命令 ip 可以完成几乎所有网络配置任务。
网络配置的层次 Linux 网络配置可以分三个层次理解:
层次 工具/机制 说明
底层命令 ip, ss, bridge 直接操作内核网络栈,实时生效,重启丢失
服务层 NetworkManager, systemd-networkd 管理网络连接的守护进程,支持持久化配置
配置方案 Netplan, ifupdown (/etc/network/interfaces) 声明式配置框架,生成下层服务的配置
小贴士 :Ubuntu 18.04+ 和 Debian 10+ 默认使用 Netplan + systemd-networkd 或 NetworkManager;CentOS/RHEL 7+ 主要使用 NetworkManager;Arch Linux 等则完全由用户选择。
二、ip 命令完全指南 ip 命令是 iproute2 工具包的核心,它整合了传统 ifconfig、route、arp 等命令的功能。其基本语法为:
常见对象包括:link(网络接口)、addr(IP 地址)、route(路由表)、neigh(ARP 邻居表)。
2.1 查看网络接口信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ip link show ip link show eth0 ip -s link show eth0 ip addr show ip -4 addr show ip link show up
输出示例:
1 2 3 4 5 6 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:16:3e:12:34:56 brd ff:ff:ff:ff:ff:ff inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe12:3456/64 scope link valid_lft forever preferred_lft forever
标志解读:
UP:接口已启用
LOWER_UP:物理层已连接(网线插好)
BROADCAST:支持广播
MULTICAST:支持组播
mtu 1500:最大传输单元 1500 字节
state UP:运行状态
2.2 管理网络接口 1 2 3 4 5 6 7 8 9 10 11 12 ip link set eth0 up ip link set eth0 down ip link set eth0 mtu 9000 ip link set eth0 address 00:11:22:33:44:55 ip link add link eth0 name eth0.100 type vlan id 100
2.3 管理 IP 地址 1 2 3 4 5 6 7 8 9 10 11 12 ip addr add 192.168.1.100/24 dev eth0 ip addr add 192.168.1.101/24 dev eth0 ip addr add 192.168.1.102/24 dev eth0 ip addr del 192.168.1.100/24 dev eth0 ip addr flush dev eth0
2.4 管理路由表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ip route show ip route add default via 192.168.1.1 dev eth0 ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0 ip route del 10.0.0.0/8 ip route add default via 192.168.1.1 dev eth0 metric 100 ip route add default via 192.168.1.254 dev eth0 metric 200
2.5 查看 ARP/邻居表 1 2 3 4 5 6 7 8 ip neigh show ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 nud permanent ip neigh del 192.168.1.1 dev eth0
2.6 ip 命令速查表
操作 传统命令 ip 命令
查看接口 ifconfig ip link show
查看 IP ifconfig ip addr show
启用接口 ifconfig eth0 up ip link set eth0 up
添加 IP ifconfig eth0:1 10.0.0.1/24 ip addr add 10.0.0.1/24 dev eth0
查看路由 route -n ip route show
添加默认网关 route add default gw 10.0.0.1 ip route add default via 10.0.0.1
查看 ARP arp -n ip neigh show
查看连接 netstat -tulnp ss -tulnp
查看 socket 统计 netstat -s ss -s
三、NetworkManager 详解 NetworkManager 是大多数现代 Linux 发行版的默认网络管理守护进程。它支持有线、无线、移动宽带、VPN 等多种连接类型,并提供了命令行工具 nmcli 和文本界面 nmtui。
3.1 安装与启停 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sudo apt install network-managersudo yum install NetworkManagersudo systemctl status NetworkManagersudo systemctl start NetworkManagersudo systemctl stop NetworkManagersudo systemctl restart NetworkManagersudo systemctl enable NetworkManager
3.2 nmcli 基础用法 nmcli 是 NetworkManager 的命令行客户端,功能非常强大。
1 2 3 4 5 6 7 8 9 10 11 nmcli device status nmcli connection show nmcli connection show --active nmcli connection show "Wired connection 1"
3.3 使用 nmcli 创建和管理连接 创建静态 IP 连接:
1 2 3 4 5 6 7 8 nmcli connection add type ethernet con-name "my-static" \ ifname eth0 \ ipv4.method manual \ ipv4.addresses 192.168.1.100/24 \ ipv4.gateway 192.168.1.1 \ ipv4.dns "8.8.8.8 114.114.114.114" \ autoconnect yes
创建 DHCP 连接:
1 2 3 4 5 nmcli connection add type ethernet con-name "my-dhcp" \ ifname eth0 \ ipv4.method auto \ autoconnect yes
修改现有连接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 nmcli connection modify "my-static" ipv4.dns "1.1.1.1 8.8.8.8" nmcli connection modify "my-static" +ipv4.addresses 10.0.0.10/24 nmcli connection modify "my-static" 802-3-ethernet.mtu 1450 nmcli connection up "my-static" nmcli connection down "my-static" nmcli connection delete "my-dhcp"
3.4 nmtui 文本界面 如果不想记命令,可以用 nmtui 打开图形化的文本界面进行操作:
在 nmtui 中可以直观地编辑连接、激活连接、设置主机名等。
3.5 NetworkManager 配置文件 NetworkManager 的连接配置文件存储在 /etc/NetworkManager/system-connections/ 目录下,每个连接对应一个 .nmconnection 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [connection] id =my-statictype =ethernetinterface-name =eth0autoconnect =true [ipv4] method =manualaddresses =192.168 .1.100 /24 gateway =192.168 .1.1 dns =8.8 .8.8 [ipv6] method =disabled
注意 :这些配置文件包含明文密码(如果设置了 Wi-Fi 密码),权限应为 600。
四、Netplan 配置方案 Netplan 是 Ubuntu 17.10 开始引入的网络配置工具,使用 YAML 格式的配置文件,可以后端对接 NetworkManager 或 systemd-networkd。
4.1 配置文件位置 Netplan 的配置文件位于 /etc/netplan/ 目录下,常见的文件名有:
/etc/netplan/01-netcfg.yaml
/etc/netplan/00-installer-config.yaml
/etc/netplan/50-cloud-init.yaml(云服务器上常见)
4.2 Netplan 配置示例 DHCP 自动获取:
1 2 3 4 5 6 7 8 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true dhcp6: false
静态 IP 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 network: version: 2 renderer: networkd ethernets: eth0: addresses: - 192.168 .1 .100 /24 - 10.0 .0 .10 /24 gateway4: 192.168 .1 .1 nameservers: addresses: - 8.8 .8 .8 - 114.114 .114 .114 dhcp4: false dhcp6: false mtu: 1500
多网卡配置(含路由):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 network: version: 2 renderer: networkd ethernets: eth0: addresses: - 192.168 .1 .100 /24 gateway4: 192.168 .1 .1 nameservers: addresses: [8.8 .8 .8 , 114.114 .114 .114 ] eth1: addresses: - 10.0 .0 .10 /24 routes: - to: 172.16 .0 .0 /12 via: 10.0 .0 .1
Wi-Fi 配置:
1 2 3 4 5 6 7 8 9 10 network: version: 2 renderer: NetworkManager wifis: wlan0: dhcp4: true access-points: "MyWiFi": password: "your-wifi-password"
4.3 应用 Netplan 配置 1 2 3 4 5 6 7 8 9 10 11 sudo netplan trysudo netplan applysudo netplan generatesudo netplan --debug apply
重要提示 :使用 netplan try 会应用配置并等待 120 秒确认。如果你在 SSH 中操作,务必使用此命令,配置错误导致断网后可以等待超时自动回滚。
4.4 各种场景下的 Netplan 配置 禁用 IPv6:
1 2 3 4 5 6 7 8 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true dhcp6: false link-local: []
网卡 bonding(绑定/聚合):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 network: version: 2 renderer: networkd bonds: bond0: interfaces: [eth0 , eth1 ] parameters: mode: active-backup mii-monitor-interval: 100 primary: eth0 ethernets: eth0: dhcp4: false eth1: dhcp4: false
五、网络故障排查实用技巧 5.1 基础排查流程 当服务器网络出现问题时,按照以下顺序排查:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ip link show eth0 ip addr show eth0 ping -c 4 192.168.1.1 ip route show nslookup google.com dig +short google.com ping -c 4 8.8.8.8 ping -c 4 google.com sudo iptables -L -n -vsudo firewall-cmd --list-all
5.2 常见网络问题排查表
现象 可能原因 排查命令
ping 不通网关 网线松动、接口 down、IP 冲突 ip link show; dmesg | tail
ping 外网 IP 通但域名不通 DNS 配置错误 cat /etc/resolv.conf; nslookup
某些端口无法访问 防火墙阻止 ss -tulnp; iptables -L -n
网络速度慢 链路协商问题、带宽耗尽 ethtool eth0; nload; iftop
SSH 频繁断连 MTU 问题、路由不稳定 ping -M do -s 1472 网关IP; traceroute
Linux 发包正常但收不到回复 ARP 表错误、路由回程不对 ip neigh show; tcpdump -i eth0
5.3 使用 ss 替代 netstat 1 2 3 4 5 6 7 8 9 10 11 12 ss -tulnp ss -t state established ss -t state time-wait ss -tn state established | grep :80 | wc -l ss -s
5.4 测试网络性能 1 2 3 4 5 6 7 8 9 10 11 12 13 sudo ethtool eth0sudo ethtool -i eth0 sudo ethtool -S eth0 iperf3 -s iperf3 -c 192.168.1.100 mtr -n google.com
六、系统级网络配置持久化 6.1 hostname 配置 1 2 3 4 5 6 7 8 9 10 hostname hostnamectl sudo hostnamectl set-hostname my-serversudo vim /etc/hosts
6.2 DNS 配置 1 2 3 4 5 6 cat /etc/resolv.confresolvectl status resolvectl dns eth0 8.8.8.8
6.3 系统级网络参数调优 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo sysctl -a | grep net.sudo sysctl -w net.ipv4.ip_forward=1sudo sysctl -w net.core.rmem_max=134217728sudo sysctl -w net.core.wmem_max=134217728sudo sysctl -w net.ipv4.tcp_fin_timeout=30echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.confecho "net.core.rmem_max = 134217728" | sudo tee -a /etc/sysctl.d/network-tuning.confsudo sysctl -p
七、实战:一键配置脚本 以下是一个完整的网络初始化脚本,适用于 Ubuntu 服务器首次配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #!/bin/bash set -eINTERFACE="eth0" STATIC_IP="192.168.1.100/24" GATEWAY="192.168.1.1" DNS="8.8.8.8,114.114.114.114" HOSTNAME="my-server" echo ">>> Setting hostname..." hostnamectl set-hostname $HOSTNAME echo ">>> Configuring Netplan..." cat > /etc/netplan/01-netcfg.yaml <<EOF network: version: 2 renderer: networkd ethernets: $INTERFACE: addresses: - $STATIC_IP gateway4: ${GATEWAY%/*} nameservers: addresses: [${DNS//,/, }] dhcp4: false EOF echo ">>> Applying network config..." netplan apply echo ">>> Configuring /etc/hosts..." sed -i "/127.0.1.1/d" /etc/hosts echo "127.0.1.1 $HOSTNAME " >> /etc/hostsecho ">>> Verifying network..." ip addr show $INTERFACE ip route show ping -c 2 $GATEWAY echo ">>> Network setup completed!"
结语 掌握 Linux 网络配置是服务器运维的必备技能。本文从 ip 命令的基础用法,到 NetworkManager 的路由策略,再到 Netplan 的声明式配置,构建了一套完整的知识体系。在实际工作中,建议:
日常排查 :优先使用 ip 和 ss 代替传统 ifconfig 和 netstat
配置管理 :Ubuntu 上使用 Netplan,CentOS/RHEL 上使用 nmcli
调试技巧 :结合 tcpdump 和 mtr 深入分析网络问题
自动化运维 :将网络配置纳入 Ansible/Puppet 等配置管理工具
网络配置涉及的细节非常多,如果遇到本文未覆盖的问题,欢迎留言交流。
本文由AI辅助生成,内容仅供参考