Ìwé ìṣẹ̀lẹ̀ fi aṣayan tí olùpèsè ti ta hàn, ọ̀nà abẹ́lẹ̀ ń ṣiṣẹ́, ṣùgbọ́n àwọn orúkọ inú ṣì ń kùnà. Ìbéèrè tààrà sí ẹ̀rọ ìṣètò orúkọ ń dáhùn, nítorí náà olùpèsè dára, ṣùgbọ́n gbogbo eto ń béèrè lọ́wọ́ olùdarí àdúgbò. Ohun tí ó dé ọ̀dọ̀ ẹ̀rọ ìbánisọ̀rọ̀ jẹ́ ìmọ̀ràn, kì í ṣe ìyípadà nínú ẹ̀rọ ìṣètò orúkọ, ẹ̀ka tí ó ni ìṣètò orúkọ sì yàtọ̀ lórí Linux, Windows àti macOS. Ní kété tí o bá ya aṣayan kúrò lọ́wọ́ olówó rẹ̀, àwọn àṣìṣe mẹ́rin bo fẹ́rẹ̀ẹ́ gbogbo ìròyìn: kò sí hook, hook méjì tí ń díje, DNS pínpín tí ń ṣiṣẹ́ gẹ́gẹ́ bí a ṣe ṣe é, tàbí orúkọ kúkúrú tí ó nílò ìparí kì í ṣe olùpèsè.

Aṣayan tí a ta jẹ́ ìmọ̀ràn, kì í ṣe ìfisọ́lẹ̀

Lórí olùpèsè, àwọn ìtọ́nà méjì ń ṣàpèjúwe èrò, kì í ṣe àbájáde:

push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DOMAIN corp.example"

Ẹ̀rọ ìbánisọ̀rọ̀ kò gba ẹ̀rọ ìṣètò orúkọ tí a ti ṣètò. Ó ń gba oníyẹ̀yẹ́ àyíká, foreign_option_1 àti àwọn tí ó tẹ̀le, ọ̀kan fún gbogbo ìlà tí a ta, kí nǹkan àdúgbò kan kà wọ́n kí ó sì tún ipò ẹ̀rọ ìṣètò orúkọ ti ẹ̀rọ ṣe é kọ. Lórí Linux kò sí nǹkan tí ó ṣe bẹ́ẹ̀ ní àìpé, nítorí náà olùpèsè tí ó tọ́ àti ẹ̀rọ ìbánisọ̀rọ̀ tí ó so mọ́ lè ṣì yanjú orúkọ nípasẹ̀ LAN.

Ní àárín àwọn ìpẹ̀kun méjì, ìgbésẹ̀ mẹ́ta wà: ìtà gbọ́dọ̀ dé, ẹ̀rọ ìbánisọ̀rọ̀ gbọ́dọ̀ fi hàn, kí hook sì gbọ́dọ̀ lò ó. Ka ìgbésẹ̀ àárín nínú ìwé ìṣẹ̀lẹ̀ ẹ̀rọ ìbánisọ̀rọ̀ àti èyí tí ó kẹ́yìn nínú ipò ẹ̀rọ ìṣètò orúkọ, kì í ṣe ìdàkejì rẹ̀, nítorí ìlà ìwé ìṣẹ̀lẹ̀ kan ń fi méjì àkọ́kọ́ nìkan hàn.

Jẹ́ kí ó dá ọ lójú pé ìtà dé kí o sì wá olówó rẹ̀

Bẹ̀rẹ̀ nípa dídárúkọ olùgbérú: àṣẹ openvpn ìhòhò, àpẹẹrẹ systemd, NetworkManager tàbí ẹ̀rọ ìbánisọ̀rọ̀ olùpèsè. Èyí ń pinnu ibi tí hook lè gbé. Lórí ẹ̀rọ tí ó ní systemd-resolved, resolvectl status ń ṣe àkọsílẹ̀ gbogbo ìsopọ̀ pẹ̀lú àwọn olùpèsè DNS àti àwọn agbègbè ìwákiri tí ó ń lò gan-an, ìsopọ̀ ọ̀nà abẹ́lẹ̀ kì í sì í jẹ́ orúkọ tun0 nígbà gbogbo.

