比较 ifupdown2 命令与 ifupdown 命令
ifupdown2
是 Cumulus Linux 的网络接口管理器。它是 Cumulus Linux 和 Debian 中原始 ifupdown
的更新版本。本文演示了两者在配置接口方式上的差异。
查看所有 ifupdown2 配置关键字和选项
要确定可以为网桥设置或绑定设置配置哪些选项,请运行
ifquery --syntax-help
环回接口
ifupdown2
允许您在环回接口上配置 IP 地址
ifupdown | ifupdown2 |
---|---|
|
|
Layer 2 接口 - 物理
在原始 ifupdown
中,当方法为 manual
时,您必须在配置中指定 up link set $IFACE up
和 down link set $IFACE down
。ifupdown2
会自动为您执行此操作。
ifupdown | ifupdown2 |
---|---|
|
|
以下是一些调试代码
sudo ifup -d swp19
DEBUG: args = Namespace(CLASS=None, all=False, debug=True, excludepats=None, force=False, iflist=['swp19'], jobs=-1, noact=False, nocache=False, perfmode=False, printdependency=None, quiet=False, verbose=False, withdepends=False)
DEBUG: creating ifupdown object ..
INFO: loading builtin modules from /usr/share/ifupdownaddons
INFO: looking for user scripts under /etc/network
INFO: loading scripts under /etc/network/if-pre-up.d ...
INFO: loading scripts under /etc/network/if-up.d ...
INFO: loading scripts under /etc/network/if-post-up.d ...
INFO: loading scripts under /etc/network/if-pre-down.d ...
INFO: loading scripts under /etc/network/if-down.d ...
INFO: loading scripts under /etc/network/if-post-down.d ...
DEBUG: reading interfaces file /etc/network/interfaces
WARNING: template engine mako not found. skip template parsing ..
DEBUG: populating dependency info for ['swp19']
DEBUG: run_without_dependents for ops ['pre-up', 'up', 'post-up'] for ['swp19']
DEBUG: swp19: pre-up : running module bridge
DEBUG: swp19: pre-up : running module mstpctl
DEBUG: swp19: pre-up : running module vlan
DEBUG: swp19: pre-up : running module address
DEBUG: swp19: pre-up : running module usercmds
DEBUG: running cmd 'ethtool -s swp19 speed 1000'
INFO: Executing ethtool -s swp19 speed 1000
DEBUG: swp19: pre-up : running script /etc/network/if-pre-up.d/ethtool
DEBUG: Executing /etc/network/if-pre-up.d/ethtool
DEBUG: swp19: up : running module dhcp
DEBUG: swp19: up : running module link
INFO: Executing ip link set dev swp19 up <===== Run for you now!
DEBUG: swp19: up : running script /etc/network/if-up.d/ethtool
DEBUG: Executing /etc/network/if-up.d/ethtool
DEBUG: swp19: up : running script /etc/network/if-up.d/ip
DEBUG: Executing /etc/network/if-up.d/ip
DEBUG: swp19: up : running script /etc/network/if-up.d/mountnfs
DEBUG: Executing /etc/network/if-up.d/mountnfs
DEBUG: swp19: up : running script /etc/network/if-up.d/openssh-server
DEBUG: Executing /etc/network/if-up.d/openssh-server
DEBUG: swp19: post-up : running module usercmds
Layer 2 接口 - Trunk
使用 ifupdown2
,您无需定义子接口即可添加到 trunk。只需将其添加到网桥接口下即可。
请注意,该示例使用 bridge-ports
而不是 mstpctl-ports
。
默认情况下,bridge-stp
开启快速生成树。
ifupdown | ifupdown2 |
---|---|
|
|
Layer 2 绑定接口 - 带 Trunking
以下内容向您展示了如何在 ifupdown2
下配置带 trunking 的绑定。
ifupdown | ifupdown2 |
---|---|
|
|
Layer 2 Trunk - 端口范围
glob 关键字取代了用于创建端口范围的正则表达式,因为它不需要在 /etc/network/interfaces
中提及接口。您可以在节中提及多个 glob 语句,以便您可以配置不连续的端口范围。
ifupdown | ifupdown2 |
---|---|
|
|
IPv6 地址分配
ifupdown2 不需要在独立的 inet6 部分下配置 IPv6 地址。您可以在同一部分下完成所有接口配置。环回配置也是如此。
单个 IPv6 地址
ifupdown | ifupdown2 |
---|---|
|
|
多个 IPv6 地址
ifupdown | ifupdown2 |
---|---|
|
|
在端口上设置速度、双工和自动协商
ifupdown2
现在支持设置速度、双工和自动协商的关键字。
ifupdown | ifupdown2 |
---|---|
|
|
设置端口描述
ifupdown2
允许您在环回接口上配置 IP 地址。
ifupdown | ifupdown2 |
---|---|
|
|
# ip link show swp1
3: swp1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/ether 08:9e:01:ce:dc:c2 brd ff:ff:ff:ff:ff:ff
alias customerA
使用 “source” 关键字将接口配置放置在 /etc/network/interfaces 之外的文件中
这对于自动化非常有用。此示例显示了 Ansible 如何使用 ifupdown2
将单个端口配置写入 /etc/network/ansible/
目录中。
要查看所有配置,请运行 ifquery -a
。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
source /etc/network/ansible/*
# tree /etc/network/ansible
/etc/network/ansible
|-- swp1
|-- swp2
|-- swp3
`-- swp4
0 directories, 4 files
# ifquery -a
auto lo
iface lo inet loopback
address 10.3.3.3/32
address 10:3:3::3/128
auto eth0
iface eth0 inet dhcp
auto swp1
iface swp1
link-speed 1000
auto swp2
iface swp2
link-speed 1000
auto swp3
iface swp3
link-speed 10000
auto swp4
iface swp4
address 10.200.1.1/24
使用 Mako 创建默认配置
Mako 是一个模板引擎,您可以使用它来生成 /etc/network/interfaces
配置。使用它来生成默认配置。下面的示例显示了如何设置绑定的默认值。默认情况下,ifupdown2
读取 /etc/network/ifupdown2/templates
目录中的 Mako 文件。您可以在 /etc/network/ifupdown2/ifupdown2.conf
中更改此位置。要查看展开的配置,例如运行配置,请运行 ifquery bond0
或 ifquery -a
。
ifupdown2 - /etc/network/interfaces | ifupdown2 - /etc/network/mako/bond_defaults |
---|---|
|
|
ifquery 输出
#sudo ifquery -a
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto swp1
iface swp1
auto swp2
iface swp2
auto bond0
iface bond0
bond-slaves swp1 swp2
bond-miimon 100
bond-min-links 1
bond-mode 802.3ad
bond-xmit-hash-policy layer3+4
bond-lacp-rate 1