Добавьте маршрут в Docker сетевой Macvlan для подключения как локально, так и VPN - PullRequest
0 голосов
/ 29 апреля 2020

Моя цель заключается в том, чтобы контейнер docker получил IP-адрес, отличный от IP-адреса сервера, на котором он размещен, и доступ к нему возможен из VPN-клиента

Мой серверный хостинг docker config:

$ 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.0/24 со шлюзом по 192.168.0.10.

И у меня есть другой сервер с OpenVPN с ips 192.168.0.150 и 12.20.0.1 (для VPN).

Каждый компьютер, подключенный удаленно к VPN, получает IP-адрес в сети 12.20.0.0/24


Ранее я использовал виртуальную машину Ubuntu в VirtualBox и добавил маршрут на каждую виртуальную машину. быть доступным из VPN

ip route add 12.20.0.0/24 via 192.168.0.150

Это сработало!


Теперь я использую docker для замены своей виртуальной машины. Чтобы получить другой IP-адрес от сервера в сети 192.168.0.0/24, я создал 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

(я использую привилегированный, чтобы добавить маршрут, лучшая идея?)

Теперь я пытаюсь пинговать ( ping 192.168. 0.48 ) мой контейнер из двух мест:

  • С другого сервера в сети 192.168.0.0/24 OK
  • С клиента VPN: KO

Так что я подумал, что мне нужно добавить маршрут, который я добавил в свою виртуальную машину

$ 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

Что я делаю не так ?

Спасибо,

...