Elsősorban Linux rendszereken volt észlelhető az a probléma, hogy lokális gép (Linux, Ubuntu) ha Dockert futtat, Dockeren belül nem látható vagy DNS feloldható a VPN-ből jött címek.
A hibát a systemd-resolved okozza a linux-os kornyezetekben.
Tegyük fel hogy az alap docker telepítés nem lett átírva és a resolved a 127.0.0.53-as címen halgatózik és a docker a 172.17.0.0/12 címtartományt használja.
Más esetben a megfelelő címeket kell használni.
Telepiteni kell a socat csomagot
sudo apt install socat
Létre kell hozni egy service definíciós file-t.
sudo cat /etc/systemd/system/docker-dns.service
[Unit]
Description=Docker DNS bridge
After=docker.service
Requires=docker.service
[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=docker-dns-bridge
ExecStart=socat -d -d UDP-LISTEN:53,reuseaddr,fork,bind=172.17.0.1 UDP:127.0.0.53:53
Restart=always
[Install]
WantedBy=multi-user.target
Ezután újraindítani amit kell:
sudo systemctl daemon-reload
sudo systemctl start docker-dns.service
sudo systemctl enable docker-dns.service
Valamint a dockernek is meg kell mondani hogy a megfelelő DNS szervert használja
sudo cat /etc/docker/daemon.json
{
"dns": ["172.17.0.1"]
}
Valamint még újra kell indítani a docker service-t
sudo systemctl restart docker
Az ezután létrehozott konténerekben már jól fog működni a VPN-en keresztüli belső címek feloldása
Megeshet hogy a rendszerben van firewall ami még mindig blokkolhat, mint ahogy az Ubuntuban van alapértelmezett "ufw".
Ezesetben a következő parancsot kell futtatni:
ufw allow in on docker0 to any port 53 proto udp
UFW tűzfal howto
# A tűzfal státuszának lekérdezése
ufw status numbered
# egy port engélyezese a docker0 interfészről
ufw allow in on docker0 to any port 53 proto udp
# ugyanennek az engedélynek az eltávolítása
ufw delete allow in on docker0 to any port 53 proto udp
# az egész tűzfal kikapcsolása
ufw disable
# az egész tűzfal bekapcsolása
ufw enable
Nincsenek megjegyzések:
Megjegyzés küldése