Tí àdírẹ́sì tí a ta bá farahàn nínú ìwé ìṣẹ̀lẹ̀ ṣùgbọ́n kò sí lórí ìsopọ̀ kankan, ìsopọ̀pọ̀ kò sí. Tí ó bá wà lórí ìsopọ̀ tí àwọn ìbéèrè sì ṣì ń jáde síbòmíràn, ìṣòro ni àwọn ìbéèrè wo tí ń yan ìsopọ̀ yẹn. NetworkManager dns=dnsmasq inú fáìlì /etc/NetworkManager/NetworkManager.conf ń ṣe olùtẹ̀síwájú àdúgbò tí ó ń lo DNS pínpín pẹ̀lú ìmọ̀: àwọn orúkọ inú agbègbè VPN ń lọ sí ẹ̀rọ ìṣètò orúkọ VPN, gbogbo èyí tí ó kù sì ń pa ọ̀nà rẹ̀ tẹ́lẹ̀ mọ́. Ìhùwàsí yìí dà bí àṣìṣe nígbà tí o retí pé gbogbo ìrìnàjò yóò ṣí kúrò; ṣàyẹ̀wò àwọn ètò fún ìsopọ̀ kọ̀ọ̀kan pẹ̀lú nmcli connection show "My VPN", níbi tí ipv4.dns àti ipv4.dns-search ti ń pa àwọn iye tí ó wà lẹ́yìn ohun tí ẹ̀rọ ń ròyìn mọ́, kí o tó pè é ní bàjẹ́. Tí gbogbo ìbéèrè bá gbọ́dọ̀ dé ọ̀dọ̀ ẹ̀rọ ìṣètò orúkọ VPN ní ti gidi, yọ dns=dnsmasq kúrò nínú NetworkManager.conf kí o sì tún NetworkManager bẹ̀rẹ̀, èyí tí ó dá ìṣètò orúkọ padà fún àwọn ètò ìsopọ̀; bí bẹ́ẹ̀ kọ́, pa DNS pínpín mọ́ kí o sì tún àkọsílẹ̀ agbègbè tí a ta ṣe.

Linux: fi àwọn aṣayan fún ẹ̀rọ ìṣètò orúkọ

Àwọn àpò ìpín ń fi hook fún èyí, a sì gbọ́dọ̀ gbà ẹ̀rọ ìbánisọ̀rọ̀ láyè láti ṣe é. Ìṣètò aṣojú lórí ẹ̀rọ tí kò ní systemd-resolved:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Pẹ̀lú systemd-resolved, àkọsílẹ̀ resolv.conf àtijọ́ lè má yí nǹkan pàtàkì kankan padà, nítorí ẹ̀rọ ìṣètò orúkọ stub ń pa ipò mọ́ fún ìsopọ̀ kọ̀ọ̀kan. update-systemd-resolved olùrànlọ́wọ́ ṣàpèjúwe irú hook tí ó ń lò up-restart àti down-pre, èyí tí ó ṣe pàtàkì nígbà tí ìtàkùn bá gbé àkókò tí ó ju ìgbìyànjú ìsopọ̀ kan lọ. Ohunkóhun tí o bá yàn, ẹ̀ka kan gbọ́dọ̀ ni ipò náà. Fífi hook tí kò ní í ṣe pẹ̀lú kún NetworkManager yóò fún ìsopọ̀ kan ní olùkọ̀wé méjì, àbájáde yóò sì gbára lé ìtẹ̀lé kì í ṣe ètò rẹ.

Ìṣẹ̀lẹ̀ kan tún wà níbi tí NetworkManager kò ti kà aṣayan tí a ta sí rárá títí tí a fi àdírẹ́sì olùpèsè sínú ètò IPv4 ti ìsopọ̀, lẹ́yìn náà ni ipò ẹ̀rọ ìṣètò orúkọ fi hàn pé a ń lò ó. Ó yẹ kí a dán a wò kí a tó tún àwọn àkọsílẹ̀ kọ, nítorí ó ń gbé ìṣòro kúrò nínú hook shell lọ sínú profáìlì ìsopọ̀ tí ó ti ń gbé ọ̀nà abẹ́lẹ̀.

Windows àti macOS ń lo àwọn ẹ̀yà tí ó yàtọ̀

Ẹ̀rọ ìbánisọ̀rọ̀ Windows ń ṣètò àwọn olùpèsè DNS ti adapata VPN ní ti gidi, ṣùgbọ́n Windows ṣì ń yan ìtàkùn nípasẹ̀ metric, ó sì ṣì nílò ìparí láti fi orúkọ kúkúrú gbòòrò. Jẹ́ kí ipò adapata dá ọ lójú, kì í ṣe profáìlì:

