0

私の目的は、docker コンテナーがホストされているサーバー IP とは異なる IP を取得し、VPN クライアントから到達可能であることです。

ドッカー構成をホストしている私のサーバー:

$ sudo docker -v
Docker version 19.03.6, build 369ce74a3c
$ sudo docker-compose -v
docker-compose version 1.17.1, build unknown
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

サーバーは、192.168.0.10 のゲートウェイで 192.168.0.0/24 のネットワークに接続されています。

そして、IP 192.168.0.150および12.20.0.1(VPN用)のOpenVPNを備えた別のサーバーがあります。

リモートで VPN に接続されているすべてのコンピューターは、12.20.0.0/24 ネットワークで IP を取得します。


以前は、VirtualBox で Ubuntu VM を使用し、VPN からアクセスできるように各 VM にルートを追加しました。

ip route add 12.20.0.0/24 via 192.168.0.150

これはうまくいきました!


現在、Docker を使用して VM を置き換えています。192.168.0.0/24 ネットワーク上のサーバーから別の IP を取得するために、docker ネットワーク macvlan を作成しました。

sudo docker network create -d macvlan -o parent=eno1 --subnet 192.168.0.0/24 --gateway 192.168.0.10 publicNet

次に、コンテナー テストを作成します。

sudo docker run --rm -dit --privileged -network publicNet --name my-macvlan-alpine --ip="192.168.0.48" alpine:latest ash

(私は特権を使用してルートを追加しますが、より良いアイデアですか?)

ここで、2 つの場所からコンテナーに ping ( ping 192.168.0.48 ) を試みます。

  • 192.168.0.0/24 ネットワーク上の別のサーバーから OK
  • VPN のクライアントから: KO

そのため、VM に追加したルートを追加する必要があると考えました

$ sudo docker exec -it my-macvlan-alpine ash -c "ip route add 12.20.0.0/24 via 192.168.0.150 && ip route"
default via 192.168.0.10 dev eth0 
12.20.0.0/24 via 192.168.0.150 dev eth0 
192.168.0.0/24 dev eth0 scope link  src 192.168.0.48 

それでも、VPN クライアント コンピューターから ping を実行できません

私は何を間違っていますか?

ありがとう、

4

0 に答える 0