本节仅在需要配置网卡时参考。
从版本 209 开始,systemd 提供了一个名为 systemd-networkd 命令用于处理基本的网络配置。
systemd-networkd
的配置文件可能在 /usr/lib/systemd/network
或 /etc/systemd/network
中,其中
/etc/systemd/network
中的配置文件优先级更高。
有三种配置文的类型:.link
,.netdev
和 .network
。可以通过查阅 man 手册的
systemd-link(5)
,systemd-netdev(5)
和 systemd-network(5)
可以获得更多关于这些配置文件的详细介绍。
udev 可能根据你电脑的物理设备特性将网卡接口设置为不同的名称,比如 enp2s1。如果你不能确定你的网卡名称,可以在系统启动后执行
ip link
命令查看。
译者注:通过执行 ip link 命令,你应该能够取得类似以下的输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT
group default qlen 1000
link/ether fc:aa:14:2d:db:a1 brd ff:ff:ff:ff:ff:ff
3: wlp0s20u9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group
default qlen 1000
link/ether 0c:82:68:52:85:57 brd ff:ff:ff:ff:ff:ff
其中斜体的部分就是物理网卡的名称。
以下内容摘录于 ArchLinux
wiki:
对于有多块网卡的电脑,固定设备名称很重要。许多配置问题都是由于网络接口名称变化引起的。
udev 负责给设备命名。Systemd v197
引入了可预测的网络接口名称自动给网络设备分配静态名称,网络接口现在是以前缀
en(以太网)、wl(WLAN)、或者
ww(WWAN)附上一个自动生成的标识符,产生了一个类似于 enp2s1 的条目。
如果你的系统需要连接到互联网,它需要利用 DNS 服务将互联网域名解析为实际的 IP 地址,反之亦然。最好的方法是将从
ISP 或者是网络管理员那里取得的 DNS 服务器地址填入
/etc/resolv.conf
。
如果需要静态的 /etc/resolv.conf
文件,请使用以下命令:
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain <Your Domain Name>
nameserver <IP address of your primary nameserver>
nameserver <IP address of your secondary nameserver>
# End /etc/resolv.conf
EOF
domain
声明可以忽略或者以 search
声明替换。参考 man 手册的 resolv.conf
部分获得更多信息。
其中,<IP address of the
nameserver>
替换为最合适的 DNS 的 IP
地址。通常会有多个条目(需要备选服务器具有相关兼容性)。如果你只需要一台 DNS 服务器,请不要输入第二行 nameserver 的内容。该 IP
地址也可以是本地网络中的一台路由。
Google 公开 IPv4 DNS 解析服务器地址为 8.8.8.8 和 8.8.4.4。
(译者注:国内也有一些 IT 公司提供公开可用的 DNS 解析服务:
114 DNS:114.114.114.114 和 114.114.115.115
阿里 DNS:223.5.5.5 和 223.6.6.6
百度 DNS:180.76.76.76
OpenDNS:208.67.220.220)
当使用 systemd-networkd
配置网络,另一个守护进程 systemd-resolved
将会创建
/etc/resolv.conf
文件。然后在早先版本中此文件的路径并不标准,因此你需要使用以下的命令创建到标准位置的链接:
ln -sfv /run/systemd/resolve/resolv.conf /etc/resolv.conf
对于在 .network
文件中指定了 DNS
或者使用内置 DHCP 客户端获得 DNS 这两种情况,必须要做如上操作。
在系统启动过程中,/etc/hostname
文件用于创建系统的主机名称。
通过以下命令创建 /etc/hostname
文件:
echo "<lfs>
" > /etc/hostname
<lfs>
替换为你想要设置的名称。请不要输入完整域名(Fully Qualified Domain Name,FQDN),它应该在
/etc/hosts
文件中。
将确定IP地址、完整域名(Fully-Qualified Domain Name,FQDN)和可能的别名填入/etc/hosts
文件中。语法是:
IP_address myhost.example.org aliases
除非当前电脑对互联网可见(即已经注册有域名且分配有效的 IP 段——放心吧,大多数用户都没有),否则请确保 IP 地址位于专有网络 IP 段。有效的范围是:
私人网络地址范围 正常前缀
10.0.0.1 - 10.255.255.254 8
172.x.0.1 - 172.x.255.254 16
192.168.y.1 - 192.168.y.254 24
x 为 16-31 之间的任意值。Y 为 0-255 之间的任意值。
有效的专有 IP 地址形如 192.168.1.1,有效的完整域名形如 lfs.example.org。
就算没有网卡,也应该提供有效的完整域名,否则某些软件可能无法正常运行。
通过以下命令创建 /etc/hosts
文件:
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
::1 localhost
<192.168.0.2>
<HOSTNAME.example.org>
[alias1] [alias2] ...
# End /etc/hosts (network card version)
EOF
<192.168.0.2>
和
<HOSTNAME.example.org>
应该更改为需要设置的值(如果此 IP 地址是由网络/系统管理员分配的且电脑可以连接到存在的网络)。别名可以省略。
如果暂时不打算进行以上的配置,那直接运行下面的命令创建最通用的 /etc/hosts
文件:
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (no network card version)
127.0.0.1 <HOSTNAME.example.org>
<HOSTNAME>
localhost
::1 localhost
# End /etc/hosts (no network card version)
EOF
::1 为 IPv6 对应的 127.0.0.1,且为 IPv6 的回环接口。