类型:proxy
¶
注意
proxy
设备类型支持容器(NAT 和非 NAT 模式)和虚拟机(仅 NAT 模式)。它支持容器和虚拟机的热插拔。
代理设备允许在主机和实例之间转发网络连接。这种方法可以将到达主机地址之一的流量转发到实例内部的地址,或者反过来,让实例中的地址通过主机连接。
在NAT 模式中,代理设备可用于 TCP 和 UDP 代理。在非 NAT 模式下,您还可以代理 Unix 套接字之间的流量(这对于例如将图形 GUI 或音频流量从容器转发到主机系统非常有用),甚至跨协议(例如,您可以在主机系统上有一个 TCP 监听器,并将它的流量转发到容器内部的 Unix 套接字)。
支持的连接类型为
tcp <-> tcp
udp <-> udp
unix <-> unix
tcp <-> unix
unix <-> tcp
udp <-> tcp
tcp <-> udp
udp <-> unix
unix <-> udp
要添加一个proxy
设备,请使用以下命令
incus config device add <instance_name> <device_name> proxy listen=<type>:<addr>:<port>[-<port>][,<port>] connect=<type>:<addr>:<port> bind=<host/instance>
NAT 模式¶
代理设备还支持 NAT 模式(nat=true
),其中数据包使用 NAT 转发,而不是通过单独的连接代理。此模式的优点是客户端地址保持不变,而无需目标目的地支持 HAProxy PROXY 协议(这是在非 NAT 模式下使用代理设备时通过客户端地址的唯一方法)。
但是,仅当实例运行所在的主机是网关时才支持 NAT 模式(例如,如果您使用的是incusbr0
)。
在 NAT 模式下,支持的连接类型为
tcp <-> tcp
udp <-> udp
在使用nat=true
配置代理设备时,您必须确保目标实例在其 NIC 设备上配置了静态 IP。
指定 IP 地址¶
使用以下命令为实例 NIC 配置静态 IP
incus config device set <instance_name> <nic_name> ipv4.address=<ipv4_address> ipv6.address=<ipv6_address>
要定义静态 IPv6 地址,父级托管网络必须启用ipv6.dhcp.stateful
。
在定义 IPv6 地址时,请使用方括号表示法,例如
connect=tcp:[2001:db8::1]:80
您可以通过将连接 IP 设置为通配符地址(IPv4 为0.0.0.0
,IPv6 为[::]
)来指定连接地址应为实例的 IP。
注意
在使用非 NAT 模式时,监听地址也可以使用通配符地址。但是,在使用 NAT 模式时,您必须在 Incus 主机上指定一个 IP 地址。
设备选项¶
proxy
设备具有以下设备选项
键 |
类型 |
默认 |
必需 |
描述 |
---|---|---|---|---|
|
字符串 |
|
否 |
绑定哪一方( |
|
字符串 |
- |
是 |
要连接到的地址和端口( |
|
整数 |
|
否 |
监听 Unix 套接字所有者的 GID |
|
字符串 |
- |
是 |
要绑定和监听的地址和端口( |
|
整数 |
|
否 |
监听 Unix 套接字的模式 |
|
布尔 |
|
否 |
是否通过 NAT 优化代理(要求实例 NIC 具有静态 IP 地址) |
|
布尔 |
|
否 |
是否使用 HAProxy PROXY 协议传输发送者信息 |
|
整数 |
|
否 |
要降级到的 GID |
|
整数 |
|
否 |
要降级到的 UID |
|
整数 |
|
否 |
监听 Unix 套接字的所有者的 UID |