Debian 网络接口设置
关于在 Debian GNU/Linux 和 Debian 相关发行版中设置网络接口的知识对于每个 Linux 工程师来说都是必不可少的。在本文中,我们将向您解释在哪里可以找到适当的信息,以及如何针对 IPv4 IPv4 [2] 和 IPv6 [3] 进行设置。选项的数量相当长,但为您的具体情况提供了很大的灵活性。
Debian 网络设置
网络接口的整个配置都存储在名为 /etc/network 的单个目录中的纯文本文件中。该目录包含许多文件和子目录,涵盖 IPv4 和 IPv6 的设置。
接口和接口.d:每个接口的常规配置
if-down.d:接口出现故障时运行的脚本
if-post-down.d:接口宕机后运行的脚本
-
if-up.d:接口启动时运行的脚本
if-pre-up.d:接口上线前运行的脚本
具体配置是根据每个网络接口完成的。您可以将所有这些内容存储在名为interfaces 的单个文件中,或者作为单独的文件存储在interfaces.d 目录中。便携式设备的典型 IPv4 配置如下所示。它由一个环回接口 (/dev/lo)、一个以太网接口 (/dev/eth0) 和无线接口 (/dev /wlan0)。第 1 行是指包含存储在目录 /etc/network/interfaces.d/ 中的所有脚本。第 3 到 5 行配置 /dev/lo,第 7 到 9 行 /dev/eth0,第 11 行配置接口/dev/wlan0。下面给出了单个命令的详细说明。
2
3 # The loopback network interface
4 auto lo
5 iface lo inet loopback
6
7 # The primary network interface
8 allow-hotplug eth0
9 iface eth0 inet dhcp
10
11 iface wlan0 inet dhcp
对于其他 Debian GNU/Linux 版本或基于它的发行版,文件“interfaces”可能看起来相似,但网络设备的名称不同。从 Debian 9 开始,“拉伸”旧的网络名称,例如 /dev/eth0、/dev/eth1 和 /dev/wlan0 已消失,因为设备名称可能会更改。新名称与这些名称类似 - /dev/enp6s0、 /dev/enp8s0、/dev/enp0s31f6 和 /dev/enp5s0 [1]。对于可用的网络接口,请查看文件“/sys/class/net” - 在我们的示例中,接口名为 /dev/lo 和 /dev/enp0s3。
可用网络接口列表:
这些接口的配置如下所示。下图取自 Debian GNU/Linux 9.5。
Debian GNU/Linux 9.5 上的基本网络配置:
下一步,我们将看看配置所需接口的单个语句。
Debian 网络配置详细信息
启动时自动启用接口
系统启动时,安装脚本会遍历网络接口的配置文件。为了自动启用接口,请添加关键字“auto”(“allow-auto”的缩写),后跟接口的逻辑名称。安装脚本将调用命令“ifup -a”(“-all”的缩写)来激活上述接口。以下行将仅打开环回接口 /dev/lo:
网络接口按照列出的顺序显示。以下行显示 /dev/lo,然后是 /dev/wlan0,最后是 /dev/eth0。
如果插入网线则激活接口
关键字“allow-hotplug”会导致基于物理连接的事件。插入网线后,指定的网络接口就会激活;拔下网线后,指定的网络接口就会停用。下一行演示了以太网接口 /dev/eth0 的情况(类似于清单 1 的第 8 行)。
静态接口配置
为了与网络中的其他计算机进行通信,为接口分配了 IP 地址。该地址可以动态获取(通过 DHCP)或以固定方式设置(静态配置)。因此,接口的声明以关键字“iface”开头,后面是网络接口的逻辑名称、连接类型以及用于获取IP地址的方法。下一个示例显示了具有静态 IPv4 地址 192.168.1.5 的网络接口 /dev/eth0 的情况。
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
在接口声明之后,您会被邀请指定一些选项(括号中的选项名称)。这包括 IP 地址 (address)、网络掩码 (netmask)、广播范围 (broadcast)、默认网关的路由度量 (metric)、默认网关 (gateway)、另一端点的地址等值(pointtopoint)、链路本地地址(hwaddress)、数据包大小(mtu)以及地址有效范围(scope)。下一个示例显示网络接口 /dev/enp0s3 [4] 的 IPv6 配置。
address fd4e:a32c:3873:9e59:0004::254
netmask 80
gateway fd4e:a32c:3873:9e59:0004::1
通过 DHCP 进行动态接口配置
连接到不同的网络需要灵活性。动态主机控制协议 (DHCP) [5] 使这种灵活性成为可能,网络脚本将 IP 地址分配给从 DHCP 服务器移交的网络接口。以下行针对名为 /dev/wlan0 的 wlan 接口演示了这一点:
#For IPv6 use this line, instead:
iface wlan0 inet6 dhcp
与上面的静态配置类似,可以设置许多选项。这些选项取决于您的 DHCP 设置。其中,该列表包括要请求的主机名 (hostname)、添加路由的度量 (metric)、以小时或秒为单位的首选租用时间 (leasehours、leasetime)、客户端标识符 (client) 或硬件地址 (hwaddress )。
其他选项
配置文件 /etc/interfaces 还允许设置引导协议 (BOOTP) [6] (bootp)、PPP (ppp) 以及 IPX [7]。
显示界面配置
在 Debian GNU/Linux 版本 8 之前,使用命令“/sbin/ifconfig”来显示接口配置。请参阅下面第一个以太网接口的配置。
使用ifconfig进行界面配置:
从版本 9 开始,不再预安装命令“ifconfig”,而是由其前身“ip”代替。请改用命令“ip addr show”。
使用ip的接口配置:
启用和禁用接口
如上所述,选项“auto”在启动时自动启用接口。有两个命令可手动启用和禁用接口。在 Debian 8 之前,使用“ifconfig eth0 up”或“ifup eth0”来启用该接口。从 Debian 9 开始,仅使用“ifup eth0”。对应项是“ifconfig eth0 down”和“ifdown eth0”。下图显示了启用接口时的默认输出。
使用ifup激活接口:
添加更多选项
如果接口被激活或停用,可以添加进一步的操作。这些脚本称为 if-pre-up 和 if-post-down 脚本,在启用接口之前和禁用接口之后发挥作用。
下一个示例结合防火墙(在接口也处于活动状态时处于活动状态)来演示这一点。在第 3 行中,在激活接口之前调用脚本 /usr/local/sbin/firewall-enable.sh(因此标记为“pre-up”,在第 4 行中,脚本“/usr/local/sbin/firewall-接口停用后会调用“disable.sh”。
2 iface eth0 inet dhcp
3 pre-up /usr/local/sbin/firewall-enable.sh
4 post-down /usr/local/sbin/firewall-disable.sh
结论
Debian GNU/Linux 中网络接口的基本配置相当简单——几行代码就可以完成。有关其他选项的更多信息,您可以查看下面给出的资源。
链接和参考
[1] Debian Wiki,网络配置[2] IPv4,维基百科[3] IPv6,维基百科[4] Debian 静态 Ip IPv4 和 IPv6[5] 动态主机控制协议 (DHCP),维基百科[6] 引导协议 (BOOTP),维基百科[7] 互联网数据包交换 (IPX),维基百科
谢谢
作者要感谢 Axel Beckert 在准备本文时提供的帮助和批评意见。