/etc/network/interfaces 语法的详细解释?

/etc/network/interfaces 语法的详细解释?

我了解如何使用的非常基本的概念/etc/network/interfaces,但我在网上找到的只是示例,一个又一个示例,我可以从中复制粘贴。我缺少的是语法的解释、命令的含义以及命令所需的顺序的解释。我想理解,因为大多数时候复制粘贴是不够的,因为我不是在新机器上工作,所以我不能只覆盖现有配置,因为它会破坏很多东西。man interfaces不是很有帮助,因为它写得很复杂。

我有的示例问题:inetin a ifaceline 的确切含义是什么(我什至在手册页中找不到它),manualin a ifaceline 的确切含义是什么(许多示例使用它,但根据联机帮助页,它需要一个额外的配置文件,其中示例没有出现),我什么时候使用或需要它们?什么时候不呢?当我创建桥时,接口到底会发生什么?

答案1

好吧,让我们把它分成几部分,以便于理解/etc/network/interfaces

链路层+接口类型选项(通常是每个接口的第一个并通过以下方式调用地址族+方法interfaces(5)手册页):

auto interface– 启动时启动接口。这就是lo接口使用这种链接配置的原因。

allow-auto interface- 与...一样auto

allow-hotplug interface– 当检测到“热插拔”事件时启动接口。在现实世界中,它的使用情况与auto但不同之处在于它将等待诸如“被 udev hotplug api 检测到”或“电缆连接”之类的事件。看 ”相关内容(热插拔)” 获取更多信息。

这些选项几乎是“第 2 层”选项,用于在接口上设置链路状态,与“第 3 层”(路由和寻址)无关。举个例子,您可以有一个链路聚合,其中 bond0 接口无论链路状态如何都需要启动,并且其成员可以在链路状态事件后启动:

auto bond0
iface bond0 inet manual
        down ip link set $IFACE down
        post-down rmmod bonding
        pre-up modprobe bonding mode=4 miimon=200
        up ip link set $IFACE up mtu 9000
        up udevadm trigger

allow-hotplug eth0
iface eth0 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

allow-hotplug eth1
iface eth1 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

所以,这样我就创建了一个链路聚合并且接口将在电缆链路状态下添加和删除。

最常见的接口类型:

下面的所有选项都是已定义接口 ( ) 的后缀iface <Interface_family>。基本上是iface eth0创建了一个eth0在以太网设备上调用。iface ppp0。应该创建一个点对点接口,并且它可以有不同的方式来获取地址,例如inet wvdial将该接口的配置转发给wvdialconf脚本。元组inet/ inet6+option将定义版本IP协议将使用的地址以及该地址的配置方式(staticdhcpscripts...)。这在线 Debian 手册将为您提供更多有关此内容的详细信息。

以太网接口选项:

inet static– 定义静态 IP 地址。

inet manual– 不定义接口的 IP 地址。通常由作为桥接或聚合成员的接口、需要在混杂模式下运行的接口使用(例如端口镜像或网络 TAP),或者在其上配置 VLAN 设备。这是一种在没有 IP 地址的情况下保持接口正常运行的方法。

inet dhcp– 通过DHCP协议获取IP地址。

inet6 static– 定义静态 IPv6 地址。

例子:

# Eth0
auto eth0
iface eth0 inet manual
    pre-up modprobe 8021q
    pre-up ifconfig eth0 up
    post-down ifconfig eth0 down

# Vlan Interface
auto vlan10
iface vlan10 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        vlan-raw-device eth0
        ip_rp_filter 0

这个例子将提出eth0并创建一个VLAN接口调用vlan10它将处理以太网帧上的标记号 10。

接口节(第 2 层和第 3 层)内的常见选项:

address– 静态 IP 配置接口的 IP 地址

netmask– 网络掩码。如果您使用 cidr 地址,则可以省略。例子:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway– 服务器的默认网关。小心只使用这个家伙之一。

