タイプ: proxy¶
注釈
proxyデバイスタイプはコンテナ(NAT と非 NAT モード)と VM(NAT モードのみ)でサポートされます。
コンテナと VM の両方でホットプラグをサポートします。
プロキシデバイスにより、ホストとインスタンス間のネットワーク接続を転送できます。 この方法で、ホストのアドレスの一つに到達したトラフィックをインスタンス内のアドレスに転送したり、その逆でインスタンス内にアドレスを持ちホストを通して接続することができます。
NATモードでは、プロキシデバイスを TCP と UDP のプロキシに使用することができます。 NAT モードではない場合、Unix ソケット間のトラフィックをプロキシすることもできます(これはたとえば、コンテナからホストシステムへのグラフィカルな GUI やオーディオトラフィックを転送するのに便利です)。また、プロトコル間でもプロキシすることができます(たとえば、ホストシステム上に TCP リスナーを設置し、そのトラフィックをコンテナ内の Unix ソケットに転送することができます)。
利用できる接続タイプは次の通りです:
tcp <-> tcpudp <-> udpunix <-> unixtcp <-> unixunix <-> tcpudp <-> tcptcp <-> udpudp <-> unixunix <-> 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 モードではパケットは別の接続を通してプロキシされるのではなく NAT を使ってフォワードされます。
これはターゲットの送り先が HAProxy の PROXY プロトコル(非 NAT モードでプロキシデバイスを使う場合はこれはクライアントアドレスを渡す唯一の方法です)をサポートする必要なく、クライアントのアドレスを維持できるという利点があります。
しかし、NAT モードはインスタンスが稼働しているホストがゲートウェイの場合(たとえば incusbr0を使用しているケース)のみサポートされます。
NAT モードでサポートされる接続のタイプは以下の通りです:
tcp <-> tcpudp <-> udp
プロキシデバイスをnat=trueに設定する際は、ターゲットのインスタンスのNICに静的IPを設定するか動的な(DHCP)アドレスに依存することができます。
静的なアドレスを設定しない場合、ワイルドカードの接続アドレス(IPv4では0.0.0.0、IPv6では[::])を使ってブリッジのネイバーテーブルからインスタンスの現在のアドレスを自動検出し、アドレスが変わるたびにNATルールが更新されます。
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
connect のアドレスをワイルドカード(IPv4 では 0.0.0.0、IPv6 では[::]にします)に設定することで、接続アドレスをインスタンスの IP アドレスになるように指定できます。
リッスンアドレスもワイルドカードのアドレス(IPv4では0.0.0.0、IPv6では[::])をNATと非NATモードの両方で使えます。
NATモードではワイルドカードのリッスンアドレスはIncusホストで使われる宛先アドレスに関係なくトラフィックをインスタンスにフォワードします。
デバイスオプション¶
proxy デバイスには以下のデバイスオプションがあります:
| Key: | listen |
| Type: | string |
| Required: | yes |
| Key: | proxy_protocol |
| Type: | bool |
| Default: |
|
| Required: | no |