Matatizo mawili ya majina yanajitokeza kwenye karibu kila lango dogo la OpenVPN. Huhitaji kompyuta mpakato iliyounganishwa kwa jina lililo kwenye cheti chake, na huduma zilizo nyuma ya handaki hazina majina kabisa. Yanaonekana kama tatizo moja na yanahitaji matibabu kinyume, kwa sababu anwani moja husogea kwa kila kikao na nyingine haisogei. Amua ni aina gani ya jina unaloongeza kabla ya kuhariri kitu chochote.

Amua kwa kila jina, sio kwa lango

Jaribio ni rahisi: anwani hii hubadilika wakati mteja anapounganishwa tena? Ikiwa ndio, jina lazima lizalishwe kutoka kikao cha VPN. Ikiwa hapana, ni la ingizo tuli ambalo unaweza kulisoma na kulipitia.

Name kindSource of truthWhere it lives
Connected clientThe address OpenVPN just assignedGenerated hosts file, rewritten per session
Service behind the tunnelA fixed address you choseStatic address= drop-in
Anything with a certificate nameThe certificate, not the poolEither, but the name must match the certificate

Kuchanganya yote mawili ndio kushindwa kwa kawaida. Huduma iliyosindikizwa kwenye faili iliyozalishwa hupotea mara ya kwanza skripti inapoiandika, na mteja aliyeandikwa kwenye ingizo tuli huelekeza kwa yule aliyekuwa na anwani hiyo mwisho. Makosa yote mawili hubaki yasioonekana hadi jina litatuliwe kwenye mashine isiyo sahihi. Wakati huo, anayefanya utatuzi huchukulia kuwa DNS imeharibika na sio faili.

Njia inayobadilika: learn-address na dimbwi

OpenVPN inajua ugawaji, kwa hivyo iache ikwambie. Chaguo hizi za seva hufanya ugawaji kudumu na uweze kuandikiwa skripti:

client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist /etc/openvpn/ip-pool 60
script-security 2
learn-address /etc/openvpn/learn-address.sh

learn-address huendesha skripti yako kila anwani inapoongezwa, kusasishwa au kufutwa, na hupitisha operesheni, anwani na jina la kawaida. Skripti ndogo huongeza mstari mmoja kwa kila mteja na kuiondoa wakati wa kufuta:

#!/bin/sh
HOSTS=/etc/openvpn/hosts.lan
case "$1" in
  add|update) echo "$2 $3" >> "$HOSTS" ;;
  delete)     sed -i "/^$2 /d" "$HOSTS" ;;
esac
kill -HUP $(cat /var/run/dnsmasq.pid)

Kwenye kifaa cha tun hoja ya pili ni anwani ya handaki ya mteja, kwa hivyo mstari unaweza kutumika moja kwa moja. Kwenye kifaa cha tap OpenVPN hupitisha anwani ya MAC ya mteja badala yake, kwa sababu sehemu ya tap inaweza kubeba itifaki zingine mbali na IPv4, na wakati huo lazima utafute anwani kwenye faili ya dimbwi kwa jina la kawaida kabla ya kuandika kitu chochote.

Kuwa wazi kuhusu faili iliyozalishwa ni nini: picha ya nani ameunganishwa sasa hivi. Majina hupotea wakati wa kukatika, jambo ambalo ni hasa unalotaka kwa kompyuta mpakato zinazohama kati ya mitandao na hasa usilotaka kwa seva inayokaa imewaka usiku kucha.

Njia tuli: address= na upanuzi wa kikoa

Elekeza dnsmasq kwenye faili iliyozalishwa badala ya faili ya hosts ya mfumo, na ipe kikoa ili majina mafupi yapanuke kuwa majina yaliyohitimu kikamilifu:

domain=corp.example
no-hosts
addn-hosts=/etc/openvpn/hosts.lan
listen-address=127.0.0.1,10.8.0.1
bind-interfaces

domain ikiwa imewekwa, mstari kama 10.8.0.6 alice hujibu kwa alice na alice.corp.example pia. Weka listen-address kwenye lango la handaki na loopback pekee, kwa sababu kitatuzi kilichochapishwa kwa bahati kwenye kiolesura cha LAN ni huduma ambayo hukukusudia kuutoa.

Huduma ambazo hazitoki kwenye dimbwi kamwe hupata maingizo yao. Ziweke kwenye faili ya drop-in tofauti katika saraka ya usanidi ya usambazaji ili sasisho la kifurushi lisiweze kuzifuta:

address=/files.corp.example/10.8.0.20
address=/db.corp.example/10.9.0.5

Kabidhi kitatuzi au hakuna kitakachotokea

Kitatuzi ambacho hakuna anayeuliza hakibadilishi chochote. Seva lazima iitangaze:

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

Wateja wa Windows hutumia chaguo zote mbili wenyewe. Wateja wengi wa Linux hawafanyi: wanahitaji muunganisho wa kitatuzi unaotumika kama ndoano ya update-resolv-conf ya usambazaji au usimamizi wa DNS wa NetworkManager, au kikoa cha utafutaji na seva ya majina iliyowekwa kwa mkono. Angalia kitatuzi halisi cha mteja badala ya kudhani push ilizingatiwa, kwa sababu push iliyopuuzwa inaonekana sawa kabisa na seva isiyojibu.

Thibitisha kwa tabaka tatu

Uliza seva moja kwa moja kwanza, kisha mteja, kisha programu:

dig +short @10.8.0.1 alice.corp.example
getent hosts files.corp.example

Ikiwa maswali ya moja kwa moja hujibu na programu haijibu, kosa liko kwenye kuwasilisha kwa mteja na sio kwenye ukanda. Ikiwa jina linatatuliwa na muunganisho bado unashindikana, jina ni sawa na kitu kinachofuata kuangaliwa ni njia au ngome ya moto.

Andika makundi mawili kando ya usanidi: majina gani yanazalishwa, yapi yamesindikizwa, na cheti kipi kila moja inapaswa kulingana nacho. Mtu anayefuata kuongeza seva atanakili muundo wa kwanza anaokutana nao.

Makala zinazohusiana