Puncte:0

Imposibil de utilizat Docker DNS cu nftables

drapel pw

Am un container DNS bind9 care rulează pe 10.64.128.53, care se află pe „serverele” rețelei docker de pe subrețeaua 10.64.128.0/24. asta merge bine si daca rulez: nslookup google.com 10.64.128.53

Obțin rezultatul:

Server: 10.64.128.53
Adresa: 10.64.128.53#53

Răspuns neautorizat:
Nume: google.com
Adresa: 216.58.193.142

Când rulez aceeași comandă într-un container docker: docker run --rm -it --network servers --dns 10.64.128.53 alpine nslookup google.com 10.64.1 28.53

Obțin rezultatul:

Server: 10.64.128.53
Adresa: 10.64.128.53:53

Răspuns neautorizat:
Nume: google.com
Adresa: 216.58.193.142

Acest lucru este de așteptat Acum, dacă alerg: docker run --rm -it --network servers --dns 10.64.128.53 alpine nslookup google.com Obțin rezultatul:

nslookup: scrieți la „127.0.0.11”: conexiune refuzată
;; conexiunea a expirat; niciun server nu a putut fi atins

Acest lucru nu are prea mult sens pentru mine, deoarece am specificat serverul meu DNS docker, dar presupun că docker îl rulează printr-un proxy intern pe 127.0.0.11. Ar fi grozav dacă l-aș folosi, dar nu am nevoie de el. Cea mai bună soluție la care mă pot gândi este suprascrierea /etc/resolv.conf cu serverul meu DNS, dar aceasta pare o soluție îngrozitoare. am vazut asta https://github.com/moby/moby/issues/19474#issuecomment-173093011 dar nu pot face asta să funcționeze în nftables, dar cred că aceasta este singura modalitate, deoarece se pare că serverul DNS docker necesită conexiuni de la 127.0.0.11:53

Gazda este Gentoo Linux, știu că rețeaua funcționează când este instalat iptables. Văd aceste erori în jurnalele dockers ori de câte ori pornesc un VM:

time="2022-01-25T03:08:56Z" level=warning msg="Nu s-a găsit iptables: exec: \"iptables\": fișierul executabil nu a fost găsit în $PATH"
time="2022-01-25T03:08:56Z" level=error msg="set up rule failed, [-t nat -I DOCKER_OUTPUT -d 127.0.0.11 -p udp --dport 53 -j DNAT --to- destinație 127.0.0.11:50360]"
time="2022-01-25T03:08:56Z" level=error msg="set up rule failed, [-t nat -I DOCKER_POSTROUTING -s 127.0.0.11 -p udp --sport 50360 -j SNAT --to- sursa :53]"
time="2022-01-25T03:08:56Z" level=error msg="set up rule failed, [-t nat -I DOCKER_OUTPUT -d 127.0.0.11 -p tcp --dport 53 -j DNAT --to- destinație 127.0.0.11:46531]"
time="2022-01-25T03:08:56Z" level=error msg="set up rule failed, [-t nat -I DOCKER_POSTROUTING -s 127.0.0.11 -p tcp --sport 46531 -j SNAT --to- sursa :53]"

De asemenea, văd această eroare de fiecare dată când încerc să rulez comenzile nslookup în containerele docker, dar nu sunt sigur cât de legată este:

time="2022-01-25T03:20:08.094540639Z" level=error msg="Handler pentru POST /v1.41/exec/d52b964c2e34acb78b67e5d2f02a8143e1efb3c45da02a8143e1efb3c45da09: containerul nu poate opri returnat6936fe1b345da09346fe1b:

Doar folosirea iptables nu este cu adevărat o soluție aici, vreau să fie pur nftables și asta nu pare nerezonabil.

Dacă am iptables care rulează, Docker DNS pare să funcționeze, dar nu există reguli adăugate la iptables. Nu înțeleg asta, de ce necesită iptables, dar nu face reguli?

drapel jp
Docker nu acceptă `nftables`.
Desultory avatar
drapel pw
Asta nu este de ajutor. Ar trebui să existe o modalitate de a utiliza pur nftables cu docker, iptables și nftables sunt ambele suficient de asemănătoare.
drapel jp
Docker depinde foarte mult de `iptables` pentru a-și configura rețeaua, dar nu acceptă deloc `nftables`. Dacă căutați pe google `site:docs.docker.com nftables`, veți găsi exact o lovitură.
Desultory avatar
drapel pw
Totul, cu excepția DNS-ului, funcționează perfect cu nftables, problema aici este că docker folosește hack-uri pentru ca DNS-ul intern să funcționeze
Ginnungagap avatar
drapel gu
Am o configurare în mare parte identică cu Gentoo fără opțiunea de kernel iptables moștenit și singurul mod în care fac Docker să funcționeze efectiv este să modific punctul de intrare al containerelor pentru a remedia `/etc/resolve.conf` înainte de a porni punctul de intrare real. Sunt nedumerit că Docker este atât de murdar, mai ales când se presupune că au o opțiune în configurația demonului pentru a nu modifica configurația iptables, care oricum este în mare parte ignorată.
Desultory avatar
drapel pw
@Ginnungagap care este metoda ta exactă pentru a modifica rezoluția containerului? Sunt de acord că nu ar trebui să fie așa de murdar. Simt că specificarea opțiunilor dns ar trebui să suprascrie resolv.conf sau ceva în loc de docker folosind proxy dns din interior

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.