dnsmasq හි OpenVPN ග්රාහක නම්: ස්ක්රිප්ට් ද ස්ථිතික සටහන් ද?
ග්රාහක ලිපින වෙනස් වේ, සේවා නම් වෙනස් නොවේ. VPN සැසියෙන් ග්රාහක නම් ජනනය කරන්න, සේවා නම් drop-in ගොනුවක සවි කරන්න, පසුව ග්රාහකයන් එය භාවිතා කරන්නට සලස්වන්න.
සෑම කුඩා OpenVPN ද්වාරයකම නම් ගැටළු දෙකක් මතු වේ. සම්බන්ධිත ලැප්ටොප් එකක් එහි සහතිකයේ ඇති නමින් ළඟා කරගත නොහැක, උමං පිටුපස ඇති සේවාවන්ට නම් කිසිසේත් නැත. ඒවා එක් ගැටළුවක් ලෙස පෙනේ, නමුත් විරුද්ධ ප්රතිකාර අවශ්ය වේ, මන්ද එක් ලිපිනයක් සෑම සැසියකදීම ගමන් කරන අතර අනෙක ගමන් නොකරයි. යමක් සංස්කරණය කිරීමට පෙර ඔබ එකතු කරන්නේ කුමන ආකාරයේ නමක් දැයි තීරණය කරන්න.
ද්වාරය අනුව නොව, නම අනුව තීරණය කරන්න
පරීක්ෂණය සරලයි: ග්රාහකයා නැවත සම්බන්ධ වන විට මෙම ලිපිනය වෙනස් වේ ද? ඔව් නම්, නම VPN සැසියෙන් ජනනය කළ යුතුය. නැත නම්, එය ඔබට කියවා සමාලෝචනය කළ හැකි ස්ථිතික සටහනකට අයත් වේ.
| 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 |
ඒවා මිශ්ර කිරීම සුලබ අසාර්ථකත්වයයි. ජනනය කළ ගොනුවේ සවි කළ සේවාවක් ස්ක්රිප්ට් එය පළමු වරට නැවත ලියන විට අතුරුදන් වේ, ස්ථිතික සටහනක ලියූ ග්රාහකයා එම ලිපිනය අවසන් වරට තිබූ අය දෙසට යොමු වේ. දෙකම නමක් වැරදි යන්ත්රයකට විසඳෙන තෙක් නොපෙනී පවතී. එතෙක් නිදොස් කරන්නා DNS කැඩී ඇතැයි සිතයි, ගොනුව නොවේ.
ගතික මාර්ගය: learn-address සහ තටාකය
OpenVPN පැවරුම දනී, එබැවින් එය ඔබට කියන්නට සලස්වන්න. මෙම සේවාදායක විකල්ප පැවරුම කල් පවතින සහ ස්ක්රිප්ට් කළ හැකි එකක් කරයි:
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 ලිපිනයක් එකතු කරන, යාවත්කාලීන කරන හෝ මකන සෑම අවස්ථාවකම ඔබේ ස්ක්රිප්ටය ධාවනය කරයි, සහ ක්රියාව, ලිපිනය සහ පොදු නම ලබා දෙයි. අවම ස්ක්රිප්ටයක් සෑම ග්රාහකයකුටම එක් පේළියක් එකතු කර මැකීමේදී එය ඉවත් කරයි:
#!/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)
tun උපාංගයක දෙවන තර්කය ග්රාහකයාගේ උමං ලිපිනය වේ, එබැවින් පේළිය සෘජුවම භාවිතා කළ හැක. tap උපාංගයක OpenVPN ඒ වෙනුවට ග්රාහකයාගේ MAC ලිපිනය ලබා දෙයි, මන්ද tap කොටසකට IPv4 හැර වෙනත් ප්රොටොකෝල ද ගෙන යා හැකි බැවිනි, එවිට යමක් ලිවීමට පෙර පොදු නමින් තටාක ගොනුවේ ලිපිනය සොයා ගත යුතුය.
ජනනය කළ ගොනුව කුමක් දැයි පැහැදිලි වන්න: දැන් සම්බන්ධිත කවුරුන් ද යන්නේ ඡායාරූපයකි. සම්බන්ධතාව බිඳෙන විට නම් අතුරුදන් වේ, එය ජාල අතර ගමන් කරන ලැප්ටොප් සඳහා ඔබට අවශ්ය දෙයම වන අතර රාත්රිය පුරා ක්රියාත්මක සේවාදායකයකට ඔබට අවශ්ය නොවන දෙයම වේ.
ස්ථිතික මාර්ගය: address= සහ වසම් විස්තරණය
පද්ධතියේ hosts ගොනුව වෙනුවට dnsmasq ජනනය කළ ගොනුව වෙත යොමු කරන්න, සහ කෙටි නම් සම්පූර්ණ සුදුසුකම් ලත් නම් බවට විස්තරණය වන පරිදි එයට වසමක් දෙන්න:
domain=corp.example
no-hosts
addn-hosts=/etc/openvpn/hosts.lan
listen-address=127.0.0.1,10.8.0.1
bind-interfaces
domain සකසා ඇති විට, 10.8.0.6 alice වැනි පේළියක් alice සහ alice.corp.example යන දෙකටම පිළිතුරු දෙයි. listen-address උමං ද්වාරයට සහ loopback වෙත පමණක් සීමා කරන්න, මන්ද අහම්බෙන් LAN අතුරුමුහුණතේ පළ කරන ලද විසඳුම්කරුවක් යනු ඔබ ඉදිරිපත් කිරීමට අදහස් නොකළ සේවාවකි.
තටාකයෙන් කිසිදා නොඑන සේවාවන්ට තමන්ගේම සටහන් ලැබේ. ඒවා බෙදාහැරීමේ වින්යාස නාමාවලියේ වෙනම drop-in ගොනුවක තබන්න, එවිට පැකේජ උත්ශ්රේණි කිරීමකට ඒවා උඩින් ලිවීමට නොහැකි වේ:
address=/files.corp.example/10.8.0.20
address=/db.corp.example/10.9.0.5
විසඳුම්කරු භාර දෙන්න, නැතිනම් කිසිවක් සිදු නොවේ
කිසිවෙකු නොඅසන විසඳුම්කරුවක් කිසිවක් වෙනස් නොකරයි. සේවාදායකය එය ප්රකාශ කළ යුතුය:
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DOMAIN corp.example"
Windows ග්රාහකයන් විකල්ප දෙකම තමන්ම යොදයි. බොහෝ Linux ග්රාහකයන් එසේ නොකරයි: ඔවුන්ට සහාය දක්වන විසඳුම්කරු ඒකාබද්ධතාවයක් අවශ්ය වේ, උදාහරණයක් ලෙස බෙදාහැරීමේ update-resolv-conf කොක්ක හෝ NetworkManager හි DNS හැසිරවීම, නැතහොත් අතින් සකසන ලද සෙවුම් වසමක් සහ නාම සේවාදායකයක්. push ගරු කරන ලදැයි උපකල්පනය කරනවාට වඩා ග්රාහකයාගේ සැබෑ විසඳුම්කරු පරීක්ෂා කරන්න, මන්ද නොසලකා හරින ලද push පිළිතුරු නොදෙන සේවාදායකයක් මෙන්ම පෙනේ.
ස්ථර තුනකින් සත්යාපනය කරන්න
මුලින්ම සේවාදායකයාගෙන් සෘජුවම අසන්න, පසුව ග්රාහකයකුගෙන්, පසුව යෙදුමෙන්:
dig +short @10.8.0.1 alice.corp.example
getent hosts files.corp.example
සෘජු විමසුම් පිළිතුරු දෙන නමුත් යෙදුම නොදෙන්නේ නම්, වරද කලාපයේ නොව ග්රාහකයාට භාර දීමේ ය. නම විසඳී නමුත් සම්බන්ධතාව තවමත් අසාර්ථක නම්, නම හොඳයි සහ ඊළඟට බැලිය යුත්තේ මාර්ගය හෝ ගිනිපවුරයි.
කාණ්ඩ දෙක වින්යාසය අසල ලියා තබන්න: කුමන නම් ජනනය වේ ද, කුමන ඒවා සවි කර ඇත් ද, සහ එක් එක් ඒවා ගැලපිය යුත්තේ කුමන සහතිකයකට ද. ඊළඟට සේවාදායකයක් එකතු කරන පුද්ගලයා පළමුව හමුවන රටාව පිටපත් කරනු ඇත.