LoginSignup
0
1

QNAP NASのdockerでホストと同じNWの別IPでコンテナを追加する話

Last updated at Posted at 2023-08-19

はじめに

QNAPのDockerコンテナをホストと同じネットワークに追加し、ホストとは別のIPとしてアクセスしたいという欲望を解消する。

条件

  • SSHができること
  • Dockerが動いていること
  • NASのネットワークが死んでも泣かない心

やることは?

MACVLANを使います。
基本的に以下の方が書いてくださったことをそのままコピー。
ただ、QNAPのInterface指定方法による違いを吸収するのと、ルート設定がそのままではうまくいかなかったので修正。
https://qiita.com/pochy9n/items/8c175db18da4a44ae2d2

設定

設定条件

以下のような設定条件で構築します。

ホスト(QNAP自体)

項目 内容
Interface名 qvs0
IPアドレス 192.168.0.2/24
Gateway 192.168.0.1
追加する仮想IF htoc0
htoc0のIP 192.168.0.5

コンテナ

コンテナ1

項目 内容
ホスト名 container1
IPアドレス 192.168.0.41

コンテナ2

項目 内容
ホスト名 container1
IPアドレス 192.168.0.42

docker network

項目 内容
ネットワーク名 dlocal

設定手順

1. docker networkを作成

$ sudo docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=qvs0 dlocal
$ docker network ls
NETWORK ID     NAME                      DRIVER    SCOPE
f6557d923fdb   bridge                    bridge    local
3a47ec73a64a   host                      host      local
af79cdd95e38   none                      null      local
9ba521c1a1a1   dlocal                    macvlan   local
9382478e8ea9   qnet-dhcp-eth0-6d6da6     qnet      local
52312798037b   qnet-static-eth0-79e6cc   qnet      local

2. dockerコンテナを起動

$ sudo docker run -d -it --network dlocal --ip 192.168.0.41 --name conte1 ubuntu:latest /bin/bash
$ sudo docker run -d -it --network dlocal --ip 192.168.0.42 --name conte2 ubuntu:latest /bin/bash
$ docker ps -a
CONTAINER ID   IMAGE          COMMAND      CREATED          STATUS         PORTS  NAMES
bc8730bf2a81   ubuntu:latest  "/bin/bash"  36 minutes ago   Up 36 minutes         container1
d6eef7ae8903   ubuntu:latest  "/bin/bash"  36 minutes ago   Up 36 minutes         container2

3. 仮想IFの設定

QNAP自体から dlocal に接続するための仮想IFを設定。
また、dlocal内のIPへの経路情報も設定する

sudo ip link add htoc0 link qvs0 type macvlan mode bridge
sudo ip addr add 192.168.0.5/32 dev htoc0
sudo ip link set htoc0 up
sudo ip route add 192.168.0.41/32 dev htoc0
sudo ip route add 192.168.0.42/32 dev htoc0

元記事では/24で設定してあったが、RTNETLINK answers: File exists が出てしまうので/32でルートを設定した。
もしコンテナを追加する場合は対象IPへのルートを都度設定すること。

大事なこと

「3. 仮想IFの設定」については、QNAP自体への設定になるがこの設定は永続的なものにはならず、再起動する都度実行する必要があるので注意。
以下のAutrun.shの対応をしておくといいかもしれません。
https://www.qnap.com/ja-jp/how-to/faq/article/running-your-own-application-at-startup

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1