Get-DnsClientServerAddress -InterfaceAlias "My VPN"
Get-DnsClientNrptPolicy

Tí àdírẹ́sì kò bá sí, ṣètò rẹ̀ pẹ̀lú Set-DnsClientServerAddress -InterfaceAlias "My VPN" -ServerAddresses 10.8.0.1, lẹ́yìn náà fi ìparí kún àwọn ànímọ́ IPv4 ti adapata kí fileserver lè di fileserver.corp.example. Iye SearchList ti gbogbo ẹ̀rọ lábẹ́ Tcpip\Parameters ń ṣe bẹ́ẹ̀ náà. Níbi tí orúkọ gígùn ti ń yanjú tí èyí ìhòhò kò yanjú, ẹ̀rọ ìṣètò orúkọ ti tọ́ tẹ́lẹ̀, àkọsílẹ̀ ìwákiri sì ni ẹ̀bi. Àwọn àtúnṣe, ní ìtẹ̀lé: ta DOMAIN kí ẹ̀rọ ìbánisọ̀rọ̀ kọ́ ìparí, fi ìparí yẹn kún àkọsílẹ̀ ìwákiri adapata tàbí ìsopọ̀, àti gẹ́gẹ́ bí ìgbésẹ̀ ìgbà díẹ̀ fi orúkọ sójú kan ní hosts, tàbí ní LMHOSTS lórí Windows; ìwákiri NetBIOS kì í kọjá olùdarí, nítorí náà ìgbóhùnsáfẹ́fẹ́ tí ó ń wá orúkọ kúkúrú lórí LAN ọ́fíìsì kì í dé ọ̀dọ̀ ẹ̀rọ ìbánisọ̀rọ̀ ọ̀nà abẹ́lẹ̀ rárá.

block-outside-dns block-outside-dns jẹ́ ìhùwàsí ẹ̀rọ ìbánisọ̀rọ̀ Windows, kì í ṣe ìlà profáìlì tí a lè gbé, fífi í sínú profáìlì Linux tàbí macOS kò sì tún un ṣe níbẹ̀. Tí àwọn orúkọ gbangba bá ń ṣiṣẹ́ tí àwọn ti inú sì ń kùnà lórí Windows, fi ìtẹ̀lé adapata lábẹ́ Ètò ìlọsíwájú wé ipconfig /all. Lórí macOS ìtẹ̀lé ẹ̀rọ ìṣètò orúkọ fún iṣẹ́ kọ̀ọ̀kan jẹ́ ti ẹ̀rọ, nítorí náà lo scutil --dns láti wo ẹ̀rọ ìṣètò orúkọ wo ni a ń béèrè fún agbègbè wo, kí o sì ka àtúnṣe profáìlì kan tí a ròyìn gẹ́gẹ́ bí ohun tí ó gbára lé ẹ̀rọ ìbánisọ̀rọ̀ kì í ṣe ohun gbogbogbò.

Ẹ̀rọ àfọwọ́kọ tí ó wà lórí kọ̀m̀pútà kan náà kò jogún nǹkan kankan nínú èyí. Fún àlejò ní àkọsílẹ̀ ẹ̀rọ ìṣètò orúkọ tirẹ̀ fún agbègbè inú, tàbí jẹ́ kí NAT ti hypervisor gbé àwọn ìbéèrè rẹ̀ kọjá nípasẹ̀ olùgbàlejò, èyí tí ó tọ́ nìkan nígbà tí ọ̀nà abẹ́lẹ̀ olùgbàlejò ń ṣiṣẹ́.

Ìtàn ni kòkòrò kẹ́ta. Àwọn olùpèsè DNS tàbí ètò ìparí láti profáìlì àtijọ́ lè yè àwọn ìsopọ̀ tuntun, nítorí náà nígbà tí adapata bá dà bí ẹni tí ó tọ́ tí ìwákiri sì ṣì ń kùnà, fi adapata alààyè wé Get-VpnConnection kí o sì pa àkọsílẹ̀ àtijọ́ rẹ́ tàbí kọ lé e lórí kí o tó fi ọwọ́ kan olùpèsè.

Fi hàn ibi tí ìbéèrè lọ

