Synology DSM 7.3 と DSM 7.2 に付属する Container Manager の GUI は、標準では主に bridge と host ネットワークを扱います。NAS に複数の NIC があり、たとえば LAN1 は内部ネットワーク、LAN2 は別ルーターや別サブネットに接続している場合、一部のコンテナだけを LAN2 経由にしたい、または LAN2 のサブネット上で独立した IP を持たせたいことがあります。この場合は Docker の macvlan ネットワークを使うのが一般的です。
よくある構成は次の 2 つです。
- コンテナを特定の物理 NIC にひも付け、そのサブネット上の独立 IP を割り当てる;
- コンテナを既定の
bridgeネットワークと、特定 NIC のmacvlanネットワークの両方に接続する。
以下では、2 枚目の NIC を ovs_eth1、LAN2 のサブネットを 192.168.2.0/24 として説明します。実際には自分のネットワーク、ゲートウェイ、インターフェース名に合わせて変更してください。
まず物理インターフェース名を確認する
DSM で SSH を有効にし、NAS にログインして次を実行します。
|
|
Open vSwitch が有効な場合、インターフェース名は通常 ovs_eth0、ovs_eth1 のようになります。Virtual Machine Manager をインストール済みの環境では、多くの場合 Open vSwitch が自動的に有効になっています。
Open vSwitch が有効でない場合は、通常 eth0、eth1 のような名前です。
以降の例では、2 枚目の NIC として ovs_eth1 を使います。Open vSwitch を使っていない環境では、実際に表示された eth1 などの名前に置き換えてください。
シナリオ 1:指定 NIC のサブネットで独立 IP を使う
これは最もよく使う構成です。Pi-hole、AdGuard Home、ダウンローダー、ゲートウェイ系サービスなどに向いています。目的は、コンテナを LAN2 サブネット上に直接見えるようにし、物理デバイスに近い形で IP を持たせることです。
Container Manager の GUI から macvlan ネットワークを直接作成することはできないため、最初に SSH で一度だけ作成します。
|
|
各パラメータの意味は次のとおりです。
-d macvlan:macvlanドライバーを使う;--subnet=192.168.2.0/24:LAN2 の全体サブネット;--gateway=192.168.2.1:LAN2 のゲートウェイ。通常はルーターの IP;--ip-range=192.168.2.200/29:Docker が割り当て可能な IP 範囲を制限し、スマートフォン、PC、テレビなどとの衝突を避ける;-o parent=ovs_eth1:どの物理 NIC にひも付けるかを指定する;custom_lan2_net:この Docker ネットワークの名前。
作成後、DSM の Container Manager を開き、左側の「ネットワーク」ページに入ると custom_lan2_net が表示されます。以後は GUI で既存コンテナをこのネットワークへ追加したり、新規コンテナ作成時に選択して固定 IP を指定したりできます。
シナリオ 2:コンテナを複数ネットワークに同時接続する
一部のコンテナは複数ネットワークに同時に存在する必要があります。たとえば、Synology ホストから既定の bridge ネットワーク経由でアクセスできる一方で、LAN2 上にも独立した物理サブネット IP を持たせたい場合です。この場合、コンテナに 2 つの仮想 NIC を持たせます。
方法 A:GUI でネットワークを追加する
まず通常どおりコンテナを作成し、既定の bridge など主ネットワークを 1 つ選びます。作成後はまだ起動しないでください。すでに起動している場合は停止します。
次に Container Manager の「ネットワーク」ページを開き、作成済みの custom_lan2_net を選択して「管理」をクリックします。一覧で対象コンテナにチェックを入れて保存します。コンテナ起動後、内部には通常 eth0 と eth1 の 2 つの仮想インターフェースが表示されます。
この方法は、1 つか 2 つのコンテナを手軽に設定したい場合に向いており、Compose ファイルを編集する必要もありません。
方法 B:Docker Compose のプロジェクトを使う
Container Manager の「プロジェクト」機能を使う場合は、docker-compose.yml で複数ネットワークを定義できます。
|
|
ここで custom_lan2_net は、前述の SSH コマンドで作成した macvlan ネットワークです。bridge は Synology に標準で用意されている Docker の既定ブリッジネットワークを参照します。
なお、例の 172.20.0.10 は、あなたのブリッジネットワークが本当にそのサブネットを使っている場合にだけ有効です。一般的な Synology Docker の既定 bridge は 172.17.0.0/16 であることが多いため、実際の値は docker network inspect bridge で確認してください。
Macvlan ではホストとコンテナが直接通信できないことがある
macvlan には重要な制限があります。Linux カーネルは既定で、ホストが同じ macvlan インターフェース経由でコンテナへ直接通信することを許可しません。
つまり、コンテナが custom_lan2_net にだけ参加している場合、DSM 自体は LAN2 の物理サブネット IP を使ってそのコンテナにアクセスできないことがあります。逆方向も同様です。
よく使われる対処は次の 2 つです。
- コンテナを既定の
bridgeネットワークにも参加させ、Synology からは Docker 内部アドレス経由でアクセスする; - Synology 側にホスト用の
macvlanサブインターフェースを追加し、ホストも同じmacvlan通信ドメインに参加させる。
後者はネットワーク設計に近く、保守コストも高くなります。家庭や小規模オフィスでは、「bridge + macvlan」の二重ネットワーク構成のほうが扱いやすいです。
IP 衝突は事前に避ける
macvlan を使うと、コンテナの IP は物理 LAN 上に直接現れます。そのため DHCP プールとの衝突を避ける必要があります。
可能であれば、メインルーターで Docker 用の範囲を DHCP から除外してください。たとえば 192.168.2.200/29 を Docker に使うなら、ルーターが 192.168.2.200 から 192.168.2.207 をスマートフォン、PC、その他の機器へ配らないようにします。
ルーター側で DHCP 除外を設定しにくい場合でも、自動割り当てされにくい高めのアドレス範囲を使い、記録を残しておくべきです。
Open vSwitch を有効にする方法
DSM 7.x では、Open vSwitch は GUI から有効にできます。低レベルの設定ファイルを手動で触る必要はありません。最も簡単なのは Synology 公式の Virtual Machine Manager をインストールする方法です。仮想マシンのネットワークブリッジは Open vSwitch に依存しているため、セットアップウィザードが有効化を案内します。
手順は次のとおりです。
- DSM の「パッケージセンター」を開く;
Virtual Machine Managerを検索してインストールする;- パッケージを開き、ウィザードに従って Open vSwitch を有効にする;
- ネットワークサービスの再起動を待つ。
VMM を入れたくない場合は、コントロールパネルから手動で有効にできます。
- 「コントロールパネル」を開く;
- 「ネットワーク」に入る;
- 「ネットワークインターフェース」タブに切り替える;
- 「管理」をクリックし、「Open vSwitch 設定」を選ぶ;
- 「Open vSwitch を有効にする」にチェックを入れて適用する。
適用後、DSM は NIC を再初期化するため、ブラウザー接続が数秒切れることがあります。NAS が大きなファイルを転送中、または重要な書き込み処理中のタイミングでは避けてください。
Open vSwitch が有効か確認する
GUI では、「コントロールパネル -> ネットワーク -> ネットワークインターフェース」に戻って NIC の状態を確認します。管理メニューにも Open vSwitch 関連の設定が表示されます。
コマンドラインでは、再度次を実行します。
|
|
または:
|
|
ovs_eth0、ovs_eth1 のようなインターフェースが見えれば、Open vSwitch は有効です。その後 macvlan ネットワークを作成するときは、-o parent= に ovs_ プレフィックス付きの名前を指定します。
|
|
ここを eth1 のままにすると、Docker コンテナが期待した NIC 経由で通信できないことがあります。
設定前のチェックリスト
実際に作業する前に、次を確認しておくと安全です。
- Synology NAS に物理 NIC が何枚あり、どのポートにケーブルが接続されているか;
- 各ポートがどのスイッチ、ルーター、VLAN に接続されているか;
- 対象 NIC が DSM 上で
ethXと表示されるか、ovs_ethXと表示されるか; --subnetと--gatewayが対象 NIC のサブネットに属しているか;--ip-rangeが DHCP プールから除外されているか;- コンテナへ Synology ホストからアクセスする必要があるか。必要なら
bridgeにも参加させる。
インターフェース名、サブネット、IP プールが正しければ、DSM 7.3 の Container Manager は macvlan と組み合わせて複数 NIC のコンテナ構成を十分に扱えます。日常管理は GUI で行い、SSH は下位ネットワークを作成する場面だけで済みます。