Appearance
Linux网络配置
网络配置分为临时生效和持久化两种方式。临时命令用于抢修和验证,持久化配置则取决于发行版的网络管理工具。
一、ip 命令查看网络状态
三大视角看网络:
| 视角 | 命令 | 关注点 |
|---|---|---|
| 链路层 | ip link | 网卡是否 UP、MAC 地址 |
| 网络层 | ip addr | 网卡上有哪些 IP、掩码 |
| 路由层 | ip route | 流量走哪个网卡、下一跳是谁 |
bash
ip link # 查看网卡状态(UP/DOWN、MAC)
ip addr # 查看 IP 地址和掩码
ip route # 查看路由表老命令 ifconfig 仍然在一些脚本和文档中出现,但在新一点的系统里默认不装(属于 net-tools 包):
bash
yum install net-tools -y
apt install net-tools -y新的脚本和排查习惯推荐统一用 ip 系列命令。
二、临时网络配置
ip 命令修改的是内核中当前的网络状态,不会自动写入配置文件。重启网络服务或重启机器后这些配置会丢失。
给网卡添加 IP:
bash
ip addr add 192.168.1.10/24 dev eth0
ip link set eth0 up删除 IP:
bash
ip addr del 192.168.1.10/24 dev eth0添加默认路由:
bash
ip route add default via 192.168.1.1添加针对特定网段的静态路由:
bash
ip route add 10.10.0.0/16 via 192.168.1.254 dev eth0这条规则的意思是:访问 10.10.0.0/16 这个网段时,数据包从 eth0 发出,交给下一跳 192.168.1.254。下一跳必须是本机能直接到达的地址(在同一二层网络内),填一个远端 IP 路由器找不到,不会生效。
删除路由:
bash
ip route del 10.10.0.0/16多网卡机器上,通过 ip route get 可以查看访问某个目标地址时实际会走哪条路由和哪个源 IP:
bash
ip route get 10.10.1.20多网卡排查时这个命令比翻完整路由表快。
三、RHEL 系持久化网络配置
RHEL 系有两种持久化方式:传统的 ifcfg 文件和新式的 NetworkManager。
传统配置文件在:
bash
ls /etc/sysconfig/network-scripts/ifcfg-*ifcfg 示例:
ini
TYPE=Ethernet
BOOTPROTO=none # none/static=静态IP,dhcp=动态获取
NAME=eth0
DEVICE=eth0
ONBOOT=yes # 开机自动启用
IPADDR=192.168.1.10
PREFIX=24 # 等价于掩码 255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5NetworkManager 是更现代的管理方式。Device(网卡硬件)和 Connection(一套配置参数)是两个独立概念,一个 device 可以切换不同的 connection。
bash
nmcli device status # 查看所有网卡的状态
nmcli connection show # 查看所有连接配置用 nmcli 修改静态地址:
bash
nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.10/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns 223.5.5.5
nmcli connection up eth0远程机器上改网络配置时,开一个 tmux 保持会话、确认云厂商 VNC 或控制台能登入,再动手。改错网关或网卡配置可能直接断 SSH。
四、Ubuntu netplan 配置
Ubuntu 17.10 之后默认使用 netplan 管理网络。
bash
ls /etc/netplan/YAML 格式的 netplan 配置示例:
yaml
network:
version: 2
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.1.10/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 223.5.5.5
- 8.8.8.8| 字段 | 含义 |
|---|---|
version | netplan 配置格式版本,目前是 2 |
dhcp4 | 是否通过 DHCP 获取 IPv4 地址 |
addresses | 静态 IP 地址列表,可配多个 |
routes | 路由规则,to: default 即默认路由 |
nameservers | DNS 服务器列表 |
应用配置两种方式:
bash
netplan try # 试应用,超时未确认会自动回滚
netplan apply # 直接应用远程改网络时 netplan try 更安全。配置错了它会回滚,直接 apply 可能断网。
五、DNS 客户端配置
/etc/resolv.conf 是 DNS 解析器的配置文件。但 modern 系统中这个文件可能不是手动编辑的——NetworkManager、systemd-resolved、netplan 都会自动生成或管理它。
bash
cat /etc/resolv.conf
resolvectl status # systemd-resolved 管理的系统临时指定 DNS 服务器测试解析:
bash
dig @8.8.8.8 example.com
dig @223.5.5.5 example.com六、路由表详解
bash
ip route在有多块网卡的机器上(如同时有内网卡和外网卡),两个网卡可能各有一个默认网关,但同一时间只有一个默认网关生效。业务流量走错了网卡可能表现为"包能发出去,但回来时走了另一条路"。
设置不同路由的 metric(优先级,值越低优先级越高):
bash
ip route add default via 192.168.1.1 dev eth0 metric 100
ip route add default via 10.0.0.1 dev eth1 metric 200七、bonding 网卡绑定
Bonding 把多块物理网卡聚合成一个逻辑网卡,提供更高的带宽或者冗余。
常见模式:
| 模式 | 名称 | 用途 |
|---|---|---|
| mode 1 | active-backup | 主备,一块网卡故障后切换到另一块 |
| mode 4 | 802.3ad(LACP) | 链路聚合,交换机需要配合配置 LACP |
查看 bonding 状态:
bash
cat /proc/net/bonding/bond0mode 1(主备)实施最简单,交换机侧不需要特殊配置。mode 4(LACP)要求服务器和交换机两端都开启 LACP 协议,两边配置不一致时会出现隐蔽的问题——比如偶发丢包或吞吐上不去。