Рейтинг:0

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

флаг co

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

Так что в основном это похоже на то, что мой ноутбук и серверы vps находятся в одной внутренней сети.

IP-адрес VPS = 10.32.89.1
IP-адрес ноутбука = 10.32.90.1

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

внутренняя сеть

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

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

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

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

создание сети докеров \
-d маквлан \
--присоединяемый \
--подсеть=172.40.110.0/24 \
--шлюз=172.40.110.1 \
-o родитель=внутренняя сеть \
инфранет2

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

сеть docker подключиться к infranet2 mysql-серверу

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

Рейтинг:2
флаг sb

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

docker run --name mysql-сервер \
-p 192.168.0.1:3306:3306 \
-e MYSQL_ROOT_PASSWORD=мой-секрет-пароль \
-d mysql

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

Dannyboy avatar
флаг co
Спасибо, я думал об этом, но не уверен, как поведет себя докер, если сеть wireguard внезапно выйдет из строя. Это также приведет к падению контейнера mysql? Надеялся найти решение, при котором, если сеть innernet/wireguard недоступна, это не приведет к падению контейнера. ^ и я подозреваю, что выше заблокирует его.
jabbson avatar
флаг sb
нет, контейнер не упадет вместе с интерфейсом, контейнер все равно будет работать, просто он будет недоступен
Dannyboy avatar
флаг co
Благодарю. ты прав. только что протестировал его, и он работает - mysql доступен во внутренней ячеистой сети, а не на общедоступном IP-адресе. нет необходимости в эзотерических сетевых типах. Wireguard сетки фантастические.
Dannyboy avatar
флаг co
ах, интересно - на самом деле - если сеть wireguard не работает, контейнер mysql НЕ сможет запуститься. Я тестировал с использованием случайного IP-адреса, и я получил эту ошибку при попытке загрузить стек: «Ошибка запуска прокси-сервера пользовательского пространства: прослушивание tcp 10.32.89.22:3306: привязка: невозможно назначить запрошенный адрес». это означает, что я думаю, что если сеть wireguard не работает, стек не сможет загружаться / перезагружаться должным образом, что влияет на надежность ....

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.