Foo*_*Bar 165 networking bridge interface
我了解如何使用的基本概念/etc/network/interfaces,但我在网上找到的都是示例,一个又一个示例,我可以从中复制粘贴。我想念的是对语法的解释,对命令含义的解释以及命令所需的顺序。我想了解一下,因为大多数时候复制粘贴是不够的,因为我不是在新机器上工作,所以我不能只覆盖现有配置,因为它会破坏很多东西。man interfaces不是很有帮助,因为它写得很复杂。
实例的问题我:是什么inet在iface行意味着什么(我甚至不能找到它的联机帮助页),是什么manual在iface行意味着什么(很多例子使用它,但根据手册页,它需要一个额外的配置文件,然后,这示例不存在),我什么时候使用或需要它们?什么时候不?当我创建一个网桥时,接口到底发生了什么?
小智 208
好吧,让我们把它分成几部分,以便更容易理解/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
Run Code Online (Sandbox Code Playgroud)
因此,通过这种方式,我创建了一个链路聚合,接口将被添加到它并在电缆链路状态下被删除。
最常见的接口类型:
下面的所有选项都是已定义接口 ( iface <Interface_family>)的后缀。基本上iface eth0创建了一个在以太网设备上调用的节eth0。iface ppp0应该创建一个点对点接口,它可以有不同的方式来获取地址,比如inet wvdial将这个接口的配置转发给wvdialconf脚本。元组inet/ inet6+option将定义将使用的IP 协议的版本以及此地址的配置方式(static, dhcp, scripts...)。在网上的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
Run Code Online (Sandbox Code Playgroud)
此示例将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
Run Code Online (Sandbox Code Playgroud)
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-启用反向路径过滤器。在有 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网络配置文件相关信息的链接: