(network-forwards)= # ネットワークフォワードを設定するには ```{note} ネットワークフォワードは {ref}`network-ovn` と {ref}`network-bridge` で利用できます。 ``` ネットワークフォワードは外部 IP アドレス(あるいは外部 IP アドレスの特定のポート)をフォワード設定が属するネットワーク内の内部 IP アドレス(あるいは内部 IP アドレスの特定のポート)にフォワードする機能です。 この機能は外部 IP アドレスが限定されていて 1 つの外部アドレスを複数のインスタンスで共有したい場合に有用です。 この場合にネットワークフォワードを 2 つの異なる方法で利用できます。 - 外部アドレスからのすべてのトラフィックを 1 つのインスタンスの内部アドレスにフォワードします。この方法はネットワークフォワードを単に再設定することで外部アドレスに向けられたトラフィックを別のインスタンスに簡単に移動できます。 - 外部アドレスの異なるポートからのトラフィックを異なるインスタンスにフォワードします(さらにこれらのインスタンスの異なるポートにフォワードもできます)。この方法は外部 IP アドレスを「共有」し、複数のインスタンスを一度に公開できます。 ## ネットワークフォワードを作成する ネットワークフォワードを作成するには以下のコマンドを使用します: ```bash incus network forward create [configuration_options...] ``` それぞれのフォワードはネットワークに割り当てられます。 フォワードには単一の外部リッスンアドレスが必要です(使用しているネットワークに応じてどのアドレスがフォワードできるかについて詳細は {ref}`network-forwards-listen-addresses` を参照してください)。 さらに `target_address=` 設定オプションを追加することでデフォルトのターゲットアドレスを追加することもできます。 こうするとポート指定にマッチしないトラフィックはすべてこのアドレスにフォワードします。 このターゲットアドレスはフォワードが関連付けられるネットワークと同じサブネット内でなければならないことに注意してください。 ### フォワードのプロパティ ネットワークフォワードのプロパティには以下のものがあります: | プロパティ | 型 | 必須 | 説明 | | :--- | :--- | :--- | :--- | | `listen_address` | string | yes | リッスンする IP アドレス | | `description` | string | no | ネットワークフォワードの説明 | | `config` | string set | no | 下記のテーブル参照 | | `ports` | port list | no | {ref}`ポート指定 ` のリスト | ### フォワードの設定 ネットワークフォワードには以下の設定オプションがあります: % Include content from [../config_options.txt](../config_options.txt) ```{include} ../config_options.txt :start-after: :end-before: ``` (network-forwards-listen-addresses)= ### リッスンアドレスの要件 有効なリッスンアドレスの要件はフォワードがどのネットワークタイプに割り当てられるかに応じて異なります。 #### ブリッジネットワーク - 任意の衝突しないリッスンアドレスが使用できます。 - リッスンアドレスは他のネットワークで使用中のサブネットとオーバーラップはできません。 #### OVN ネットワーク - 利用可能なリッスンアドレスはアップリンクネットワークの `ipv{n}.routes` 設定か(設定されている場合は)プロジェクトの `restricted.networks.subnets` 設定で定義されていなければなりません。 - リッスンアドレスは他のネットワークで使用中のサブネットとオーバーラップはできません。 (network-forwards-port-specifications)= ## ポートを設定する リッスンアドレスの特定のポートからターゲットアドレスの特定のポートにトラフィックをフォワードするためにネットワークフォワードにポート指定を追加できます。 このターゲットアドレスはデフォルトターゲットアドレスとは異なるものである必要があります。 またフォワードを割り当てるネットワークと同じサブネットである必要があります。 ポート指定を追加するには以下のコマンドを使用します: ```bash incus network forward port add [] ``` 単一のポートか一組のポートを指定できます。 異なるポートにトラフィックをフォワードしたい場合、 2 つの選択肢があります。 - 単一のターゲットポートを指定し、すべてのリッスンポートからのトラフィックをこのターゲットポートにフォワードします。 - リッスンポートと同じ数の一組のターゲットポートを指定し、最初のリッスンポートを最初のターゲットポートに、 2 番目のリッスンポートを 2 番目のターゲットポートに、以下同様というようにフォワードします。 ### ポートのプロパティ ネットワークフォワードポートのプロパティには以下のものがあります: | プロパティ | 型 | 必須 | 説明 | | :--- | :--- | :--- | :--- | | `protocol` | string | yes | ポートのプロトコル(`tcp` または `udp`) | | `listen_port` | string | yes | リッスンするポート(例 `80,90-100`) | | `target_address` | string | yes | フォワード先の IP アドレス | | `target_port` | string | no | ターゲットのポート(例 `70,80-90` または `90`)、 空の場合は `listen_port` と同じ | | `description` | string | no | ポートの説明 | | `snat` | bool | no | マッチングするSNATルールを配置してターゲットから来る新しいトラフィックを書き換えるかどうか | ```{note} `snat`プロパティは現在は`nftables`ファイアウォールドライバーを使う管理された`bridge`ネットワークでのみサポートされます。 また、外部のアドレスの整合性を保証するために、対象のインスタンスのポートが複数のフォワードにカバーされないようにしておく必要があります。 ``` ## ネットワークフォワードを編集する ネットワークフォワードを編集するには以下のコマンドを使用します: ```bash incus network forward edit ``` このコマンドはネットワークフォワードを編集用に YAML 形式でオープンします。 全般の設定とポート指定の両方を編集できます。 ## ネットワークフォワードを削除する ネットワークフォワードを削除するには以下のコマンドを使用します: ```bash incus network forward delete ```