私の目的は、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 を実行できません
私は何を間違っていますか?
ありがとう、