Ìgbàsílẹ̀ ní àkókò ìwákiri kan ń parí àríyànjiyàn: tcpdump -ni eth0 port 53 ń fi àwọn ìbéèrè hàn lórí ìtàkùn ti ara, èyí tí ó túmọ̀ sí pé wọ́n ń jáde ní òde ọ̀nà abẹ́lẹ̀, a kò sì yí ẹ̀rọ ìṣètò orúkọ padà rárá. dig @10.8.0.1 name.corp.example lẹ́yìn náà yà àwọn ìṣẹ̀lẹ̀ méjì tí ó kù kúrò. Tí ìbéèrè tààrà bá dáhùn, ẹ̀rọ ìṣètò orúkọ ń ṣiṣẹ́, ẹ̀rọ ìbánisọ̀rọ̀ kò sì lò ó; tí àkókò bá tán, ẹ̀rọ ìṣètò orúkọ kò lè dé ọ̀dọ̀ nípasẹ̀ ọ̀nà abẹ́lẹ̀, ìyípadà àdúgbò kankan kò sì ní ràn ọ́ lọ́wọ́.

Tí ẹ̀rọ ìṣètò orúkọ tí a ṣì ń lò bá jẹ́ èyí tí olùpèsè pín, ọ̀nà abẹ́lẹ̀ ń fi ìrìnàjò pa tì, àwọn orúkọ sì wà ní gbangba fún olùpèsè yẹn. Èyí jẹ́ ìbéèrè ìjáde kì í ṣe ti ìṣiṣẹ́, ìgbàsílẹ̀ kan náà sì ń dáhùn: ìbéèrè lórí ìtàkùn ti ara ń lọ sọ́dọ̀ ẹnìkan ní òde ọ̀nà abẹ́lẹ̀.

Ìdèé náà wà nínú firewall lórí olùgbàlejò VPN, èyí tí ó gbọ́dọ̀ gbà UDP àti TCP 53 láti inú àkópọ̀. Pọ́ọ̀tì tí a ti sé dà gẹ́gẹ́ bí ìtà bàjẹ́, bẹ́ẹ̀ sì ni ẹ̀rọ ìṣètò orúkọ tí ń dáhùn láti inú nẹ́tíwọ́kì ọ̀nà abẹ́lẹ̀ nìkan. Tún ìgbàsílẹ̀ ṣe lẹ́yìn gígé ìsopọ̀ àti sísopọ̀ mọ́ ẹ̀ẹ̀kan, nítorí àwọn ètò tí ó farahàn ní ìsopọ̀ àkọ́kọ́ tí wọ́n sì pòórá ní èkejì jẹ́ àṣìṣe ìgbésí-ayé nínú hook, kì í ṣe aṣayan tí ó sọnù.

Pa olówó kan mọ́ kí o sì ṣàyẹ̀wò ní ìtẹ̀lé

Àkọsílẹ̀ tí ń tún DNS adapata kọ gẹ́gẹ́ bí ipò ọ̀nà abẹ́lẹ̀ tí a fojú só, ń ṣe ìlọ́po ètò tí profáìlì ti ń gbé, ó sì ń kùnà ní ìdákẹ́jẹ́ ní ìgbà àkọ́kọ́ tí àfojúsùn bá ṣe àṣìṣe. Yan ètò DNS ti ìsopọ̀ fúnra rẹ̀ tàbí hook kan tí a kọ sílẹ̀, kí o sì kọ èyí tí o yàn kí ẹni tí ó tẹ̀le má ba à fi èkejì kún.

Pa ìyí ká pẹ̀lú àwọn àyẹ̀wò mẹ́rin: àdírẹ́sì tí a ta wà lórí ìsopọ̀ ọ̀nà abẹ́lẹ̀, orúkọ inú ń yanjú gẹ́gẹ́ bí orúkọ tí ó pé, orúkọ kan náà ń yanjú láìsí ìparí, àti àwọn méjèèjì ṣì tọ́ lẹ́yìn sísopọ̀ mọ́ ẹ̀ẹ̀kan. Ìgbàsílẹ̀ kan sọ fún ọ èyí tí ó kùnà nínú mẹ́rìn. Ìwé ìtọ́nisọ́nà OpenVPN 2.6 ń ṣe àkọsílẹ̀ dhcp-option àti àwọn ìtọ́nà àkọsílẹ̀ pẹ̀lú àwọn àkíyèsí pẹpẹ wọn.

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