Skip to content

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.5

NetworkManager 是更现代的管理方式。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
字段含义
versionnetplan 配置格式版本,目前是 2
dhcp4是否通过 DHCP 获取 IPv4 地址
addresses静态 IP 地址列表,可配多个
routes路由规则,to: default 即默认路由
nameserversDNS 服务器列表

应用配置两种方式:

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 1active-backup主备,一块网卡故障后切换到另一块
mode 4802.3ad(LACP)链路聚合,交换机需要配合配置 LACP

查看 bonding 状态:

bash
cat /proc/net/bonding/bond0

mode 1(主备)实施最简单,交换机侧不需要特殊配置。mode 4(LACP)要求服务器和交换机两端都开启 LACP 协议,两边配置不一致时会出现隐蔽的问题——比如偶发丢包或吞吐上不去。