如何配置网络转发

注意

网络转发适用于 OVN 网络桥接网络.

网络转发允许将外部 IP 地址(或其上的特定端口)转发到转发所属网络中的内部 IP 地址(或其上的特定端口)。

如果您有有限的外部 IP 地址并希望在多个实例之间共享一个外部地址,此功能非常有用。在本例中,您可以通过两种不同的方式使用网络转发

  • 将来自外部地址的所有流量转发到一个实例的内部地址。这种方法使将目标为外部地址的流量移动到另一个实例变得很容易,只需重新配置网络转发即可。

  • 将来自外部地址的不同端口号的流量转发到不同的实例(以及可选的这些实例上的不同端口)。这种方法允许“共享”您的外部 IP 地址并同时公开多个实例。

创建网络转发

使用以下命令创建网络转发

incus network forward create <network_name> <listen_address> [configuration_options...]

每个转发都分配给一个网络。它需要一个外部监听地址(有关可转发地址的更多信息,请参见 监听地址的要求,具体取决于您使用的网络)。

您可以通过添加 target_address=<IP_address> 配置选项来指定一个可选的默认目标地址。如果您这样做,任何与端口规范不匹配的流量都将转发到此地址。请注意,此目标地址必须与转发关联的网络在同一个子网中。

转发属性

网络转发具有以下属性

属性

类型

必需

描述

listen_address

字符串

要监听的 IP 地址

description

字符串

网络转发的描述

config

字符串集

配置选项作为键/值对(仅支持 target_addressuser.* 自定义键)

ports

端口列表

端口规范 的列表

监听地址的要求

有效监听地址的要求因转发关联的网络类型而异。

桥接网络
  • 任何不冲突的监听地址都是允许的。

  • 监听地址不得与其他网络使用的子网重叠。

OVN 网络
  • 允许的监听地址必须在上行链路网络的 ipv{n}.routes 设置或项目的 restricted.networks.subnets 设置(如果设置)中定义。

  • 监听地址不得与其他网络使用的子网重叠。

配置端口

您可以将端口规范添加到网络转发中,以将来自监听地址上特定端口的流量转发到目标地址上特定端口。此目标地址必须与默认目标地址不同。它必须与转发关联的网络在同一个子网中。

使用以下命令添加端口规范

incus network forward port add <network_name> <listen_address> <protocol> <listen_ports> <target_address> [<target_ports>]

您可以指定单个监听端口或一组端口。如果您希望将流量转发到不同的端口,则有两个选项

  • 指定单个目标端口,将来自所有监听端口的流量转发到此目标端口。

  • 指定一组目标端口,其端口数量与监听端口数量相同,将来自第一个监听端口的流量转发到第一个目标端口,第二个监听端口转发到第二个目标端口,依此类推。

端口属性

网络转发端口具有以下属性

属性

类型

必需

描述

协议

字符串

端口(tcpudp)协议

监听端口

字符串

监听端口(例如 80,90-100

目标地址

字符串

要转发到的 IP 地址

目标端口

字符串

目标端口(例如 70,80-9090),如果为空则与 listen_port 相同

description

字符串

端口描述

编辑网络转发

使用以下命令编辑网络转发

incus network forward edit <network_name> <listen_address>

该命令以 YAML 格式打开网络转发以进行编辑。您可以编辑通用配置和端口规范。

删除网络转发

使用以下命令删除网络转发

incus network forward delete <network_name> <listen_address>