Oníbàárà LAN dé VPN rẹ̀ lọ́nà tó tọ́, síbẹ̀ àwọn ìbéèrè DNS rẹ̀ ń farahàn lórí ọ̀nà òkè tí kò tọ́. Èyí kì í ṣe ìsàn jáde ní ìtumọ̀ ojú-ọ̀nà; ohun tí ń ṣẹlẹ̀ ni nígbà tí router dá ṣíṣe gbígbé ìbéèrè lọ dúró tí òun fúnra rẹ̀ dáhùn. Ìdínà yí ibi-àfojúsùn padà sí socket àdúgbò, lẹ́yìn náà olùyọjú ṣí ìjíròrò kejì, tí kò ní í ṣe pẹ̀lú rẹ̀, pẹ̀lú àdírẹ́sì orísun tirẹ̀ àti ìpinnu ìtọ́nà tirẹ̀. Àwọn àmì tí a fi sí ṣíṣàn oníbàárà ṣàpèjúwe ìjíròrò àkọ́kọ́, wọn kò sì sọ ohunkóhun nípa èkejì.

Àmì kì í rìn pẹ̀lú ìbéèrè

Àwọn àmì páké ń gbé lórí àkọsílẹ̀ conntrack àti lórí páké tó ń fò. Òfin REDIRECT fopin sí ìrìn yẹn: a fi ẹrù náà lé socket àdúgbò lọ́wọ́, àkọsílẹ̀ àkọ́kọ́ sì ti ṣe iṣẹ́ rẹ̀ tán. Ohun tí ó ń jáde kúrò nínú router lẹ́yìn náà ni socket tuntun tí ìlànà olùyọjú dá, pẹ̀lú àdírẹ́sì router fúnra rẹ̀ gẹ́gẹ́ bí orísun.

Ìdí nìyẹn tí ọ̀nà ìlànà tí a so mọ́ àdírẹ́sì oníbàárà LAN kò fi bá ìbéèrè òkè mu rí. Socket tuntun náà jẹ́ ti dnsmasq kì í ṣe ti oníbàárà, kẹ́rẹ́nẹ́lì sì ń ṣàyẹ̀wò ọ̀nà náà fún ìrìn àwọn ọkọ̀ router fúnra rẹ̀. Àwọn òfin orísun, òfin ojú-ọ̀nà àti òfin àmì gbogbo wọn rí tuple mìíràn. Láti rò pé àmì náà ń kàn kálẹ̀ ni àṣìṣe tó wọ́pọ̀ jùlọ nínú ìṣètò yìí, kò sì hàn nínú gbígbà àwòrán ní ẹ̀gbẹ́ oníbàárà.

Ìjíròrò méjèèjì pín orúkọ kan àti àkókò kan, ìyẹn sì ni ó máa ń jẹ́ kí wọ́n dà bí ṣíṣàn kan nígbà tí o bá yára wo gbígbà àwòrán.

Níbi tí gbígbé lọ ń di ojútùú àdúgbò

Bẹ̀rẹ̀ nípa ṣíṣe àwárí bóyá a ń yí ibùdó 53 padà, a ń túmọ̀ ọ́ sí agbàlejò mìíràn, tàbí a fi í sílẹ̀ bó ṣe rí, nítorí àwọn ọ̀ràn mẹ́tẹ̀ẹ̀ta ń hùwà lọ́nà ọ̀tọ̀ọ̀tọ̀. Yíyí padà sí ibùdó àdúgbò fopin sí gbígbé lọ, nígbà tí ìtúmọ̀ sí ẹ̀rọ mìíràn ń jẹ́ kí páké náà máa rìn tí ó sì ń jẹ́ kí tuple oníbàárà ní ìtumọ̀.

Wo àwọn ìlànà méjèèjì. Olùyọjú tí a lè dé bá nípasẹ̀ UDP àti TCP ni a óò dán wò lórí méjèèjì, àti pé àkójọ òfin tí ó bo UDP nìkan ń fi ihò ìdákẹ́jẹ́ sílẹ̀ fún àwọn ìdáhùn ńlá. Àwọn òfin tí olùṣàkóso ìṣètò router fúnra rẹ̀ ń dá ni a kà pẹ̀lú, ṣíṣe àtúnṣe fáìlì tí a dá sì máa ń pàdánù fún ìgbéékún tó ń bọ̀.

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'

Àwọn àbájáde yẹn ń dáhùn ìbéèrè mẹ́ta lẹ́sẹẹsẹ: kí ni ó ń tún ìbéèrè kọ, kí ni ó ń gbà á, àti èwo ìlànà ni ó ni socket tí ń gbọ́. Nígbà tí a bá mọ ẹni tó ni ọ́, ìlànà òkè ní ibi láti gbé.

Fi ìlànà ìjáde tirẹ̀ fún olùyọjú

