一、iproute2

Arch LInux已经弃用了 net-tools,转而使用 iproute2。

iproute2提供 ip 命令行接口,用于管理网络接口,IP地址。路由表。

使用 ip 命令配置的信息会在系统重启后丢失,要进行永久配置,可以使用网络管理器或者systemd来使ip命令自动化。

安装:

yay iproute2

二、使用

iproute2相对于net-tools,替代的命令如下:

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_ip

1. 网络接口管理

(1)列出当前网络接口:

ip link show

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_ip地址_02

可以看到有两张网卡,有线网卡是enp42s0,无线网卡是wlo1,lo是Loop设备,不被用于建立网络连接。

如果没有看到对应的网卡,需要检查网卡驱动是否正确。

网卡名称后面的 ​​<BROADCAST,MULTICAST,UP,LOWER_UP>​​​ 中的​​UP​​表示接口已经启动。

(2)启用和禁用网络接口

sudo ip link set interface up|down

2. ip地址管理

(1)查看ip地址:

ip address show

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_ip_03

(2)设置静态ip地址

推荐通过网络管理器来设置,看第三节网络管理器。

3. 路由表管理

(1)列出IPv4路由:

ip route show

(2)列出IPv6路由:

ip -6 route

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_archlinux_04

(3)添加路由:

ip route add PREFIX via address dev interface

(4)删除路由:

ip route del PREFIX via address dev interface

在 PREFIX 处使用 CIDR 表示法,或填入 default 表示默认网关。

三、网络管理器

网络管理器可以在网络配置文件中管理网络连接设置,以便切换网络。

网络管理器有许多种方案,这些都是互斥的,选择一种即可。

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_archlinux_05

这里我使用 systemd-networkd。

1. systemd-networkd

systemd-networkd 是一个管理网络配置的系统守护进程,它会在网络设备出现时检测和配置。

systemd是Arch默认安装的一部分,包含操作有线网络所需的所有文件(无线网络管理可以用iwd或者wpa_supplicant)。

2. 基本用法

(1)启动//使能systemd-networkd

systemctl enable systemd-networkd.service

(2)启动/使能DNS解析服务(可选)

systemctl enable systemd-resolved.service

(3)查看系统上所有设备

Systemd/udev 会自动为所有本地以太网、WLAN 和 WWAN 接口分配可预测且稳定的网络接口名。

networkctl list

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_ip地址_06

3. 配置

systemd-networkd的配置文件应该存储在​​/etc/systemd/network/​​​目录下,文件格式为​​.network​​。


我的电脑上同时想开启有线网卡和无线网卡,但数据包想优先走无线,使用了RouteMetric选项,该值越小优先级越高,手动设置网卡优先级。


(1)配置有线适配器的静态ip

编辑文件:

sudo vim /etc/systemd/network/20-wired.network

添加配置内容(不使用DNS):

[Match]
Name=enp42s0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
#DNS=8.8.8.8

[DHCP]
RouteMetric=100

(2)配置无线适配器的dhcp

为了能够使用 systemd-networkd 连接一个无线网络,需要一个被其他应用,比如 wpa_supplicant 或 Iwd,配置好的无线适配器。

编辑文件:

sudo vim /etc/systemd/network/25-wireless.network

添加以下配置内容:

[Match]
Name=wlp41s0

[Network]
DHCP=ipv4

[DHCP]
RouteMetric=0

(3)重启服务

在修改了配置文件之后,重启服务以使得它们生效:

sudo systemctl restart systemd-networkd.service

重启之后查看ip地址:

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_iproute_07

查看路由表:

Arch LInux | 网络管理工具iproute2(网络接口、ip地址、路由表)_ip地址_08