Este imposibil. iptables
controlați Netfilterul, care este un filtru de pachete IP (un firewall) care acționează la nivelul OSI 3 și 4. Numele de domenii DNS sunt lucruri de nivel mai înalt (și oarecum ortogonale).
Puteți controla accesul la unele adrese IP (L3) și porturi TCP/UDP (L4) cu Netfilter.
Dacă doriți să controlați accesul la site-uri web, aveți următoarele opțiuni:
- rezolvați numele DNS în avans, obțineți adrese IP și puneți-le în firewall. Din ceea ce ştiu eu
iptables
face asta singur atunci când îi dați un nume de domeniu; lucrul pe care îl configurează în interiorul Netfilterului este adresa IP rezolvată pentru acel nume. Când proprietarul acelui domeniu decide să schimbe adresa IP, regula ta nu se va mai aplica. Dacă există mai multe site-uri web găzduite pe acel server care au această adresă IP (adică există o găzduire virtuală care găzduiește mai multe nume), fie le veți permite cu totul, fie le veți dezactiva complet. Asta se pare că faci acum;
- un proxy HTTP(e), care verifică numele de domenii solicitate și interzice accesul la unele. Invențiile moderne precum ECH (eSNI) vă vor reduce puterea pentru a controla doar accesul la intervalele IP, ca și în cazul firewall-ului simplu, deoarece vă face imposibil să aflați ce nume de gazdă a fost solicitat;
- o filtrare DNS, care configurează ce domenii rezoluția dvs. recursivă va rezolva pentru clienți și care nu.Din nou, invenții moderne, cum ar fi DNS-over-HTTP (de la Cloudflare), vă vor deduce puterea de a face asta, deoarece serverul dvs. DNS nu va mai fi responsabil pentru rezolvarea numelor și nu puteți ști ce nume de gazdă a fost solicitat;
- O inspecție profundă a pachetelor (DPI). Și din nou, internetul modern se îndreaptă în mod clar către dezactivarea posibilității de a inspecta traficul de către terți.