Ismijiet tal-klijenti OpenVPN f’dnsmasq: skript jew entrati statiċi?
L-indirizzi tal-klijenti jinbidlu, l-ismijiet tas-servizzi le. Iġġenera ismijiet tal-klijenti mis-sessjoni VPN, iffissa l-ismijiet tas-servizzi f’fajl drop-in, u mbagħad agħmel il-klijenti jużawh.
Żewġ problemi tal-ismijiet jidhru fuq kważi kull gateway OpenVPN żgħir. Ma tistax tilħaq laptop imqabbad bl-isem fuq iċ-ċertifikat tiegħu, u s-servizzi wara l-mina m’għandhom l-ebda isem. Jidhru bħala problema waħda u jeħtieġu trattamenti opposti, għax indirizz wieħed jiċċaqlaq ma’ kull sessjoni u l-ieħor le. Iddeċiedi liema tip ta’ isem qed iżżid qabel ma teditja xejn.
Iddeċiedi għal kull isem, mhux għal kull gateway
It-test huwa sempliċi: dan l-indirizz jinbidel meta klijent jerġa’ jikkonnettja? Jekk iva, l-isem irid jiġi ġġenerat mis-sessjoni VPN. Jekk le, huwa jappartjeni għal entrata statika li tista’ taqra u tirrevedi.
| Name kind | Source of truth | Where it lives |
|---|---|---|
| Connected client | The address OpenVPN just assigned | Generated hosts file, rewritten per session |
| Service behind the tunnel | A fixed address you chose | Static address= drop-in |
| Anything with a certificate name | The certificate, not the pool | Either, but the name must match the certificate |
It-taħlit tagħhom huwa l-falliment tas-soltu. Servizz iffissat fil-fajl iġġenerat jisparixxi l-ewwel darba li l-iskript jerġa’ jiktbu, u klijent miktub f’entrata statika jindika lil min kellu dak l-indirizz l-aħħar. Iż-żewġ żbalji jibqgħu inviżibbli sakemm isem jiġi riżolt għall-magna ħażina. Sa dakinhar, min qed jiddebja jassumi li d-DNS hija miksura u mhux il-fajl.
It-triq dinamika: learn-address u l-pool
OpenVPN jaf l-assenjazzjoni, mela ħallih jgħidlek. Dawn l-għażliet tas-server jagħmlu l-assenjazzjoni dejjiema u skriptabbli:
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 iħaddem l-iskript tiegħek kull darba li indirizz jiżdied, jiġi aġġornat jew jitħassar, u jgħaddi l-operazzjoni, l-indirizz u l-isem komuni. Skript minimu jżid linja waħda għal kull klijent u jneħħiha meta jitħassar:
#!/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)
Fuq apparat tun it-tieni argument huwa l-indirizz tal-mina tal-klijent, għalhekk il-linja tista’ tintuża direttament. Fuq apparat tap OpenVPN jgħaddi minflok l-indirizz MAC tal-klijent, għax segment tap jista’ jġorr protokolli oħra minbarra IPv4, u mbagħad trid tfittex l-indirizz fil-fajl tal-pool bl-isem komuni qabel ma tikteb xejn.
Kun ċar dwar x’inhu l-fajl iġġenerat: istantanea ta’ min huwa mqabbad bħalissa. L-ismijiet jisparixxu meta tinqata’ l-konnessjoni, li huwa eżattament dak li trid għal laptops li jiċċaqilqu bejn netwerks u eżattament dak li ma tridx għal server li jibqa’ mixgħul il-lejl kollu.
It-triq statika: address= u espansjoni tad-dominju
Idderieġi dnsmasq lejn il-fajl iġġenerat minflok il-fajl hosts tas-sistema, u agħtih dominju biex l-ismijiet qosra jespandu f’ismijiet kwalifikati bis-sħiħ:
domain=corp.example
no-hosts
addn-hosts=/etc/openvpn/hosts.lan
listen-address=127.0.0.1,10.8.0.1
bind-interfaces
Meta domain huwa stabbilit, linja bħal 10.8.0.6 alice twieġeb għal alice u wkoll għal alice.corp.example. Żomm listen-address fuq il-gateway tal-mina u loopback biss, għax resolver ippubblikat b’inċident fuq l-interface LAN huwa servizz li ma kontx beħsiebkom toffru.
Is-servizzi li qatt ma jiġu mill-pool jieħdu l-entrati tagħhom. Poġġihom fi fajl drop-in separat fid-direttorju tal-konfigurazzjoni tad-distribuzzjoni biex aġġornament tal-pakkett ma jistax jikteb fuqhom:
address=/files.corp.example/10.8.0.20
address=/db.corp.example/10.9.0.5
Għaddi r-resolver jew xejn ma jiġri
Resolver li ħadd ma jistaqsih ma jbiddel xejn. Is-server irid iħabbarh:
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DOMAIN corp.example"
Il-klijenti Windows japplikaw iż-żewġ għażliet huma stess. Il-biċċa l-kbira tal-klijenti Linux le: għandhom bżonn integrazzjoni tar-resolver appoġġata bħall-hook update-resolv-conf tad-distribuzzjoni jew l-immaniġġjar tad-DNS ta’ NetworkManager, jew dominju tat-tiftix u nameserver manwali. Iċċekkja r-resolver attwali tal-klijent minflok ma tassumi li l-push ġie rispettat, għax push injorat jidher eżattament bħal server li mhux qed iwieġeb.
Ivverifika fuq tliet saffi
Staqsi lis-server direttament l-ewwel, imbagħad lil klijent, imbagħad lill-applikazzjoni:
dig +short @10.8.0.1 alice.corp.example
getent hosts files.corp.example
Jekk mistoqsijiet diretti jwieġbu u l-applikazzjoni le, il-ħtija hija fil-konsenja lill-klijent u mhux fiż-żona. Jekk l-isem jiġi riżolt u l-konnessjoni xorta tfalli, l-isem huwa tajjeb u l-ħaġa li jmiss li wieħed iħares lejha hija r-rotta jew il-firewall.
Ikteb iż-żewġ kategoriji ħdejn il-konfigurazzjoni: liema ismijiet jiġu ġġenerati, liema huma ffissati u ma’ liema ċertifikat kull wieħed irid jaqbel. Il-persuna li jmiss li żżid server se tikkopja l-ewwel mudell li ssib.