Synology DSM 7.3 Container Manager の複数 NIC と Macvlan 設定

Synology DSM 7.3 / 7.2 の Container Manager で Macvlan を使い、複数 NIC の割り当て、独立した LAN IP、Compose 設定、Open vSwitch、有効化手順、注意点を整理します。

Synology DSM 7.3 と DSM 7.2 に付属する Container Manager の GUI は、標準では主に bridgehost ネットワークを扱います。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 にログインして次を実行します。

1
ifconfig

Open vSwitch が有効な場合、インターフェース名は通常 ovs_eth0ovs_eth1 のようになります。Virtual Machine Manager をインストール済みの環境では、多くの場合 Open vSwitch が自動的に有効になっています。

Open vSwitch が有効でない場合は、通常 eth0eth1 のような名前です。

以降の例では、2 枚目の NIC として ovs_eth1 を使います。Open vSwitch を使っていない環境では、実際に表示された eth1 などの名前に置き換えてください。

シナリオ 1:指定 NIC のサブネットで独立 IP を使う

これは最もよく使う構成です。Pi-hole、AdGuard Home、ダウンローダー、ゲートウェイ系サービスなどに向いています。目的は、コンテナを LAN2 サブネット上に直接見えるようにし、物理デバイスに近い形で IP を持たせることです。

Container Manager の GUI から macvlan ネットワークを直接作成することはできないため、最初に SSH で一度だけ作成します。

1
2
3
4
5
6
sudo docker network create -d macvlan \
  --subnet=192.168.2.0/24 \
  --gateway=192.168.2.1 \
  --ip-range=192.168.2.200/29 \
  -o parent=ovs_eth1 \
  custom_lan2_net

各パラメータの意味は次のとおりです。

  • -d macvlanmacvlan ドライバーを使う;
  • --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 を選択して「管理」をクリックします。一覧で対象コンテナにチェックを入れて保存します。コンテナ起動後、内部には通常 eth0eth1 の 2 つの仮想インターフェースが表示されます。

この方法は、1 つか 2 つのコンテナを手軽に設定したい場合に向いており、Compose ファイルを編集する必要もありません。

方法 B:Docker Compose のプロジェクトを使う

Container Manager の「プロジェクト」機能を使う場合は、docker-compose.yml で複数ネットワークを定義できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: '3.8'

services:
  my_node:
    image: nginx:latest
    container_name: multi_nic_container
    networks:
      default_bridge:
        ipv4_address: 172.20.0.10
      lan2_macvlan:
        ipv4_address: 192.168.2.205

networks:
  default_bridge:
    external: true
    name: bridge
  lan2_macvlan:
    external: true
    name: custom_lan2_net

ここで custom_lan2_net は、前述の SSH コマンドで作成した macvlan ネットワークです。bridge は Synology に標準で用意されている Docker の既定ブリッジネットワークを参照します。

なお、例の 172.20.0.10 は、あなたのブリッジネットワークが本当にそのサブネットを使っている場合にだけ有効です。一般的な Synology Docker の既定 bridge172.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 に依存しているため、セットアップウィザードが有効化を案内します。

手順は次のとおりです。

  1. DSM の「パッケージセンター」を開く;
  2. Virtual Machine Manager を検索してインストールする;
  3. パッケージを開き、ウィザードに従って Open vSwitch を有効にする;
  4. ネットワークサービスの再起動を待つ。

VMM を入れたくない場合は、コントロールパネルから手動で有効にできます。

  1. 「コントロールパネル」を開く;
  2. 「ネットワーク」に入る;
  3. 「ネットワークインターフェース」タブに切り替える;
  4. 「管理」をクリックし、「Open vSwitch 設定」を選ぶ;
  5. 「Open vSwitch を有効にする」にチェックを入れて適用する。

適用後、DSM は NIC を再初期化するため、ブラウザー接続が数秒切れることがあります。NAS が大きなファイルを転送中、または重要な書き込み処理中のタイミングでは避けてください。

Open vSwitch が有効か確認する

GUI では、「コントロールパネル -> ネットワーク -> ネットワークインターフェース」に戻って NIC の状態を確認します。管理メニューにも Open vSwitch 関連の設定が表示されます。

コマンドラインでは、再度次を実行します。

1
ifconfig

または:

1
ip addr

ovs_eth0ovs_eth1 のようなインターフェースが見えれば、Open vSwitch は有効です。その後 macvlan ネットワークを作成するときは、-o parent=ovs_ プレフィックス付きの名前を指定します。

1
-o parent=ovs_eth1

ここを 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 は下位ネットワークを作成する場面だけで済みます。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。