Servidor mysql remoto no contêiner docker - acesso usando macvlan e wireguard?

Servidor mysql remoto no contêiner docker - acesso usando macvlan e wireguard?

Situação: Vários servidores VPS nos EUA se conectaram ao meu laptop por meio de uma rede mesh wireguard. Para rede mesh wireguard, estou usando uma ferramenta chamada innernet (https://github.com/tonarino/innernet).

Então, basicamente, é como se meu laptop e servidores VPS estivessem na mesma rede interna.

VPS ip    = 10.32.89.1
laptop ip = 10.32.90.1

Parece que o VPS e o laptop têm esta interface virtual definida (não tenho certeza se isso importa):

innernet

O servidor VPS possui contêiner mysql runig (não exponho a porta 3306 ao host). Como posso me conectar a esse servidor mysql dockerizado do meu laptop sem montar a porta mysql no host?

Raciocínio:
Por que eu quero assim?
Porque não quero torná-lo (servidor mysql) visível para toda a Internet e, portanto, para os invasores, mas ao mesmo tempo quero acesso fácil aos dados mysql do meu laptop.

Solução possível:
É para isso que serve o docker macvlan? Preciso criar uma rede no VPS que tenha interface innernet como pai ou algo assim? e depois anexar meu contêiner mysql a essa rede?

Eu tentei isso:

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

E então tentei juntar o contêiner mysql a ele:

docker network connect infranet2 mysql-server

Mas só recebo um erro:
root@vps:~$ sudo docker network connect infranet2mysql-server Resposta de erro do daemon: falha ao criar a porta macvlan: argumento inválido

Responder1

O que você pode fazer é expor sua porta (3306) apenas no ip interno, acessível via wireguard, como o ip do túnel (em vez de expô-la em todos os ips (0.0.0.0/0), como acontece por padrão ). Dado que o IP do seu túnel é 192.168.0.1, é assim que você faria:

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

Então você pode acessar seu servidor mysql remoto, mas o acesso pela internet não seria possível.

informação relacionada