桥接网络

作为 Incus 下可能的网络配置类型之一,Incus 支持创建和管理网络桥接。

网络桥接创建了一个虚拟的 L2 以太网交换机,实例 NIC 可以连接到该交换机,使它们能够彼此通信以及与主机通信。Incus 桥接可以利用底层的原生 Linux 桥接和 Open vSwitch。

bridge 网络类型允许创建一个 L2 桥接,将使用它的实例连接到一个单一的网络 L2 段中。Incus 创建的桥接是受管理的,这意味着除了创建桥接接口本身之外,Incus 还设置了一个本地的 dnsmasq 进程,为网络提供 DHCP、IPv6 路由公告和 DNS 服务。默认情况下,它还对桥接进行 NAT。

有关如何配置防火墙以与 Incus 桥接网络一起工作的说明,请参见 如何配置你的防火墙

注意

静态 DHCP 分配取决于客户端使用其 MAC 地址作为 DHCP 标识符。这种方法可以防止在复制实例时发生租赁冲突,从而使静态分配的租赁能够正常工作。

IPv6 前缀大小

如果你正在桥接网络中使用 IPv6,你应该使用 64 的前缀大小。

较大的子网(即使用小于 64 的前缀)也应该可以正常工作,但通常对 SLAAC 来说并不那么有用。

理论上,较小的子网是可能的(当使用有状态 DHCPv6 进行 IPv6 分配时),但它们不受 dnsmasq 的正确支持,可能会导致问题。如果你必须创建更小的子网,请使用静态分配或另一个独立的路由器公告守护程序。

配置选项

目前,以下配置键命名空间受 bridge 网络类型的支持

  • bgp(BGP 对等配置)

  • bridge(L2 接口配置)

  • dns(DNS 服务器和解析配置)

  • ipv4(L3 IPv4 配置)

  • ipv6(L3 IPv6 配置)

  • security(网络 ACL 配置)

  • raw(原始配置文件内容)

  • tunnel(跨主机隧道配置)

  • user(用于用户元数据的自由格式键/值)

注意

Incus 使用 CIDR 表示法,其中需要网络子网信息,例如,192.0.2.0/242001:db8::/32。这并不适用于需要单个地址的情况,例如隧道的本地/远程地址、NAT 地址或要应用于实例的特定地址。

以下配置选项可用于 bridge 网络类型

类型

条件

默认值

描述

bgp.peers.NAME.address

字符串

BGP 服务器

-

对等地址(IPv4 或 IPv6)

bgp.peers.NAME.asn

整数

BGP 服务器

-

对等 AS 号

bgp.peers.NAME.password

字符串

BGP 服务器

- (无密码)

对等会话密码(可选)

bgp.peers.NAME.holdtime

整数

BGP 服务器

180

对等会话保持时间(以秒为单位;可选)

bgp.ipv4.nexthop

字符串

BGP 服务器

本地地址

覆盖为广告前缀设置的下一跳

bgp.ipv6.nexthop

字符串

BGP 服务器

本地地址

覆盖为广告前缀设置的下一跳

bridge.driver

字符串

-

native

桥接驱动程序:nativeopenvswitch

bridge.external_interfaces

字符串

-

-

要包含在桥接中的未配置网络接口的逗号分隔列表

bridge.hwaddr

字符串

-

-

桥接的 MAC 地址

bridge.mtu

整数

-

1500

桥接 MTU(如果使用隧道,则默认值会有所不同)

dns.domain

字符串

-

incus

要向 DHCP 客户端宣传并用于 DNS 解析的域

dns.mode

字符串

-

managed

DNS 注册模式:none 表示无 DNS 记录,managed 表示 Incus 生成的静态记录,或者 dynamic 表示客户端生成的记录

dns.search

字符串

-

-

完整的逗号分隔域搜索列表,默认为 dns.domain

dns.zone.forward

字符串

-

managed

用于正向 DNS 记录的逗号分隔 DNS 区域名称列表

dns.zone.reverse.ipv4

字符串

-

managed

用于 IPv4 反向 DNS 记录的 DNS 区域名称

dns.zone.reverse.ipv6

字符串

-

managed

用于 IPv6 反向 DNS 记录的 DNS 区域名称

ipv4.address

字符串

标准模式

- (创建时的初始值:auto)

桥接器的 IPv4 地址(使用 none 关闭 IPv4 或 auto 生成一个新的随机未使用子网)(CIDR)

ipv4.dhcp

布尔值

IPv4 地址

true

是否使用 DHCP 分配地址

ipv4.dhcp.expiry

字符串

IPv4 DHCP

1h

DHCP 租约何时过期

ipv4.dhcp.gateway

字符串

IPv4 DHCP

IPv4 地址

子网网关地址

ipv4.dhcp.ranges

字符串

IPv4 DHCP

所有地址

