- 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ță.
- 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.
- 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).