په نږدې هر کوچني OpenVPN دروازه کې دوه نوم ستونزې راځي. تړل شوي لیپ ټاپ ته د هغه د سند په نوم نشئ رسېدلی، او د تونل شاته خدمتونه هیڅ نوم نلري. دوی یوه ستونزه ښکاري او مخالف حل ته اړتیا لري، ځکه یوه پته له هرې غونډې سره ځي او بله نه ځي. د هر څه د سمولو دمخه پریکړه وکړئ چې کوم ډول نوم اضافه کوئ.

د دروازې له مخې نه، د نوم له مخې پریکړه وکړئ

ازموینه ساده ده: کله چې کاروونکی بیا وتړل شي، دا پته بدلېږي؟ که هو، نوم باید د VPN غونډې څخه جوړ شي. که نه، دا په یوه ثابته ننوتنه کې دی چې تاسو یې لوستلی او کتلی شئ.

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

د دوی ګډول عادي ناکامي ده. په جوړ شوي فایل کې ټینګ شوی خدمت هغه لومړی ځل ورکېږي چې سکریپټ یې بیا لیکي، او په ثابته ننوتنه کې لیکل شوی کاروونکی هغه چا ته اشاره کوي چې دا پته یې وروستی ځل درلوده. دواړه غلطۍ تر هغه پټې پاتې کېږي چې نوم غلط ماشین ته حل شي. تر هغه وخته ډیبګ کوونکی فکر کوي چې 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= او د ډومېن پراخوالی

dnsmasq د سیسټم hosts فایل پرځای جوړ شوي فایل ته وګرځوئ، او هغه ته یو ډومېن ورکړئ ترڅو لنډ نومونه بشپړ وړ نومونو ته پراخ شي:

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

که مستقیمې پوښتنې ځواب ووایي او غوښتنلیک نه، نو خطا د سیمې نه ده بلکې کاروونکي ته د سپارلو ده. که نوم حل شي او اړیکه بیا هم ناکامه شي، نوم سم دی او بل څه چې باید وکتل شي لار یا فایر وال دی.

دوه ډلې د ترتیباتو ترڅنګ ولیکئ: کوم نومونه جوړېږي، کوم ثابت دي، او هر یو باید له کوم سند سره سمون ولري. بل څوک چې سرور اضافه کوي به لومړنی هغه بڼه کاپي کړي چې ومومي.

اړوندې مقالې