Puncte:0

Server mysql la distanță în containerul docker - acces folosind macvlan și wireguard?

drapel co

Situatie: Mai multe servere VPS din SUA s-au conectat la laptopul meu prin intermediul rețelei Wireguard Mesh. Pentru rețeaua de plasă Wireguard, folosesc un instrument numit innernet (https://github.com/tonarino/innernet).

Deci, practic, este ca laptopul meu și serverele vps sunt în aceeași rețea internă.

IP VPS = 10.32.89.1
ip laptop = 10.32.90.1

Se pare că VPS-ul și laptopul au această interfață virtuală definită (nu sunt sigur dacă acest lucru contează):

innernet

Serverul VPS are mysql container runig (nu expun portul 3306 la gazdă). Cum mă pot conecta la acel server mysql dockerizat de pe laptopul meu fără a monta portul mysql pe gazdă?

Raţionament:
De ce vreau așa?
Pentru că nu vreau să-l fac (serverul mysql) vizibil pentru întregul internet și, prin urmare, pentru atacatori, dar în același timp vreau acces ușor la datele mysql de pe laptopul meu.

Soluție posibilă:
Pentru asta este docker macvlan? Trebuie să creez o rețea pe VPS care are interfață internă ca părinte sau ceva de genul ăsta? și apoi atașez containerul meu mysql la acea rețea?

Am incercat asta:

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

Și apoi am încercat să alătur containerul mysql la el:

docker network connect infranet2 mysql-server

Dar primesc doar o eroare:
root@vps:~$ sudo docker network connect infranet2mysql-server Răspuns de eroare de la demon: nu s-a putut crea portul macvlan: argument nevalid

Puncte:2
drapel sb

Ceea ce puteți face este să vă expuneți portul (3306) numai pe ip-ul intern, accesibil prin wireguard, cum ar fi ip-ul tunelului (spre deosebire de expunerea lui pe toate ip-urile (0.0.0.0/0), așa cum se întâmplă în mod implicit ). Având în vedere că ip-ul tunelului este 192.168.0.1, așa ați proceda:

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

Apoi puteți accesa serverul mysql de la distanță, dar accesul de pe internet nu ar fi posibil.

Dannyboy avatar
drapel co
Mulțumesc, m-am gândit la asta - dar nu sunt sigur cum se va comporta docker dacă rețeaua Wireguard se defectează brusc. Va doborî și containerul mysql? Speram să găsesc o soluție în care, dacă rețeaua innernet/wireguard nu este disponibilă, acest lucru nu va duce la stricarea containerului. ^și bănuiesc că mai sus îl va bloca.
jabbson avatar
drapel sb
nu, containerul nu va merge în jos împreună cu interfața, containerul va funcționa în continuare, pur și simplu nu va fi accesibil
Dannyboy avatar
drapel co
Mulțumiri. ai dreptate. tocmai l-am testat și funcționează - mysql este accesibil pe rețeaua mesh innernet și nu pe ip public. nu este nevoie de tipuri de rețele ezoterice. plasele de protecție sunt fantastice.
Dannyboy avatar
drapel co
ah interesant - de fapt - dacă rețeaua wireguard este oprită, containerul mysql NU va putea porni. Am testat folosind o adresă IP aleatorie și am primit această eroare în încercarea de a porni stiva: „Eroare la pornirea proxy-ului userland: ascultă tcp 10.32.89.22:3306: bind: nu se poate atribui adresa solicitată”. ceea ce înseamnă că cred că dacă rețeaua Wireguard este în jos - stiva nu va putea porni/reporni în mod corespunzător, afectând fiabilitatea...

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.