arch linux配置IP(静态或动态)
在arch linux系统中,配置IP地址主要通过:
netctl
备注
以下案例网络设备命名已经采用了 通过udev重命名网络设备名 ,所以有线网络接口为 eth0 / 无线网络接口 wlan0
配置静态IP
netctl
netctl 是用于控制systemd服务网络管理器的命令行工具,如果已经安装了 netctl 则有一些案例位于 /etc/netctl/examples/ 目录下:
ethernet-dhcpethernet-static
首先通过 ip link 命令获得主机网卡接口名。在 ThinkPad X220笔记本 会显示如下:
Intel 82579LM 千兆有线网卡:
enp0s25Intel Advanced-N 6205无线网卡:
wlp3s0
(可选)对于网络配置,如果识别的网卡命名不是默认约定的 eth0 和 wlan0 会带来一些困扰。所以,如果需要可以先采用 通过udev重命名网络设备名 。
备注
我在 ThinkPad X220上运行Arch Linux(U盘) 没有采用 netctl 而是采用 Systemd Networkd服务 ,所以这段只做记录
复制配置案例:
sudo cp /etc/netctl/examples/ethernet-static /etc/netctl/eth0
修订
/etc/netctl/eth0:
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.6.199/24')
Gateway=('192.168.6.200')
DNS=('192.168.6.200' '192.168.7.200')
激活每次自动启动:
sudo netctl enable eth0
最后启动网卡:
sudo netctl start eth0
既然是静态分配IP,我们可以关闭和禁止dhcp服务:
sudo systemctl stop dhcpcd sudo systemctl disable dhcpcd
Systemd Networkd服务 方法(推荐)
使用 Systemd进程管理器 的 Systemd Networkd服务 配置静态IP地址的方法更为通用
编辑创建一个网络profile:
/etc/systemd/network/eth0.network:
[Match]
Name=eth0
[Network]
Address=192.168.6.199/24
Gateway=192.168.6.200
DNS=192.168.6.200
DNS=192.168.7.200
如果已经设置过
netctl则需要停止并移除netctl,如果需要还可停止dhcpcdsudo systemctl disable netctl@eth0.service sudo pacman -Rns netctl sudo systemctl stop dhcpcd sudo systemctl disable dhcpcd
启动并激活 Systemd Networkd服务 和 systemd-resolved (需要这个服务来解析DNS):
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
NetworkManager
目前主要的发行版都使用 NetworkManager 来管理Desktop版本的网络,配套提供了 nmcli 和 nmtui 来方便管理配置。其中 nmtui 使用最为简单,完全和图形桌面管理工具类似。
使用 nmtui 配置静态IP地址,实际上就是生成一个 /etc/NetworkManager/system-connections 目录下以 .nmconnection 后缀的配置文件(文件名前缀可以任意字符串)。例如,可以将生成的 eth0.nmconnection 复制到其他服务器,简单修改就可以完成配置:
/etc/NetworkManager/system-connections/eth0.nmconnection[connection]
id=eth0
uuid=c1fd55cd-a1d2-3dfc-add6-ad1138b407f5
type=ethernet
autoconnect-priority=-999
interface-name=eth0
timestamp=1728662917
[ethernet]
[ipv4]
address1=192.168.7.221/24
method=manual
[ipv6]
addr-gen-mode=default
method=disabled
[proxy]
使用wpa_supplicant连接无线网络
安装
rfkill和wpa_supplicantsudo pacman -S rfkill wpa_supplicant
检查网卡状态:
rfkill list
如果无线网卡状态是 Soft blocked 则启动它:
rfkill unblock wifi
配置office的无线
/etc/wpa_supplicant/wpa_supplicant.conf:
ctrl_interface=/var/run/wpa_supplicant
# 配置Country Code支持5G Hz无线连接
country=CN
# ap_scan支持扫描隐藏的SSID
ap_scan=1
network={
ssid="SSID-OFFICE"
key_mgmt=WPA-EAP
eap=PEAP
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
identity="user_name"
password="user_password"
priority=10
}
复制
wpa_supplicant.service配置:sudo cp /lib/systemd/system/wpa_supplicant.service /etc/systemd/system/wpa_supplicant.service
修订
/etc/systemd/system/wpa_supplicant.service指定接口:ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
激活
wpa_supplicant.servicesudo systemctl enable wpa_supplicant.service
安装
dhclientsudo pacman -S dhclient
配置
/etc/systemd/system/dhclient.service:
[Unit]
Description= DHCP Client
Before=network.target
[Service]
Type=simple
ExecStart=/sbin/dhclient wlan0 -v
#ExecStop=/sbin/dhclient wlan0 -r
[Install]
WantedBy=multi-user.target
然后激活服务:
sudo systemctl enable dhclient.service
注意,我的主机有2个接口,我的配置要求是:
有线网卡配置静态IP地址,并且提供DNS解析,但是取消掉默认网关(默认路由从无线网络)
无线网络使用DHCP获得IP,但是忽略掉DHCP分配的DNS(DNS采用有线网络内网的 私有云DNS服务(dnsmasq)和共享因特网(ICS) )
这里需要配置 dhclient 但是忽略掉DHCP分配的DNS,通常方式是修订 /etc/dhcp/dhclient.conf ,设置和有线网卡静态IP地址一致的DNS配置:
supersede domain-name-servers 192.168.6.200;
不过,由于我使用了简化的 dhclient.service 配置,并没有指定配置文件,所以采用手工修订 /etc/resolv.conf ,然后执行以下命令将文件设置为不可修改:
chattr +i /etc/resolv.conf
这样就不会被DHCP错误修改DNS配置