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

示例问题:inet行中的iface到底是什么意思(我什至在手册页中都找不到),manual在什么地方iface行的确切含义(很多示例都使用它,但是根据手册页的说明,它需要一个额外的配置文件,而这些示例不存在),我何时使用或需要它们?什么时候不?创建网桥时,接口究竟发生了什么?

评论

手册页说接口名称后面是接口使用的地址族。 “ inet”是IPv4的名称,inet6是ipv6的名称。还有ipx,x25,appletalk ...,尽管如手册页所述,ifupdown仅处理inet / inet6 / ipx。手动意味着ifupdown对它们不执行任何操作,则必须自己手动执行。

#1 楼

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

链接层+接口类型选项(通常是每个接口节的第一个,并由interfaces(5)联机帮助页称为地址族+方法):

auto interface –在引导时启动接口。这就是为什么lo接口使用这种链接配置的原因。
allow-auto interface –与auto

allow-hotplug interface相同–在检测到“热插拔”事件时启动接口。在现实世界中,它与auto的使用情况相同,但区别在于它将等待诸如“被udev hotplug api检测到”或“电缆链接”之类的事件。有关更多信息,请参见“相关的东西(热插拔)”。寻址)。例如,您可能具有链接聚合,无论链接状态是什么,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,并创建一个名为vlan10的VLAN接口,该接口将处理以太网帧上的标记号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,以在接口启动后5秒钟强制100Mbps全双工。

up sleep 5; mii-tool -F 100baseTx-FD $IFACE-更改接口的mac地址,而不是使用硬编码到rom或由算法生成的地址。您可以使用关键字hwaddress ether 00:00:00:00:00:00来获取随机的mac地址。

random –名称服务器的IP地址。需要dns-nameservers软件包。这是一种将所有信息集中在resolvconf中的方法,而不是将/etc/network/interfaces用于与DNS相关的配置。
请勿手动编辑/etc/resolv.conf配置文件
,因为它将由系统中的程序动态更改。
/>
resolv.conf –将example.net作为域附加到主机的查询中,从而创建FQDN。 dns-search example.net的选项domain

/etc/resolv.conf –无线:设置无线WPA SSID。

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

mtu 9000 –无线:为您的SSID设置十六进制编码的PSK。已启用。在您有两条通往主机的路由的情况下很有用,这将迫使数据包从其到达的地方返回(相同的接口,使用其路由)。示例:您已连接到lan(wpa-psk)上,并且拥有一台dlna服务器,该服务器的lan(ip_rp_filter 1)上具有一个接口,而dmz上的另一个接口可用于执行管理任务(192.168.1.1/24)。在从计算机到dlna dmz ip的ssh会话中,信息需要返回给您,但由于您的dlna服务器将尝试直接通过其lan接口传递响应,因此该信息将永远挂起。在启用rp_filter的情况下,它将确保连接将从其来源返回。此处有更多信息。

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

您可以在此处找到更多网络配置的好例子。
相关资料:

具有与192.168.1.10/24网络配置文件有关的信息的链接:




HOWTO:无线安全性-WPA1,WPA2 ,LEAP等。

如何用ip / iproute2桥接两个接口?
接口的热插拔事件是什么?


评论


谢谢,这很有帮助。 inet与“互联网”有关系吗?我读过一些东西,它只表示“ IPv4”,而inet6表示“ IPv6”,但是当您看到“ inet”一词并使其与“ internet”的简称混淆时,它确实令人困惑。一个人使用的名称(例如eth0)是​​否已定义,或者我可以自己选择它们?如果我有多个LAN适配器,如何知道哪个eth属于哪个LAN适配器?

– Foo酒吧
2014年5月9日12:48



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

–user34720
2014年5月9日13:05



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

–ctbrown
2014年12月12日14:17

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

–user34720
15年1月20日在11:26

allow-hotplug不会在后台等待以太网端口上的“电缆链接”事件,并且从未这样做。 unix.stackexchange.com/a/520633/29483

– sourcejedi
19年5月23日在14:22

#2 楼

我还要补充一点:


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

我不是100%同意,但似乎基本上,当调用ifup时,u将从/ etc / network / interfaces中使用up执行所有操作,除非另有说明。

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

如果有人指出通话后发生的事情,那将是很好的事情:

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