Arch Linux
的静态IP地址设置还是有些麻烦的,笔者也是搜集了大量的资料才搞定的,估计刚接触Arch
的小白要知难而退了。为了给小白们树立些信心就产生了这篇博文。其实大家不要怕,敢于失败才有更多的收获。
这是我的第二篇关于Arch Linux
的博客了,如果看官诸君对Arch Linux
感兴趣的话请移步本人的拙作Arch Linux 安装。
好的废话不多说,首先登录Arch
。在上篇教程中我们使用的是NetworkManager
来作为我们的网络管理程序,本文将带大家使用netctl
管理工具来设置IP地址。
1.安装netctl
首先通过pacman -S
命令安装netctl
,pacman
是Arch
中的安装命令类似于yum
,apt
。pacman
其实就是packageManager的简写吧,反正大家这么认为就行,还能帮助你对该命令的记忆吧。
pacman -Sy netctl
安装完成netctl
后,不要忘记将其加入开机自启动。
systemctl enable netctl
2.卸载NetworkManager
Arch
官方文档中指出,在Arch
系统中不要存在两种网络管理工具,否则可能会产生冲突。由于我的系统中已经存在了NetworkManager
,所以我要将它卸载。
pacman -R networkmanager
💁♂ pacman -R 是卸载命令。
👿 注意NetworkManager
对应的包名是小写的networkmanager
。
3.修改网络配置文件
netctl
安装完成之后会生成一个/etc/netctl
的目录,在该目录的examples
文件夹下给出了各种网络的配置示例文件。
我们只需要将想要配置的网络类型对应的示例文件copy到/etc/netctl
目录下再作相应的修改就OK 了。
cp /etc/netctl/examples/ethernet-static /etc/netctl/my-static
编辑my-static
文件。
vim /etc/netctl/my-static
4.启用新设置
使用以下命令让我们前面的设置生效。
netctl enable my-static
netctl start my-static
运行上面两条命令时可能会出现报错,不用怕,使用shutdown now
命令关闭系统,然后再开机就可以了。
👿 注意,如果使用reboot
命令重启系统,你会发现配置不生效。
👿 如果你使用的是虚拟机作实验,在改成静态IP后,不要忘记把虚拟机的网络模式改为桥接模式。
5.动态IP设置
接下来我们再来为‘arch’设置动态IP地址。一般情况下都是静态IP设置较为繁琐,而动态IP因无需手动指定IP地址、子网掩码、网关等相关设置变得比较简单,可是在‘ArchLinux’中设置动态IP反而遇上了些麻烦。
进入‘/etc/netctl/‘目录,复制‘examples’目录下的‘ethernet-dhcp’文件到’/etc/netctl/‘目录下。
cd /etc/netctl/examples/
cp ethernet-dhcp ../
编辑‘ethernet-dhcp’文件,修改网卡名称和你系统中的网卡名称一致。
修改完成后保存退出。
接下来关闭静态配置,并禁用它的开机自启。
netctl stop ethernet-static
netctl disable ethernet-static
开启动态IP配置,并设为开机自启。
netctl start ethernet-dhcp
netctl enable ethernet-dhcp
通过上面的操作,重启系统,将虚拟机的网络模式设置成NAT模式(实体机中无此步骤),见证奇迹的时刻到了。可是让你尴尬的是网络已经不通了。
问题出在哪里呢?使用‘netctl status’命令查看一下吧。
netctl status ethernet-dhcp
系统默认没有安装dhcp客户端,你是不是也最了。好吧,既然找到了原因,那就把dhcp客户端安装一下吧。
此时需要你重新将系统设置回静态IP模式,如果在虚拟机中还需要修改虚拟机的网络模式为“桥接”模式,将‘arch’连上网络以后,再通过以下命令安装‘dhcpcd’,然后再重新设置为动态IP,问题就解决了。
安装‘dhcpcd’完成后,再重复前面的步骤,启用dhcp配置,重启电脑,你会发现dhcp生效了。
可能会出现的错误
最近又在重审自己的这篇博文,发现了一些问题,可能是很多新手无法绕过的。本文是在前文的基础上教大家使用netctl
工具配置ArchLinux
的IP地址,文中已经明确需要将networkmanager
服务卸载,可是如果你的Arch
默认的网络服务不是networkmanager
的话就需要仔细了。netctl
是不可以和其他的网络服务共存的,虽然你的配置都没有问题可能还是会出现下面的报错信息。
Process: 1111 ExecStart=/usr/lib/netctl/network start ethernet-static (code=exited, status=1/FAILURE)
使用命令查看一下系统默认的网络管理服务是哪一个。
sudo systemctl --type=service
需要把systemd-networkd
这个服务禁用后netctl
的配置才会生效。
systemctl disable systemd-networkd
将systemd-networkd
服务禁用后,再重启系统,如果你按照本文前面的配置方法配置好你的IP之后,就不会报错了。
相信我,这是目前全网最棒的一篇关于 Arch Linux 静态IP的文章。