vlan-raw-device– 在 VLAN 接口上,定义其“父亲”。

bridge_ports– 在桥接口上,定义其成员。

down– 使用以下命令来关闭接口,而不是ifdown.

post-down– 接口关闭后立即采取的操作。

pre-up– 接口启动前的操作。

up– 使用以下命令来启动接口,而不是ifup.使用 上提供的任何选项完全取决于您的想象力iputils。作为一个例子,我们可以用来up ip link set $IFACE up mtu 9000启用巨型帧在操作期间up(而不是使用mtu选项本身)。您还可以调用任何其他软件,例如up sleep 5; mii-tool -F 100baseTx-FD $IFACE在接口启动后 5 秒强制使用 100Mbps 全双工。

hwaddress ether 00:00:00:00:00:00- 更改接口的 MAC 地址,而不是使用硬编码到 ROM 中或由算法生成的地址。您可以使用关键字random来获取随机的 MAC 地址。

dns-nameservers– 名称服务器的 IP 地址。需要resolvconf包。这是一种集中所有信息/etc/network/interfaces而不是用于/etc/resolv.confDNS 相关配置的方法。不要resolv.conf手动编辑配置文件,因为它会被系统中的程序动态更改。

dns-search example.net– 将 example.net 作为域附加到主机查询中,创建 FQDN。选项domain/etc/resolv.conf

wpa-ssid– 无线:设置无线 WPA SSID。

mtu-最大传输单元尺寸。mtu 9000= 巨型帧。如果您的 Linux 机器与支持更大 MTU 大小的交换机连接,则非常有用。可以破坏一些协议(我在 snmp 和巨型帧方面有过不好的经历)。

wpa-psk– 无线:为您的 SSID 设置十六进制编码的 PSK。

ip_rp_filter 1-反向路径过滤器已启用。在您有 2 条到主机的路由的情况下很有用,这将强制数据包从它来的地方返回(同一接口,使用其路由)。示例:您已连接到 lan( 192.168.1.1/24),并且拥有一台 dlna 服务器,其中一个接口位于 lan( 192.168.1.10/24) 上,另一接口位于 dmz 上,用于执行管理任务( 172.16.1.1/24)。在从您的计算机到 dlna dmz ip 的 ssh 会话期间,信息需要返回给您,但会永远挂起,因为您的 dlna 服务器将尝试直接通过其 LAN 接口传递响应。启用 rp_filter 后,它将确保连接将从其来源处返回。更多信息这里

其中一些选项不是可选的。例如,如果您在没有网络掩码的接口上输入 IP 地址,Debian 会发出警告。

您可以找到更多好的网络配置示例这里

相关内容:

包含与/etc/network/interfaces网络配置文件相关的信息的链接:

答案2

我还要补充一点:

  • 接口用于 ifup/ifdown 服务。
  • 当你使用allow-hotplug时,它不会以ifup/ifdown开头,因为你需要使用标志--allow=hotplug。

您可以使用 --verbose 标志来跟踪 ifup 发生的情况。

我对此不是 100% 确定,但似乎基本上当调用 ifup 时,您将使用 up 执行 /etc/network/interfaces 中的所有内容...如果没有另外说明的话。

我不确定它与以下内容有何关系:服务网络......

如果有人能指出通话后发生的事情,那就太好了:

service networking restart

与 ifup/ifdown 相关。

答案3

如果您在使用该软件包时需要添加选项resolvconf,即在 Ubuntu 上,您可以将该配置放入/etc/resolvconf/resolv.conf.d/base

# /etc/resolvconf/resolv.conf.d/base
options timeout:1 attempts:1 rotate

答案4

属性名称的重要一点是:

没有任何具有标准描述的文件。这意味着该文件是实现定义的

可以是小写、大写或混合大小写

“-”或“_”并不重要

不能包含空格和制表符

据 ifupdown 消息来源称

除了一些常见的名称,如“pre-up”“down”等,不能用其他方式写

相关内容