Бүрэн туннельт OpenVPN: серверийн талд интернэт гарц нэмэх
Анхдагч маршрутыг түлхэх нь бүрэн туннелийн үйлчилгээний зөвхөн хагас юм. Серверт дамжуулалт, хязгаарлагдмал дамжуулалтын дүрэм, сан руу буцах зам мөн хэрэгтэй.
Клиент нэвтрэлт хийж, сангаас хаяг авч, VPN хост дээрх үйлчилгээнд хүрдэг боловч нийтийн хүлээн авагч бүр хугацаа хэтрэлтээр төгсдөг. Гарцгүй туннель ийм харагдана, бөгөөд дөрвөн тусдаа зүйл биелэх хүртэл ийм хэвээр байна. Клиент анхдагч маршрутыг хүлээн авах, сервер дамжуулах, галт хана нэвтрэлтийг зөвшөөрөх, хариултад сан руу буцах зам хэрэгтэй. Дөрвөн алдаа нэг шинжтэй тул оролдлого бүрт нэг зүйлийг өөрчилж, үр дүнг тэмдэглээрэй.
Анхдагч маршрутыг түлхэж, клиент юу суулгасныг баталгаажуул
Серверийн талын мөр богино бөгөөд энэ нь түлхэгдсэн сонголтыг хүлээн авдаг клиентүүдэд л нөлөөлнө. def1 хэлбэр нь одоогийн анхдагчийг устгахын оронд хоёр хагас анхдагч маршрут суулгадаг бөгөөд энэ нь одоогийн холболтыг амьд байлгаж, зэрэг бүх хүлээн авагчийг барьж авна.
push "redirect-gateway def1"
Дахин холбогдсоны дараа профайлд итгэхийн оронд клиентийн чиглүүлэлтийн хүснэгтийг уншина уу. Linux дээр хоёр /1 бичлэг анхдагч маршрутын дэргэд гарч ирнэ, Windows ижил хосыг 0.0.0.0/1 ба 128.0.0.0/1 гэж харуулна. Түлхэгдсэн сонголтыг үл тоомсорлодог эсвэл түүнийгээс татгалзахаар тохируулсан клиент хуучин анхдагчаа хадгалж, интернэт урсгалыг туннель руу хэзээ ч илгээхгүй. Сервер дээр ямар нэгэн зүйл өөрчлөхөөс өмнө энэ асуудлыг шийдээрэй, учир нь серверийн талын ямар ч дүрэм үүнийг нөхөж чадахгүй.
Дамжуулалт нь серверийн тохиргоо, VPN-ийн тохиргоо биш
Чиглүүлэлтэд хүрэхээс өмнө дамжуулалтын тугийг уншина уу. Тэнд тэг байх нь цөм клиентийн багцыг хүлээн авч, цааш дамжуулахаас татгалзана гэсэн үг бөгөөд энэ нь алслагдсан талаас харсан галт хананы блоктой яг адил харагдана. Утгыг системийн тохиргооны хавтсаар тохируулж, дахин ачаалалтаас хойш ч хадгалагдана.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Дараа нь хост өөрөө интернэт гарц руу ажиллах маршруттай эсэхийг баталгаажуул. Серверийн бүрхүүлээс гаргасан хүсэлт нь дээд зам ашиглах боломжтойг баталж, клиентийн багцыг дамжуулах тухай огт юу ч хэлэхгүй тул тэдгээрийг хоёр тусдаа туршилт гэж үзээрэй. Хэрэв сервер хүлээн авагч руу хүрч чадахгүй бол дамжуулалтын тохиргоо хэчнээн их байсан ч тус болохгүй.
Зөвхөн зорьсон нэвтрэлтийг зөвшөөр, өөр юуг ч биш
Дамжуулсан багцууд forward замаар гарна; VPN хост руу шууд хаягласан урсгал input замаар гарна. Эдгээр нь өөр шийдвэр бөгөөд input замыг нээх нь машинаар дамжин өнгөрөхийг зөвшөөрөхгүй. Тэдгээрийг андуурах нь галт хана бүгдийг зөвшөөрч байгаа мэт харагдаж, клиентүүд хугацаа хэтрэлт хүлээсээр байх хамгийн нийтлэг шалтгаан юм.
Хамгийн бага бодлого нь сангаас гарцын интерфейс рүү шинэ холболтыг хүлээн авч, тогтсон урсгалд хамаарах хариултыг хүлээн авна. Ачаалал бүрт давхар дүрэм нэмэхийн оронд таны түгээлт ашигладаг дүрмийн багцын эзэнд байрлуул; давхар дүрмүүд хуримтлагдаж, тоолуурууд утгаа алддаг.
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Бүх гинжийг хүлээн авах төлөвт шилжүүлбэл туршилт давж, галт хана байх шалтгаан арилна. Хамрах хүрээг сан ба гарцын интерфейсээр хязгаарлаж, хамааралгүй дамжуулалтыг хөндөхгүй орхи.
Хариултад явах газар өг
Сангийн хаягууд нь хувийн тул нийтийн сервер тэдэнд хариултыг шууд хүргэж чадахгүй. Эсвэл VPN хост гарцад гарахдаа эх хаягийг хөрвүүлнэ, эсвэл дээд төхөөрөмж сан руу буцах маршрутыг хадгална.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Яг нэг хөрвүүлэлтийн давхарга нэм. Дээр байгаа хоёр дахь NAT эхнийхийг нууж, дараа нь ямар нэгэн зүйл эвдрэхэд хоёр логыг бараг ашиггүй болгоно. Дээд чиглүүлэгч саныг аль хэдийн буцааж чиглүүлж байгаа бол хост дээр хөрвүүлэлт нэмэх нь илүүц бөгөөд буцах зам нь таны биш, тэр чиглүүлэгчийн тохиргооноос хамаарна.
Үүлэн экземпляр нэг хаалга нэмдэг, учир нь зарим платформ эх хаяг нь экземплярынх биш багцыг тэр шалгалтыг сулруулахгүй бол хаядаг. Энэ тохиргоо зочны гадна байдаг бөгөөд орон нутгийн туршилтын машин ажиллаж байхад мартахад амархан.
Үүнийг серверийн бүрхүүлээс биш, клиентээс батал
Тоон IPv4 хүсэлтээр эхэлж, дараа нь нэр хайлт, дараа нь програмаар үргэлжлүүл. ping нь дамжуулалт ба хөрвүүлэлтийг батална;энэ нь нэр шийдвэрлэлтийн тухай юу ч батлахгүй, учир нь DNS сонголтууд клиентийн интеграци тэдгээрийг суулгаж байж хүчин төгөлдөр болно.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
Өөрчлөлт болон буцаах алхмыг явцын дагуу тэмдэглэж, туршилт бүтэлгүйтэхэд гарцын бодлогыг нэг үйлдлээр буцаах боломжтой болго. Энэ жор зөвхөн IPv4-ийг хамарна; байршуулалт бүх урсгалыг зөөж байна гэж мэдэгдэхийн өмнө IPv6-г тусад нь бүртгэ.