Creez următoarea configurație folosind containere docker
Gazdă Docker
: mașină fizică care rulează containerele docker
openvpn
: container care rulează openvpn și se conectează automat la un VPN.
nzbget
: container care rulează nzbget, interfață web accesibilă pe port <docker-host-ip>:6789
Fapte:
- Pot accesa toate containerele folosind IP-ul gazdei docker.
- Conexiunea openvpn stabilește cu succes o conexiune VPN.
- The
nzbget
este în funcțiune.
A doua etapă a planului meu este să direcționez traficul nzbget
container prin openvpn
recipient. Reușesc acest lucru adăugând următoarea linie la docker-compose.yaml al containerului nzbget:
...
network_mode: "container:openvpn"`
...
După această cerere ipinfo.io
îmi arată IP-ul VPN-ului. Dar după aceasta pierd accesul la interfața web nzbget prin <docker-host-ip>:6789
(conexiunea a expirat). Când eu (în scopuri de testare) nu-l las pe openvpn
container stabilește o conexiune VPN și repornește ambele containere. Mă pot conecta la interfața nzbget folosind <docker-host-ip>:6789
. Deci, se pare că conexiunea VPN în sine mă împiedică să mă conectez la containerul nzbget.
Acum întrebarea este: cum pot configura openvpn în așa fel încât să îmi permită să mă conectez la interfața mea web nzbget folosind <docker-host-ip>:6789
.
Am observat uitându-mă la jurnalele docker
al openvpn
container care atunci când se stabilește conexiunea VPN se adaugă unele rute:
...
2021-11-16 19:03:38 Dispozitiv TUN/TAP tun0 deschis
2021-11-16 19:03:38 /sbin/ip link set dev tun0 up mtu 1500
2021-11-16 19:03:38 /sbin/ip link set dev tun0 up
2021-11-16 19:03:38 /sbin/ip addr add dev tun0 10.7.2.7/24
2021-11-16 19:03:38 /sbin/ip route adauga <vpn-ip-address>/32 prin 172.18.0.1
2021-11-16 19:03:38 /sbin/ip route adauga 0.0.0.0/1 prin 10.7.2.1
2021-11-16 19:03:38 /sbin/ip route adauga 128.0.0.0/1 prin 10.7.2.1
...
Cred că configurația greșită/rutele IP aflate în conflict este ceea ce îmi cauzează problemele. Așadar, iată câteva informații suplimentare.
Interfețe pe openvpn
container:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state NECUNOSCUT qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state NECUNOSCUT qlen 500
link/[65534]
inet 10.7.2.7/24 scope global tun0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
85: eth0@if86: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
Lista rutelor IP când vpn este activ openvpn
container:
root@cf64c3dd2846:/# lista de rute IP
0.0.0.0/1 prin 10.7.2.1 dev tun0
implicit prin 172.18.0.1 dev eth0
10.7.2.0/24 dev tun0 scope link src 10.7.2.7
<vpn-ip-address> prin 172.18.0.1 dev eth0
128.0.0.0/1 prin 10.7.2.1 dev tun0
172.18.0.0/16 dev eth0 scope link src 172.18.0.2
Lista rutelor IP când vpn este nu activ pe openvpn
container (în această situație pot accesa interfața web nzbget):
implicit prin 172.18.0.1 dev eth0
172.18.0.0/16 dev eth0 proto kernel scope link src 172.18.0.2
Știe cineva despre o regulă de rută IP pe care să o pot aplica pentru a permite accesul la interfața web nzbget? În timp ce aveți o conexiune VPN activă? De exemplu, există o modalitate de a permite (numai) traficului de intrare pe portul 6789 să fie direcționat „normal” (nu prin VPN)
Multumesc pentru ajutor!