DNS кайра багытталгандан кийин dnsmasq суроолору VPNден эмнеге чыгып кетет
Маршрутизатор тараптагы REDIRECT LAN DNS суроосун чечүүчүнүн жаңы сокетине айландырат. Клиент агымындагы белгилер ага эч качан жетпейт, ошондуктан жогорку агымдын чыгымын түз орнотуңуз.
LAN клиенти өз VPNине туура жетет, бирок анын DNS суроолору дагы эле туура эмес жогорку каналда көрүнөт. Бул кадимки маанидеги агым эмес; бул маршрутизатор суроону өткөрүүнү токтотуп, өзү жооп бергенде боло турган нерсе. Тоскоол кылуу багытты жергиликтүү сокетке кайра жазат, анан чечүүчү өзүнүн булак дареги жана өзүнүн маршруттоо чечими менен экинчи, байланышсыз сүйлөшүүнү ачат. Клиент агымына коюлган белгилер биринчи сүйлөшүүнү сүрөттөйт жана экинчиси жөнүндө такыр эч нерсе айтпайт.
Белги суроо менен бирге жүрбөйт
Пакет белгилери conntrack жазуусунда жана учуп бара жаткан пакетте жашайт. REDIRECT эрежеси ошол учууну бүтүрөт: пайдалуу жүк жергиликтүү сокетке берилет, ал эми баштапкы жазуу өз ишин бүттү. Андан кийин маршрутизатордон чыккан нерсе — чечүүчү процесси түзгөн жаңы сокет, анын булагы маршрутизатордун өз дареги.
Ошондуктан LAN клиентинин дарегине байланган саясат маршруту жогорку агым суроосуна эч качан туура келбейт. Жаңы сокет клиентке эмес, dnsmasqга таандык, ал эми ядро маршрутту маршрутизатордун өз трафиги үчүн баалайт. Булак эрежелери, интерфейс эрежелери жана белги эрежелеринин баары башка tuple көрөт. Белги таралат деп божомолдоо — бул конфигурациядагы эң көп кездешүүчү ката, жана ал клиент тараптагы жазууда көрүнбөйт.
Эки сүйлөшүү чындыгында бир атты жана бир убакытты бөлүшөт, жана жазууну тез карап чыкканда аларды бир агымдай көрсөткөн да ушул.
Өткөрүү кайсы жерде жергиликтүү чечүүгө айланат
53-порттун кайра багытталып жатканын, башка хостко айландырылып жатканын же ошол бойдон калганын аныктоодон баштаңыз, анткени үч учур ар башка жүрөт. Жергиликтүү портко кайра багыттоо өткөрүүнү бүтүрөт, ал эми башка машинага айландыруу пакетти кыймылда кармап, клиенттин tupleин маанилүү кылып сактайт.
Эки протоколду тең караңыз. UDP жана TCP аркылуу жеткиликтүү чечүүчү экөө боюнча тексерлилет, ал эми UDPни гана камтыган эрежелер жыйындысы чоң жооптор үчүн тынч тешик калтырат. Маршрутизатордун өз конфигурация менеджери түзгөн эрежелер да эсепке алынат, ал эми түзүлгөн файлды оңдоо адатта кийинки кайра жүктөөгө жеңилет.
sudo nft list ruleset | grep -n -B2 -A4 'dport 53'
sudo iptables -t nat -L -n -v | grep -E ':53|dns'
sudo ss -lunp | grep ':53'
Бул чыгыштар кезеги менен үч суроого жооп берет: суроону эмне кайра жазат, аны эмне кабыл алат жана угуп жаткан сокетти кайсы процесс ээлейт. Ээси белгилүү болгондон кийин жогорку агым саясатынын жашоочу жери бар.
Чечүүчүгө өзүнүн чыгуу саясатын бериңиз
Доменге таандык жогорку агым — тоннель бир аз аттарга гана керек болгондо эң таза курал. dnsmasq домен менен чектелген server сабын кабыл алат, каалоо боюнча интерфейс же булак дареги менен суроону тандалган түзмөктөн чыгарат. Ушул багыттоо экинчи сүйлөшүүнү VPNге ээрчүүгө мажбурлайт.
server=/corp.example/10.30.0.53@tun_work
log-queries
Жогорудагы домен, дарек жана интерфейс өз маанилериңиз үчүн орун басарлар. Домен тандоо жана чыгууну көзөмөлдөө өзүнчө чечим бойдон калат: маршрут болушу керек, булак дарегине жогорку чечүүчү уруксат бериши керек жана firewall жоопко уруксат бериши керек. Жалгыз интерфейс аркылуу багыттоо fail-closed эмес, анткени жоголгон тоннель чечүүчүнү башка жолго түшүрүп жибериши мүмкүн. Каалаган жарыя камдык жолду жашыруун бойдон калышы тийиш аттар мейкиндигинен алыс кармаңыз.
Сапты түзүлгөн файлга эмес, маршрутизатор колдогон конфигурация ээсине коюңуз, болбосо кийинки кайра жүктөө түзөтүүнү өчүрөт.
Жалпы кэш эмнени сактай албайт
Бир кэштүү бир өткөргүч ар бир LAN клиентине кызмат кылат, жана бул айрым тармактарга керек болгон айырманы кыйратат. Эгер эки клиент бир атты ар башка чечиши керек болсо, жалпы сокеттин кайсы клиент сураганын калыбына келтирерлик жолу жок. Ар бир клиент үчүн саясат өзүнчө чечүүчү нускаларында же инсандыкты сактаган өткөрүү мүмкүнчүлүгүндө жашоого тийиш.
Кэштелген жооп да жаңы жол тууралуу далил эмес. Жооп эстен келиши мүмкүн, ал эми жогорку агым маршруту сынган бойдон калат.
53-порт эрежелери DNSти HTTPS же TLS аркылуу сүйлөгөн колдонмолор жөнүндө эч нерсе айтпайт. Ал суроолор кайра багыттоого эч качан жетпейт, ошондуктан тек 53-портко курулган саясат трафиктин ички жыйындысын сүрөттөйт жана аны ички жыйынды катары документтештирүү керек.
Экинчи сүйлөшүүнү текшериңиз, биринчисин эмес
Өзүңүз көзөмөлдөгөн бир ат менен сынап, эки тарапты тең караңыз. Клиент тараптагы жазуу суроонун LANдан чыкканын далилдейт; андан кийин кайда кеткенин маршрутизатор тарабы гана далилдейт.
sudo tcpdump -ni tun_work udp port 53
ip route get 10.30.0.53
dig +short corp.example @10.30.0.53
Ар бир аракеттен мурун кэшти тазалаңыз, анткени жылуу жооп сынган жогорку агымды жашырат. TCP аркылуу кайталаңыз, анан тоннель өчүк абалда кайталаңыз, чечүүчү өзүнүн артык көргөн жолу жоголгондо эмне кыларын көрүү үчүн. Ушул акыркы жүрүм-турум долбоордун fail-closed же жөн эле ийгиликтүү экенин чечет.