Puncte:1

Wireguard redirecționează traficul către gazdă

drapel cn

Folosesc Wireguard ca container docker pe un pi. Rulez alte câteva servicii pe pi care vreau să fie accesibile numai prin conexiunea wireguard. Serverul wireguard a creat o interfață wg0 și o subrețea 10.8.0.0/24. Din interiorul containerului, mă pot conecta la gazdă prin 172.17.0.1 așa că am căutat și am putut crea următoarea configurație în interiorul containerului:

iptables -t nat -A PREROUTING -d 10.8.0.1/32 -j DNAT --to-destination 172.17.0.1

Acest lucru îmi permite să mă conectez de la clientul wireguard la ip-ul gazdă wireguard 10.8.0.1 și prin acest mod conectați-vă la toate serviciile care rulează pe și alte containere.

Acest lucru funcționează bine, cu excepția faptului că ip-ul sursă arată ip-ul din containerul docker.

Am 3 intrebari:

  1. Există vreo modalitate de a afișa IP-ul sursă ca 10.8.0.2 (IP-ul clientului wireguard)?
  2. Acest lucru impune vreun risc de securitate?
  3. Există o modalitate mai bună de a face asta?

Sunt conștient că aș putea folosi și modul gazdă docker în loc de modul bridge, dar asta vine cu propriul set de provocări. Știu și că aș putea accesa 172.17.0.1 de la clientul vpn. Numai că asta nu funcționează când sunteți conectat la mai multe VPN-uri în același timp.

Multe mulțumiri in avans.

Puncte:1
drapel cn
  1. Există vreo modalitate de a afișa IP-ul sursă ca 10.8.0.2 (IP-ul clientului wireguard)?

Probabil că aveți și o regulă iptables care rulează în container care arată astfel:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Aceasta este ceea ce schimbă IP-ul sursă al conexiunilor transmise prin containerul WireGuard. Cu abordarea dvs. actuală, pentru a evita utilizarea acestei reguli, va trebui să ajustați rutarea în fiecare dintre celelalte containere pentru a utiliza containerul WireGuard ca poartă de acces către clientul WireGuard la distanță.

  1. Acest lucru impune vreun risc de securitate?

Clientul WireGuard la distanță poate accesa orice servicii de rețea pe care containerul WireGuard însuși le poate accesa.

  1. Există o modalitate mai bună de a face asta?

Cea mai simplă alternativă ar fi lansarea celorlalte containere în spațiul de nume de rețea al containerului WireGuard, ca următorul:

Mai întâi, lansați containerul WireGuard cu un nume, cum ar fi containerul meu-wg:

sudo docker run \
    --cap-add NET_ADMIN \
    --name my-wg-container \
    --public 51820:51820/udp \
    --rm \
    --volume /srv/my-wg-container/conf:/etc/wireguard \
    procustodibus/wireguard

Apoi, lansați celelalte containere în spațiul de nume de rețea al containerului WireGuard, cu --network container:my-wg-container opțiune:

sudo docker run \
    --name-meu-server-web \
    --network container:my-wg-container \
    --rm \
    nginx

Dacă se utilizează containerul WireGuard 10.8.0.1 pentru adresa interfeței sale WireGuard (ca în exemplul dvs.), puteți accesa serverul web care rulează în serverul-meu-web container la http://10.8.0.1/ de la clientul WireGuard la distanță. Vezi Utilizați pentru rețeaua de containere secțiune din aceasta Ghidul containerelor WireGuard pentru un exemplu complet.

Cu această abordare, nu trebuie să faceți nimic special celorlalte containere (altul decât să le atașați la containerul WireGuard), iar clientul WireGuard la distanță poate accesa doar serviciile din containerele atașate (în loc de orice alte servicii de rețea accesibile pentru containerul WireGuard).

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.