Удаленный сервер mysql в контейнере docker - доступ с помощью macvlan и wireguard?

Ситуация: Несколько серверов VPS по всему США подключены к моему ноутбуку через сеть wireguard mesh. Для wireguard mesh network я использую инструмент под названием innernet (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 с моего ноутбука.

Possible solution:
Для этого нужен 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 Error response from daemon: failed to create the macvlan port: invalid argument

0
задан 6 August 2021 в 13:32
1 ответ

Что вы можете сделать, так это открыть свой порт (3306) только для внутреннего IP-адреса, доступного через wireguard, например, для туннельного IP-адреса (вместо того, чтобы открывать его для всех IP-адресов (0.0.0.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, но доступ из Интернета будет невозможен.

2
ответ дан 7 August 2021 в 20:37

Теги

Похожие вопросы