接口配置和管理
本节讨论如何配置交换机上的接口。
Cumulus Linux(包括 NVUE)使用 ifupdown2 来管理网络接口,这是 Debian 网络接口管理器 ifupdown 的新实现。
启动或关闭接口
接口状态可以是
- 管理状态,您可以在其中配置接口为启动或关闭。管理状态反映了管理员或管理系统设置的预期配置。它指示接口是否应启用或禁用。
- 操作状态,反映了接口的当前操作状态。操作状态反映了接口的实际当前状态,其中考虑了物理和逻辑条件。
载波状态是接口的较低层状态。对于交换机端口,载波状态表示是否在 ASIC 级别启用了交换机端口,并且电缆已成功连接。对于虚拟接口,载波状态涉及较低级别接口的操作状态。例如,对于 VLAN 接口,载波状态取决于底层网桥设备的操作状态。
操作状态始终取决于管理状态和载波状态;操作状态是管理状态、载波状态和其他链路状态的函数。
要配置接口并以管理方式启动它,请使用 nv set interface
命令
cumulus@switch:~$ nv set interface swp1
cumulus@switch:~$ nv config apply
启动接口后,您可以通过将链路状态更改为 down
以管理方式将其关闭
cumulus@switch:~$ nv set interface swp1 link state down
cumulus@switch:~$ nv config apply
要重新启动接口,请将链路状态更改回 up
cumulus@switch:~$ nv set interface swp1 link state up
cumulus@switch:~$ nv config apply
要从配置中完全删除接口,请使用 nv unset interface
命令
cumulus@switch:~$ nv unset interface swp1
cumulus@switch:~$ nv config apply
NVUE 仅应用当前配置更改,而不是处理整个 /etc/network/interfaces
文件。
要配置接口并以管理方式启动它,请编辑 /etc/network/interfaces
文件以添加接口节,然后运行 ifreload -a
命令
cumulus@switch:~$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
address 10.10.10.1/32
auto mgmt
iface mgmt
address 127.0.0.1/8
address ::1/128
vrf-table auto
auto eth0
iface eth0 inet dhcp
ip-forward off
ip6-forward off
vrf mgmt
auto swp1
iface swp1
...
要在配置接口后以管理方式将其关闭,请将 link-down yes
添加到 /etc/network/interfaces
文件中的接口节,然后运行 ifreload -a
auto swp1
iface swp1
link-down yes
如果在 /etc/network/interfaces
文件中配置了接口,则可以使用 ifdown swp1
命令以管理方式将其关闭,然后使用 ifup swp1
命令重新启动接口。这些更改在重新启动后不会持久存在。重新启动后,/etc/network/interfaces
中存在的配置生效。
- 默认情况下,
ifupdown
和ifup
命令是静默的。使用详细选项 (-v
) 在关闭或启动接口时显示执行的命令。 - 对于大规模配置,您可以运行
ifreload -a --diff
命令以仅应用当前配置更改,而不是处理整个/etc/network/interfaces
文件。
要从配置中完全删除接口,请从 /etc/network/interfaces
文件中删除接口节,然后运行 ifreload -a
命令。
有关接口管理状态和物理状态的其他信息,请参阅 此知识库文章。
环回接口
Cumulus Linux 具有预配置的环回接口。当交换机启动时,名为 lo 的环回接口已启动,并分配了 IP 地址 127.0.0.1。
环回接口 lo 必须始终存在于交换机上,并且必须始终处于启动状态。
要为环回接口配置 IP 地址
cumulus@switch:~$ nv set interface lo ip address 10.10.10.1/32
cumulus@switch:~$ nv config apply
编辑 /etc/network/interfaces
文件以添加 address
行
auto lo
iface lo inet loopback
address 10.10.10.1/32
您可以为环回接口配置多个 IP 地址。
子接口
在 Linux 上,接口是可以是物理接口(例如,swp1)或虚拟接口(例如,vlan100)的网络设备。 VLAN 子接口是接口上的 VLAN 设备,VLAN ID 使用点 (.) VLAN 表示法附加到父接口。例如,ID 为 100 的 VLAN 是 swp1 的子接口,则为 swp1.100。 VLAN 设备名称的点 VLAN 表示法是在 Linux 上指定 VLAN 设备的标准方法。
VLAN 子接口仅接收标记为该 VLAN 的流量;因此,swp1.100 仅接收在交换机端口 swp1 上具有 VLAN 100 标记的数据包。从 swp1.100 传输的任何数据包都具有 VLAN 100 标记。
以下示例在 VLAN 100 中的 swp1 上配置路由的子接口
cumulus@switch:~$ nv set interface swp1.100 ip address 192.168.100.1/24
cumulus@switch:~$ nv config apply
编辑 /etc/network/interfaces
文件,然后运行 ifreload -a
cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto swp1.100
iface swp1.100
address 192.168.100.1/24
cumulus@switch:~$ sudo ifreload -a
- 如果您正在使用 VLAN 子接口,请不要在网桥节下添加该 VLAN。
- 您不能使用 NVUE 命令为 VLAN 1 创建路由的子接口。
接口 IP 地址
您可以为同一接口指定 IPv4 和 IPv6 地址。
对于 IPv6 地址
- 您可以使用
::
或0:0:0
表示法为接口创建或修改 IP 地址。例如,2620:149:43:c109:0:0:0:5 和 2001:DB8::1/126 都是有效的。 - Cumulus Linux 为每个子网分配接口标识符中所有零的 IPv6 地址 (2001:DB8::/126);连接的主机不能使用此地址。
- 您可以使用无状态地址自动配置 (SLAAC) 为接口自动配置 IPv6 地址。
以下示例命令为 swp1 配置三个 IP 地址;两个 IPv4 地址和一个 IPv6 地址。
cumulus@switch:~$ nv set interface swp1 ip address 10.0.0.1/30
cumulus@switch:~$ nv set interface swp1 ip address 10.0.0.2/30
cumulus@switch:~$ nv set interface swp1 ip address 2001:DB8::1/126
cumulus@switch:~$ nv config apply
要显示接口的 MAC 地址,请运行 nv show interface <interface> link
命令。
在 /etc/network/interfaces
文件中,列出 iface
部分下的所有 IP 地址。
auto swp1
iface swp1
address 10.0.0.1/30
address 10.0.0.2/30
address 2001:DB8::1/126
地址方法和地址族不是强制性的;它们默认为 inet/inet6
和 static
。但是,在创建 DHCP 或环回接口时,必须指定 inet/inet6
。
auto lo
iface lo inet loopback
要对接口进行非持久性运行时更改,请使用 ip addr add
cumulus@switch:~$ sudo ip addr add 10.0.0.1/30 dev swp1
cumulus@switch:~$ sudo ip addr add 2001:DB8::1/126 dev swp1
要从接口中删除地址,请使用 ip addr del
cumulus@switch:~$ sudo ip addr del 10.0.0.1/30 dev swp1
cumulus@switch:~$ sudo ip addr del 2001:DB8::1/126 dev swp1
接口 MAC 地址
您可以使用 nv set interface <interface> link mac-address <mac-address>
命令为接口配置 MAC 地址。
以下命令将 swp1 配置为 MAC 地址 00:02:00:00:00:05
cumulus@switch:~$ nv set interface swp1 link mac-address 00:02:00:00:00:05
cumulus@switch:~$ nv config apply
以下命令将 vlan10 配置为 MAC 地址 00:00:5E:00:01:00
cumulus@switch:~$ nv set interface vlan10 link mac-address 00:00:5E:00:01:00
cumulus@switch:~$ nv config apply
要取消设置接口的 MAC 地址,请运行 nv unset interface <interface> link mac-address
命令。此命令将 MAC 地址重置为系统分配的地址。
cumulus@switch:~$ nv unset interface swp1 link mac-address
cumulus@switch:~$ nv config apply
在 /etc/network/interfaces
文件中,在接口节中添加接口的 MAC 地址,然后运行 ifreload -a
。
以下示例将 swp1 配置为 MAC 地址 00:02:00:00:00:05
cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto swp1
iface swp1
address 10.0.0.2/24
hwaddress 00:02:00:00:00:05
...
cumulus@switch:~$ sudo ifreload -a
以下示例将 vlan10 配置为 MAC 地址 00:00:5E:00:01:00
cumulus@switch:~$ sudo nano /etc/network/interfaces
...
auto vlan10
iface vlan10
address 10.1.10.5/24
hwaddress 00:00:5E:00:01:00
cumulus@switch:~$ sudo ifreload -a
要取消设置接口的 MAC 地址,请从接口节中删除 mac 地址,然后运行 sudo ifreload -a
命令。
接口描述
您可以向接口添加描述(别名)。
接口描述也出现在 SNMP OID IF-MIB::ifAlias 中
- 接口描述最多可以有 256 个字符。
- 避免使用撇号或非 ASCII 字符。Cumulus Linux 不解析这些字符。
以下示例命令为 swp1 创建描述 hypervisor_port_1
cumulus@switch:~$ nv set interface swp1 description hypervisor_port_1
cumulus@switch:~$ nv config apply
在 /etc/network/interfaces
文件中,使用 alias 关键字添加描述
cumulus@switch:~$ sudo nano /etc/network/interfaces
auto swp1
iface swp1
alias swp1 hypervisor_port_1
接口命令
您可以为在 pre-up、up、post-up、pre-down、down 和 post-down 时运行的接口指定用户命令。
您可以在启动或关闭接口的顺序中添加任何有效命令;但是,请将范围限制为与特定接口关联的网络相关命令。例如,在 swp1 的 ifup
上安装 Debian 软件包没有意义,即使技术上是可能的。有关更多详细信息,请参阅 man interfaces
。
以下示例向接口添加命令以启用代理 ARP
cumulus@switch:~$ sudo nano /etc/network/interfaces
auto swp1
iface swp1
address 12.0.0.1/30
post-up echo 1 > /proc/sys/net/ipv4/conf/swp1/proxy_arp
如果您的 post-up
命令还启动、重新启动或重新加载任何 systemd
服务,则必须将 --no-block
选项与 systemctl
一起使用。否则,该服务甚至交换机本身可能会在启动或重新启动后挂起。例如,要在启动 VLAN 后重新启动 dhcrelay
服务,/etc network/interfaces
配置如下所示
auto bridge.100
iface bridge.100
post-up systemctl --no-block restart dhcrelay.service
端口范围
要在命令中指定端口范围
使用逗号分隔不同的端口范围。
以下示例配置默认网桥 br_default
,其端口范围为 swp1 到 swp46 以及 swp10 到 swp12
cumulus@switch:~$ nv set interface swp1-4,6,10-12 bridge domain br_default
cumulus@switch:~$ nv config apply
以下示例设置 swp1s 的所有子接口,范围为 1-4
cumulus@switch:~$ nv set interface swp1s1-4
cumulus@switch:~$ nv config apply
以下示例设置 swp 范围 1 到 64 内的所有接口及其子接口范围 1 到 3
cumulus@switch:~$ nv set interface swp1-64s1-3
cumulus@switch:~$ nv config apply
使用 glob
关键字指定网桥端口和绑定从属
auto br0
iface br0
bridge-ports glob swp1-6.100
auto br1
iface br1
bridge-ports glob swp7-9.100 swp11.100 glob swp15-18.100
快速链路启动
Cumulus Linux 支持 NVIDIA Spectrum1 交换机上接口的快速链路启动。快速链路启动使您能够启动具有需要链路快速启动的网卡的端口,例如某些 100G 光纤网络接口卡。
您必须使用相同的速度和 FEC 设置配置连接的两端。
cumulus@switch:~$ nv set interface swp1 link fast-linkup on
cumulus@switch:~$ nv config apply
编辑 /etc/cumulus/switchd.conf
文件,并为您要启用快速链路启动的接口添加 interface.<interface>.enable_media_depended_linkup_flow=TRUE
和 interface.<interface>.enable_port_short_tuning=TRUE
设置。以下示例在 swp1 上启用快速链路启动
cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
interface.swp1.enable_media_depended_linkup_flow=TRUE
interface.swp1.enable_short_tuning=TRUE
使用 sudo systemctl reload switchd.service
命令重新加载 switchd
。
链路抖动保护
默认情况下,Cumulus Linux 启用链路抖动检测。当在十秒内发生五次链路抖动时,链路抖动检测会触发,此时接口进入 protodown 状态,并显示 linkflap
作为原因。 switchd
服务还显示类似于以下的日志消息
2023-02-10T17:53:21.264621+00:00 cumulus switchd[10109]: sync_port.c:2263 ERR swp2 link flapped more than 3 times in the last 60 seconds, setting protodown
要显示具有 protodown 标志的接口,请运行 NVUE nv show interface
命令或 Linux ip link
命令。要检查特定接口,请运行 nv show interface <interface> link
命令。
cumulus@switch:~$ nv show interface
Interface State Speed MTU Type Remote Host Remote Port Summary
--------- ----- ----- ----- -------- --------------- ----------- ----------------------------------------
eth0 up 1G 1500 eth oob-mgmt-switch swp10 IP Address: 192.168.200.11/24
IP Address: fe80::4638:39ff:fe22:17a/64
lo up 65536 loopback IP Address: 127.0.0.1/8
IP Address: ::1/128
mgmt up 65575 vrf IP Address: 127.0.0.1/8
IP Address: ::1/128
swp1 up 1500 swp
swp2 protodown 9178 swp
swp3 up 1500 swp
swp4 up 1500 swp
...
cumulus@switch:~$ ip link
...
37: swp2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 9178 qdisc pfifo_fast master bond131 state DOWN mode DEFAULT group default qlen 1000
link/ether 1c:34:da:ba:bb:2a brd ff:ff:ff:ff:ff:ff protodown on protodown_reason <linkflap>
...
cumulus@switch:~$ nv show interface swp1 link
operational
--------------------- ------------------------------
admin-status up
oper-status up
protodown disabled
auto-negotiate on
duplex full
speed 800G
mac-address 9c:05:91:9a:e0:b8
fec rs
mtu 9216
fast-linkup off
stats
in-bytes 145.08 KB
in-pkts 756
in-drops 8
in-errors 0
out-bytes 145.42 KB
out-pkts 757
out-drops 0
out-errors 0
carrier-transitions 12
eyes 65, 62, 70, 65, 80, 82, 81, 82
grade 65, 62, 70, 65, 80, 82, 81, 82
troubleshooting-info No issue was observed
清除接口 Protodown 状态和原因
要清除 protodown 状态和原因
cumulus@switch:~$ nv action clear interface swp1 link flap-protection violation
几秒钟后,端口状态返回到 up
。运行 nv show <interface> link state
命令以验证接口不再处于 protodown 状态,并且原因已清除
cumulus@switch:~$ nv show swp1 link state
operational applied
----------- -------
up up
要清除所有接口的 protodown 状态,请运行 nv action clear system link flap-protection violation
。
ifdown
和 ifup
命令不会清除 protodown 状态。您必须使用 sudo ip link set <interface> protodown_reason linkflap off
和 sudo ip link set <interface> protodown off
命令手动清除 protodown 状态和原因。
cumulus@switch:~$ sudo ip link set swp2 protodown_reason linkflap off
cumulus@switch:~$ sudo ip link set swp2 protodown off
几秒钟后,端口状态返回到 UP。要验证接口不再处于 protodown 状态并且原因已清除,请运行 ip link show <interface>
命令
cumulus@switch:~$ ip link show swp2
37: swp2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 9178 qdisc pfifo_fast master bond131 state UP mode DEFAULT group default qlen 1000
link/ether 1c:34:da:ba:bb:2a brd ff:ff:ff:ff:ff:ff
更改链路抖动保护设置
您可以更改以下链路抖动保护设置
- 在链路抖动保护触发之前,链路必须抖动链路抖动阈值中设置的次数的持续时间(以秒为单位)。您可以指定介于 0(关闭)和 60 之间的值。默认设置为 10。
- 在链路抖动保护触发之前,链路在链路抖动窗口内可以抖动的次数。您可以指定介于 0(关闭)和 30 之间的值。默认设置为 5。
以下示例将链路抖动持续时间配置为 30,将链路必须抖动的次数配置为 8。
cumulus@switch:~$ nv set system link flap-protection interval 30
cumulus@switch:~$ nv set system link flap-protection threshold 8
cumulus@switch:~$ nv config apply
编辑 /etc/cumulus/switchd.conf
文件以更改 link_flap_window
和 link_flap_threshold
设置。
cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
link_flap_window = 30
link_flap_threshold = 8
...
更改链路抖动设置后,您必须使用 sudo systemctl restart switchd.service
命令重新启动 switchd
。
禁用链路抖动保护
要禁用链路抖动保护
cumulus@switch:~$ nv set interface swp1 link flap-protection enable off
cumulus@switch:~$ nv config apply
编辑 /etc/cumulus/switchd.conf
文件,并将 link_flap_window
和 link_flap_threshold
参数设置为 0(零)。
cumulus@switch:~$ sudo nano /etc/cumulus/switchd.conf
...
link_flap_window = 0
link_flap_threshold = 0
显示链路抖动保护配置
要显示链路抖动保护时间间隔和阈值设置
cumulus@switch:~$ nv show system link flap-protection
applied
--------- -------
threshold 8
interval 30
要显示链路抖动保护是否在接口上启用,请运行 nv show interface <interface> link flap-protection
命令
cumulus@switch:~$ nv show interface swp1 link flap-protection
applied
------ -------
enable off
源接口文件代码片段
源接口文件有助于组织和管理 /etc/network/interfaces
文件。例如
cumulus@switch:~$ sudo cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
source /etc/network/interfaces.d/bond0
上面使用的源文件的内容是
cumulus@switch:~$ sudo cat /etc/network/interfaces.d/bond0
auto bond0
iface bond0
address 14.0.0.9/30
address 2001:ded:beef:2::1/64
bond-slaves swp25 swp26
Mako 模板
ifupdown2
支持 Mako 样式模板。 Mako 模板引擎在解析之前处理 interfaces
文件。
使用模板声明 cookie-cutter 网桥,并在 interfaces
文件中声明地址
%for i in [1,12]:
auto swp${i}
iface swp${i}
address 10.20.${i}.3/24
- 在 Mako 语法中,使用方括号 (
[1,12]
) 指定单个数字列表。使用range(1,12)
指定接口范围。 - 要测试您的模板并确认其评估正确,请运行
mako-render /etc/network/interfaces
。
要在 Mako 模板中注释掉内容,请使用双哈希标记 (##)。例如
## % for i in range(1, 4):
## auto swp${i}
## iface swp${i}
## % endfor
##
有关更多 Mako 模板示例,请参阅此知识库文章。
ifupdown 脚本
与传统的 ifupdown
系统不同,ifupdown2
不会自动运行安装在 /etc/network/*/
中的脚本来配置网络接口。
要启用或禁用 ifupdown2
脚本,请编辑 /etc/network/ifupdown2/ifupdown2.conf
文件中的 addon_scripts_support
行。 1
启用脚本,2
禁用脚本。例如
cumulus@switch:~$ sudo nano /etc/network/ifupdown2/ifupdown2.conf
# Support executing of ifupdown style scripts.
# Note that by default python addon modules override scripts with the same name
addon_scripts_support=1
ifupdown2
在执行命令时设置以下环境变量
$IFACE
表示接口的物理名称;例如,br0
或 vxlan42。名称来自/etc/network/interfaces
文件。$LOGICAL
表示接口的逻辑名称(配置名称)。$METHOD
表示地址方法;例如,loopback、DHCP、DHCP6、manual、static 等。$ADDRFAM
表示与接口关联的地址族,以逗号分隔的列表形式表示;例如,"inet,inet6"
。
显示接口信息
要显示交换机上所有接口的管理状态和物理(操作)状态
cumulus@switch:~$ nv show interface
Interface Admin Status Oper Status Speed MTU Type Remote Host Remote Port Summary
--------- ------------ ----------- ----- ----- -------- --------------- ----------- ----------------------------------------
eth0 up up 1G 1500 eth oob-mgmt-switch swp10 IP Address: 192.168.200.11/24
IP Address: fe80::4638:39ff:fe22:17a/64
lo up unknown 65536 loopback IP Address: 127.0.0.1/8
IP Address: ::1/128
mgmt up up 65575 vrf IP Address: 127.0.0.1/8
IP Address: ::1/128
swp1 up up 1G 9216 swp IP Address: fe80::4ab0:2dff:fe50:fecf/64
swp2 down down 1500 swp
swp3 down down 1500 swp
swp4 down down 1500 swp
swp5 down down 1500 swp
swp6 down down 1500 swp
swp7 down down 1500 swp
...
要显示接口的管理状态和物理(操作)状态,以及接口物理状态更改的日期和时间
cumulus@switch:~$ nv show interface swp1
operational applied
----------------------- ----------------- -------
...
oper-status up
admin-status up
oper-status-last-change 2024/10/11 19:12:16.339
运行 ip link show dev <interface>
命令。
在以下示例中,swp1 在管理上处于启动状态,物理链路处于启动状态 (LOWER_UP)。
cumulus@switch:~$ ip link show dev swp1
3: swp1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 500
link/ether 44:38:39:00:03:c1 brd ff:ff:ff:ff:ff:ff
要显示上次(日期和时间)接口的操作状态更改的时间以及每个接口的载波转换次数(从接口创建时起)
cumulus@switch:~$ nv show interface --view=carrier-stats
Interface Oper Status Up Count Down Count Total State Changes Last State Change
-------------- ----------- -------- ---------- ------------------- -----------------------
BLUE up 0 0 0 Never
RED up 0 0 0 Never
bond1 up 2 1 3 2024/10/11 19:14:59.265
bond2 up 1 0 1 2024/10/11 19:12:18.817
bond3 up 1 0 1 2024/10/11 19:12:18.833
br_default up 2 2 4 2024/10/11 19:12:15.216
eth0 up 1 1 2 2024/10/11 19:12:02.157
lo unknown 0 0 0 Never
mgmt up 0 0 0 Never
peerlink up 1 0 1 2024/10/11 19:12:06.913
peerlink.4094 up 1 0 1 2024/10/11 19:12:06.915
swp1 up 2 2 4 2024/10/11 19:12:16.339
swp2 up 2 2 4 2024/10/11 19:12:16.345
swp3 up 2 2 4 2024/10/11 19:12:16.351
swp4 down 1 1 2 2024/10/11 19:11:28.936
swp5 down 1 1 2 2024/10/11 19:11:28.936
swp6 down 1 1 2 2024/10/11 19:11:28.936
swp7 down 1 1 2 2024/10/11 19:11:28.936
...
在上面的示例中
上次状态更改
显示上次操作状态更改的时间戳。总状态更改
显示载波状态的总转换次数。启动计数
显示载波转换为启动状态的次数。关闭计数
显示载波转换为关闭状态的次数。
要显示特定接口的操作状态更改的日期和时间 (oper-status-last-change
) 以及载波转换次数 (carrier-transitions
、carrier-up-count
、carrier-down-count
)
cumulus@switch:~$ nv show interface swp1 link
operational applied pending
----------------------- ----------------------- ------- -------
admin-status up
oper-status up
oper-status-last-change 2024/10/11 19:12:16.339
protodown disabled
auto-negotiate off on on
duplex full full full
speed 1G auto auto
mac-address 48:b0:2d:fa:a1:14
fec auto auto
mtu 9000 9216 9216
fast-linkup off
[breakout]
state up up up
flap-protection
enable on on
stats
in-bytes 1.96 MB
in-pkts 16399
in-drops 0
in-errors 0
out-bytes 2.37 MB
out-pkts 24669
out-drops 0
out-errors 0
carrier-transitions 4
carrier-up-count 2
carrier-down-count 2
要仅显示特定接口的载波转换次数 (carrier-transitions
、carrier-up-count
、carrier-down-count
),请运行 nv show interface <interface> link stats
命令。
要显示接口上分配的 IP 地址
cumulus@switch:~$ nv show interface lo ip address
-------------
10.0.1.12/32
10.10.10.1/32
127.0.0.1/8
::1/128
cumulus@switch:~$ ip addr show swp1
3: swp1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 500
link/ether 44:38:39:00:03:c1 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.1/30 scope global swp1
inet 192.0.2.2/30 scope global swp1
inet6 2001:DB8::1/126 scope global tentative
valid_lft forever preferred_lft forever
要显示接口的描述(别名)
cumulus@switch$ nv show interface swp1
operational applied
----------------------- ----------------- -------
operational applied
------------------------ ---------------------------- -----------------
...
description hypervisor_port_1 hypervisor_port_1
ip
vrrp
enable off
igmp
enable off
neighbor-discovery
enable on
router-advertisement
enable off
home-agent
enable off
[rdnss]
[dnssl]
[prefix]
ipv4
forward on
ipv6
enable on
forward on
vrf default
[address] fe80::4ab0:2dff:feeb:db72/64
[gateway]
...
cumulus@switch$ ip link show swp1
3: swp1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/ether aa:aa:aa:aa:aa:bc brd ff:ff:ff:ff:ff:ff
alias hypervisor_port_1
您可以监控接口的流量速率和 PPS,以确保最佳网络性能和可靠性;请参阅 用于监控接口流量速率和 PPS 的命令。
注意事项
即使 ifupdown2
支持为同一接口包含多个 iface
节,也请为每个接口使用单个 iface
节。如果您必须指定多个 iface
节;例如,如果单个接口的配置来自多个位置,例如模板或源文件,请确保这些节未指定相同的接口属性。否则,您会看到意外的行为。
在以下示例中,swp1 位于两个文件中:/etc/network/interfaces
和 /etc/network/interfaces.d/speed_settings
。ifupdown2
解析此配置,因为相同的属性不在多个 iface
节中。
cumulus@switch:~$ sudo cat /etc/network/interfaces
source /etc/network/interfaces.d/speed_settings
auto swp1
iface swp1
address 10.0.14.2/24
cumulus@switch:~$ cat /etc/network/interfaces.d/speed_settings
auto swp1
iface swp1
link-speed 1000
link-duplex full
ifupdown2 和 sysctl
对于 pre-up
、up
、post-up
、pre-down
、down
和 post-down
行中使用 $IFACE
变量的 sysctl
命令,如果接口名称包含点号 (.),则 ifupdown2
不会更改名称以与 sysctl
配合使用。例如,接口名称 bridge.1
不会转换为 bridge/1
。
ifupdown2 和网关参数
gateway
参数在 ifupdown2 中创建的默认路由不会安装在 FRR 中,因此不会重新分发到其他路由协议中。请改为定义静态默认路由,该路由将安装在 FRR 中并在需要时重新分发。
以下示例显示了当您使用静态路由而不是网关参数时 /etc/network/interfaces
文件的内容
auto swp2
iface swp2
address 172.16.3.3/24
up ip route add default via 172.16.3.2
接口名称限制
接口名称最多可以包含 15 个字符。第一个字符不能是数字,并且名称中不能包含短划线 (-)。此外,您不能使用任何与正则表达式 .{0,13}\-v.*
匹配的名称。
如果您遇到问题,请从 /etc/network/interfaces
文件中删除接口名称,然后重启 networking.service
。
cumulus@switch:~$ sudo nano /etc/network/interfaces
cumulus@switch:~$ sudo systemctl restart networking.service
IP 地址作用域
ifupdown2
不会遵循 /etc/network/interfaces
文件中配置的 IP 地址作用域设置,并将所有地址视为全局地址。它不会报告错误。请考虑以下示例配置
auto swp2
iface swp2
address 35.21.30.5/30
address 3101:21:20::31/80
scope link
当您在此配置上运行 ifreload -a
时,ifupdown2
会将所有 IP 地址视为全局地址。
cumulus@switch:~$ ip addr show swp2
5: swp2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:e6:e2:f5:62:82 brd ff:ff:ff:ff:ff:ff
inet 35.21.30.5/30 scope global swp2
valid_lft forever preferred_lft forever
inet6 3101:21:20::31/80 scope global
valid_lft forever preferred_lft forever
inet6 fe80::76e6:e2ff:fef5:6282/64 scope link
valid_lft forever preferred_lft forever
要解决此问题,请配置 IP 地址作用域
在 /etc/network/interfaces
文件中,使用 post-up ip address add <address> dev <interface> scope <scope>
配置 IP 地址作用域。例如
auto swp6
iface swp6
post-up ip address add 71.21.21.20/32 dev swp6 scope site
然后在此配置上运行 ifreload -a
命令。
以下配置显示了正确的范围
cumulus@switch:~$ ip addr show swp6
9: swp6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:e6:e2:f5:62:86 brd ff:ff:ff:ff:ff:ff
inet 71.21.21.20/32 scope site swp6
valid_lft forever preferred_lft forever
inet6 fe80::76e6:e2ff:fef5:6286/64 scope link
valid_lft forever preferred_lft forever