关于/ etc / network / interfaces语法的详细说明?


139

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

实例的问题我:是什么inetiface行意味着什么(我甚至不能找到它的联机帮助页),是什么manualiface行意味着什么(很多例子使用它,但根据手册页,它需要一个额外的配置文件,然后,这这些示例不存在),何时使用或需要它们?什么时候不?创建网桥时,接口究竟发生了什么?


4
手册页说接口名称后面是接口使用的地址族。“ inet”是IPv4的名称,inet6是ipv6的名称。还有ipx,x25,appletalk ...,尽管如手册页所述,ifupdown仅处理inet / inet6 / ipx。manual意味着ifupdown对它们不做任何事情,您必须自己手动进行。
斯特凡Chazelas

Answers:


168

好吧,让我们将其分成几部分,以使其更易于理解/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.conf用于与DNS相关的配置。请勿resolv.conf手动编辑配置文件,因为配置文件会被系统中的程序动态更改。

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

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

mtu- MTU大小。mtu 9000=巨型帧。如果您的Linux机器与支持更大MTU大小的交换机连接,则很有用。可能会破坏某些协议(我在使用snmp和巨型帧方面经验很差)。

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

ip_rp_filter 1- 启用反向路径过滤器。在您有两条通往主机的路由的情况下很有用,这将迫使数据包从其到达的地方返回(相同接口,使用其路由)。示例:您已连接到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网络配置文件有关的信息的链接:


谢谢,这很有帮助。是否inet有任何与“互联网”?我读过一些东西,它的意思只是“ IPv4”和inet6“ IPv6”,但是当您看到“ inet”这个术语并将其与“ internet”的缩写混淆时,它确实令人困惑。一个人使用的名称(例如eth0)是已定义的,还是我可以自己选择?如果我有多个LAN适配器,如何知道哪个eth属于哪个LAN适配器?
Foo Bar

2
都。它们共同定义了IP地址获取的方法(dhcp,静态,ppp脚本,无地址)和ip协议的版本(inet= v4和inet6= v6)。接口名称在很大程度上取决于您使用的发行版以及udev配置方式。Debian使用eth*wlan*连接电缆和无线接口。Fedora使用biosdevname方案,它em0是主板上的第一个内置以太网接口,以及p<slot>p<eth port>PCI NIC的名称。您可以将网络名称固定在/etc/udev/rules.d/70-persistent-net.rules或在上创建别名interfaces

2
关于“网关-服务器的默认网关。请谨慎使用此家伙中的一个。” 是每个节一个,还是所有节中一个网关接口?
ctbrown 2014年

2
应该是所有节中的一个网关,否则,您将无法使用默认路由。要使用多网关/多链接,将需要一些有关iptables +程序包标记+ ip规则的思考。

一个小查询,如果在此文件中,我具有iface eth0 inet static,然后针对地址字段编写一些IP,这是否意味着我刚刚编写的该IP将绑定到系统的MAC地址?
k10

0

我还要补充一点:

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

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

我不是对此有100%的把握,但似乎基本上,如果调用ifup,则u将从/ etc / network / interfaces中使用up执行所有操作,除非另有说明。

我不知道它与服务网络的关系是什么...

如果有人指出呼叫后发生的事情,那就更好了:

service networking restart

关于ifup / ifdown。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.