Удаленный сервер MySQL в контейнере докеров – доступ с помощью macvlan и Wireguard?

Ситуация: несколько VPS-серверов в США подключены к моему ноутбуку через ячеистую сеть Wireguard. Для ячеистой сети Wireguard я использую инструмент Internalnet (https://github.com/tonarino/innernet).

По сути, мой ноутбук и VPS-серверы находятся в одной внутренней сети.

      VPS ip    = 10.32.89.1
laptop ip = 10.32.90.1

Похоже, что на VPS и ноутбуке определен этот виртуальный интерфейс (не уверен, имеет ли это значение):

      innernet

На VPS-сервере работает контейнер MySQL (я не открываю хосту порт 3306). Как я могу подключиться к этому доккеризованному серверу MySQL со своего ноутбука, не подключая порт MySQL к хосту?

Рассуждение:
Почему я хочу именно так?
Потому что я не хочу, чтобы он (сервер MySQL) был виден всему Интернету и, следовательно, злоумышленникам, но в то же время я хочу легкий доступ к данным MySQL с моего ноутбука.

Возможное решение:
для этого нужен docker macvlan? Нужно ли мне создавать сеть на VPS с родительским интерфейсом внутренней сети или что-то в этом роде? а затем подключить мой контейнер MySQL к этой сети?

Я пробовал это:

      docker network create \
-d macvlan \
--attachable \
--subnet=172.40.110.0/24 \
--gateway=172.40.110.1 \
-o parent=innernet \
infranet2

И затем я попытался присоединить к нему контейнер MySQL:

      docker network connect infranet2 mysql-server

Но я получаю только ошибку:
root@vps:~$ sudo docker network Connect infranet2mysql-server Ответ об ошибке от демона: не удалось создать порт macvlan: недопустимый аргумент

1 ответ

Что вы можете сделать, так это открыть свой порт (3306) только для внутреннего IP-адреса, доступного через Wireguard, например IP-адреса туннеля (в отличие от раскрытия его для всех IP-адресов (0.0.0.0/0), как это происходит по умолчанию. ). Учитывая, что ваш IP-адрес туннеля — 192.168.0.1, вы можете это сделать следующим образом:

      docker run --name mysql-server \
-p 192.168.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-d mysql

Затем вы сможете получить доступ к своему удаленному серверу MySQL, но доступ из Интернета будет невозможен.

Другие вопросы по тегам