Gbígbé lókè tí ó yà sọ́tọ̀ fún agbègbè ni irinṣẹ́ tó mọ́ jùlọ nígbà tí àwọn orúkọ díẹ̀ péré ló nílò ọ̀nà abẹ́lẹ̀. dnsmasq gba ìlà server tí a fi ààlà sí agbègbè kan, pẹ̀lú ojú-ọ̀nà tàbí àdírẹ́sì orísun àṣàyàn tí ó ń gbé ìbéèrè jáde kúrò nínú ẹ̀rọ tí a yàn. Ìtọ́sọ́nà yẹn ni ó ń mú kí ìjíròrò kejì tẹ̀lé VPN.

server=/corp.example/10.30.0.53@tun_work
log-queries

Agbègbè, àdírẹ́sì àti ojú-ọ̀nà tó wà lókè jẹ́ ààyè fún àwọn iye tirẹ̀. Yíyan agbègbè àti ìṣàkóso ìjáde wà ní ìpinnu ọ̀tọ̀ọ̀tọ̀: ọ̀nà gbọ́dọ̀ wà, olùyọjú òkè gbọ́dọ̀ gba àdírẹ́sì orísun láàyè, odi iná sì gbọ́dọ̀ gba ìdáhùn láàyè. Ìtọ́sọ́nà ojú-ọ̀nà nìkan kì í ṣe fail-closed, nítorí ọ̀nà abẹ́lẹ̀ tó sọnù lè jẹ́ kí olùyọjú ṣubú sí ọ̀nà mìíràn. Jẹ́ kí èyíkéyìí àyè ìpadàbọ̀ gbangba wà ní ọ̀nà jíjìnnà sí ààyè orúkọ tí ó gbọ́dọ̀ wà ní àṣírí.

Fi ìlà náà sí ọ̀dọ̀ ẹni tí ó ni ìṣètò tí router ń ṣe àtìlẹ́yìn fún, kì í ṣe sínú fáìlì tí a dá, bí bẹ́ẹ̀ kọ́ ìgbéékún tó ń bọ̀ yóò pa àtúnṣe náà ré.

Ohun tí káṣì tí a pín kò lè tọ́jú

Olùgbélé lọ kan pẹ̀lú káṣì kan ń sìn gbogbo oníbàárà LAN, ìyẹn sì ń wó ìyàtọ̀ kan tí àwọn nẹ́tíwọ́kì kan nílò. Bí oníbàárà méjì bá gbọ́dọ̀ yanjú orúkọ kan lọ́nà ọ̀tọ̀ọ̀tọ̀, socket tí a pín kò ní ọ̀nà láti dá ẹni tí ó béèrè padà. Ìlànà fún oníbàárà kọ̀ọ̀kan gbọ́dọ̀ gbé nínú àwọn ẹ̀dá olùyọjú ọ̀tọ̀ọ̀tọ̀ tàbí nínú ẹ̀yà gbígbélé tí ó ń pa ìdánimọ̀ mọ́.

Ìdáhùn tí a fi káṣì pamọ́ kì í sì í jẹ́ ẹ̀rí nípa ọ̀nà tuntun. Ìdáhùn lè wá látinú ìrántí nígbà tí ọ̀nà òkè ṣì wà ní bàjẹ́.

Àwọn òfin ibùdó 53 kò sọ ohunkóhun nípa àwọn ohun èlò tí ń sọ DNS lórí HTTPS tàbí lórí TLS. Àwọn ìbéèrè yẹn kò dé ibi yíyí padà rí, nítorí náà ìlànà tí a kọ́ lórí ibùdó 53 nìkan ń ṣàpèjúwe ìpín kan nínú ìrìn a sì gbọ́dọ̀ kọ ọ́ sílẹ̀ gẹ́gẹ́ bí ìpín.

Ṣàyẹ̀wò ìjíròrò kejì, kì í ṣe èkíní

Dán wò pẹ̀lú orúkọ kan tí ìwọ ń ṣàkóso kí o sì wo ẹ̀gbẹ́ méjèèjì. Gbígbà àwòrán ní ẹ̀gbẹ́ oníbàárà fi hàn pé ìbéèrè náà ti kúrò ní LAN; ẹ̀gbẹ́ router nìkan ni ó fi hàn ibi tí ó lọ lẹ́yìn náà.

sudo tcpdump -ni tun_work udp port 53
ip route get 10.30.0.53
dig +short corp.example @10.30.0.53

Pa káṣì rẹ́ kí ìgbìyànjú kọ̀ọ̀kan tó bẹ̀rẹ̀, nítorí ìdáhùn gbóná ń fi ọ̀nà òkè tó bàjẹ́ pa mọ́. Tún ṣe lórí TCP, lẹ́yìn náà tún ṣe pẹ̀lú ọ̀nà abẹ́lẹ̀ tí a ti pa, kí o lè rí ohun tí olùyọjú ń ṣe nígbà tí ọ̀nà tí ó fẹ́ já. Ìhùwà ìkẹyìn yẹn ni ó ń pinnu bóyá àpẹẹrẹ náà jẹ́ fail-closed tàbí ó kàn ní oríire.

Àwọn àpilẹ̀kọ tó jọra