用于 DHCP 的 IP 范围的逗号分隔列表(FIRST-LAST 格式)

ipv4.firewall

布尔值

IPv4 地址

true

是否为该网络生成过滤防火墙规则

ipv4.nat

布尔值

IPv4 地址

false (如果 ipv4.address 设置为 auto,则创建时的初始值为 true

是否进行 NAT

ipv4.nat.address

字符串

IPv4 地址

-

桥接器出站流量使用的源地址

ipv4.nat.order

字符串

IPv4 地址

before

是否在任何现有规则之前或之后添加所需的 NAT 规则

ipv4.ovn.ranges

字符串

-

-

用于子 OVN 网络路由器的 IPv4 范围的逗号分隔列表(FIRST-LAST 格式)

ipv4.routes

字符串

IPv4 地址

-

路由到桥接器的其他 IPv4 CIDR 子网的逗号分隔列表

ipv4.routing

布尔值

IPv4 地址

true

是否在桥接器中路由进出流量

ipv6.address

字符串

标准模式

- (创建时的初始值:auto)

桥接器的 IPv6 地址(使用 none 关闭 IPv6 或 auto 生成一个新的随机未使用子网)(CIDR)

ipv6.dhcp

布尔值

IPv6 地址

true

是否通过 DHCP 提供额外的网络配置

ipv6.dhcp.expiry

字符串

IPv6 DHCP

1h

DHCP 租约何时过期

ipv6.dhcp.ranges

字符串

IPv6 有状态 DHCP

所有地址

用于 DHCP 的 IPv6 范围的逗号分隔列表(FIRST-LAST 格式)

ipv6.dhcp.stateful

布尔值

IPv6 DHCP

false

是否使用 DHCP 分配地址

ipv6.firewall

布尔值

IPv6 地址

true

是否为该网络生成过滤防火墙规则

ipv6.nat

布尔值

IPv6 地址

false (如果 ipv6.address 设置为 auto,则创建时的初始值为 true

是否进行 NAT

ipv6.nat.address

字符串

IPv6 地址

-

桥接器出站流量使用的源地址

ipv6.nat.order

字符串

IPv6 地址

before

是否在任何现有规则之前或之后添加所需的 NAT 规则

ipv6.ovn.ranges

字符串

-

-

用于子 OVN 网络路由器的 IPv6 范围的逗号分隔列表(FIRST-LAST 格式)

ipv6.routes

字符串

IPv6 地址

-

路由到桥接器的其他 IPv6 CIDR 子网的逗号分隔列表

ipv6.routing

布尔值

IPv6 地址

true

是否在桥接器中路由进出流量

raw.dnsmasq

字符串

-

-

要追加到配置文件的额外 dnsmasq 配置

security.acls

字符串

-

-

要应用于连接到此网络的 NIC 的网络 ACL 的逗号分隔列表(请参阅 桥接器限制

security.acls.default.egress.action

字符串

security.acls

reject

对不匹配任何 ACL 规则的出站流量使用的操作

security.acls.default.egress.logged

布尔值

security.acls

false

是否记录不匹配任何 ACL 规则的出站流量

security.acls.default.ingress.action

字符串

security.acls

reject

对不匹配任何 ACL 规则的入站流量使用的操作

security.acls.default.ingress.logged

布尔值

security.acls

false

是否记录不匹配任何 ACL 规则的入站流量

tunnel.NAME.group

字符串

vxlan

239.0.0.1

用于 vxlan 的组播地址(如果未设置本地和远程,则使用此地址)

tunnel.NAME.id

整数

vxlan

0

用于 vxlan 隧道的特定隧道 ID

tunnel.NAME.interface

字符串

vxlan

-

用于隧道的特定主机接口

tunnel.NAME.local

字符串

grevxlan

-

隧道的本地地址(对于组播 vxlan 不需要)

tunnel.NAME.port

整数

vxlan

0

用于 vxlan 隧道的特定端口

tunnel.NAME.protocol

字符串

标准模式

-

隧道协议:vxlangre

tunnel.NAME.remote

字符串

grevxlan

-

隧道的远程地址(对于组播 vxlan 不需要)

tunnel.NAME.ttl

整数

vxlan

1

用于组播路由拓扑的特定 TTL

user.*

字符串

-

-

用户提供的自由格式键值对

注意

bridge.external_interfaces 选项支持扩展格式,允许创建丢失的 VLAN 接口。扩展格式为 <interfaceName>/<parentInterfaceName>/<vlanId>。当外部接口以扩展格式添加到列表中时,系统将在网络创建时自动创建该接口,并在网络终止时将其删除。系统会验证该接口是否已存在。如果接口名称与其他父级或 VLAN ID 一起使用,或者接口创建不成功,则系统将返回错误消息。

支持的功能

以下功能在 bridge 网络类型中受支持