arch linux配置IP(静态或动态)¶
在arch linux系统中,配置IP地址主要通过:
netctl
备注
以下案例网络设备命名已经采用了 通过udev重命名网络设备名 ,所以有线网络接口为 eth0
/ 无线网络接口 wlan0
配置静态IP¶
netctl
方法¶
netctl
是用于控制systemd服务网络管理器的命令行工具,如果已经安装了 netctl
则有一些案例位于 /etc/netctl/examples/
目录下:
ethernet-dhcp
ethernet-static
首先通过 ip link
命令获得主机网卡接口名。在 ThinkPad X220笔记本 会显示如下:
Intel 82579LM 千兆有线网卡:
enp0s25
Intel 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
,如果需要还可停止dhcpcd
sudo 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
使用wpa_supplicant连接无线网络¶
安装
rfkill
和wpa_supplicant
sudo 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"
}
复制
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.service
sudo systemctl enable wpa_supplicant.service
安装
dhclient
sudo 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配置