Сервер эсвэл клиент: хосрол бүхий Pi дээр аль OpenVPN нэгж
Хоёр OpenVPN инстанц нэг Pi-г хуваалцдаг: нэг нь тэнэмэл хэрэглэгчдийг хүлээн авдаг, нөгөө нь дээд үйлчилгээ үзүүлэгчтэй холбогддог. Аль нэгийг нь дахин эхлүүлэхийн өмнө нэгжийн нэр болон хавтасыг уншина уу.
Pi дээр нэгэн зэрэг тэнэмэл хэрэглэгчдийг хүлээн авч, дээд үйлчилгээ үзүүлэгчид хүрдэг хоёр OpenVPN процесс ажилладаг бөгөөд тэд техник хангамжаас өөр бараг юу ч хуваалцдаггүй. Нэг нь орж ирэх туннелийг сонсож, нөгөө нь гадагш залгадаг. Тус бүр өөрийн хавтасыг уншиж, тус бүр өөрийн бүтэлгүйтлийн горимтой. Буруу нэгжийг дахин эхлүүлэх нь клиентийн засвар орны оронд сонсогчийг сандаргадаг хамгийн түгээмэл арга юм.
Нэгжийн нэрийг түүний ачаалж буй хавтастай тааруулаарай
Upstream 2.6 хоёр загвар нэгж нийлүүлдэг: [email protected] ба [email protected]. Серверийн загвар /etc/openvpn/server дотор эхэлж, тэндээс %i.conf-г ачаална. Клиентийн загвар /etc/openvpn/client дотор эхэлнэ. roaming нэртэй инстанц хоёр газарт нэгэн зэрэг байж болно — сервер болон клиент хэлбэрээр, хоёр хамааралгүй тохиргоотой бөгөөд тэдгээрийн хооронд мөрнөөс өөр холбоо байхгүй.
Файлын системээс биш systemd-ээс асуугаарай, учир нь багц бүтээгчид ажлын хавтас эсвэл бинари хүлээн авах аргументыг өөрчилж болох нэмэлт файл нэмдэг.
systemctl list-units --type=service 'openvpn-*@*' systemctl cat [email protected] systemctl show -p WorkingDirectory -p ExecStart [email protected]
Эхний команд бүтээсэн нэгж бүрийг жагсаана, бүтэлгүйтэж ачаалагдсан хэвээр үлдсэнийг орно. Хоёр дахь нь нэгжийн файлыг аливаа дарж бичилттэй хамт хэвлэнэ. Гурав дахь нь асуултыг шийдэх хоёр баримтыг харах хамгийн хурдан арга: процесс эхлэх хавтас болон түүнд өгсөн тохиргооны зам.
Пакетийн чиглэлээр шийдээрэй, интерфэйсийн нэрээр биш
Серверийн инстанц сонсох сокеттой бөгөөд холболтыг хүлээн авдаг. Түүний шифрлэгдсэн тээвэр нь Pi дээр орон нутгийн оролт ба гаралт бөгөөд хэрэглэгчдэд зориулж дамжуулах траффик нь дамжуулах замыг дагаж, өөр дүрмийн багцад захирагддаг. Клиентийн инстанц энэ утгаар сонсогчгүй: тэр харилцагч руу залгадаг тул шифрлэгдсэн тээвэр нь доод давхарга руу чиглэсэн орон нутгийн гаралт юм.
Энэ ялгаа нь дүрэм хаана хамаарахыг хэлнэ. Дамжуулах гинжин доторх интерфэйстэй тохирох дүрэм нь маршрутчилал аль хэдийн сонгосон траффикийг л зөвшөөрдөг; тэр хэзээ ч замыг сонгодоггүй. Тэнэмэл хэрэглэгчийн пакетууд буруу замаар гарч байвал шалгах гинж нь forward, output биш.
Онол бүтээхийн өмнө сокетуудыг хараарай. udp/1194-тэй холбогдсон сервер сонсох сокет харуулна. Клиент үйлчилгээ үзүүлэгчийн хаягтай холбоо харуулж, сонсож байгаа юу ч байхгүй.
ss -lunp | grep openvpn ss -unp state established '( dport = :1194 or sport = :1194 )'
Нэг инстанцын анхдагч зам нөгөөгийн хариултыг барьж чадна
Дээд клиентийн түлхдэг redirect-gateway нь машины бусад бүхэнтэй өрсөлдөх анхдагч зам суулгадаг, үүнд сервер тэнэмэл хэрэглэгчдэд илгээдэг хариултууд багтана. OpenVPN туннель хүртээмжтэй хэвээр байхын тулд өөрийн харилцагч хаягт үл хамаарах зүйл гаргадаг, гэхдээ энэ үл хамаарах зүйл зочид буудлын сүлжээнд сууж буй утасны тухай юу ч хэлэхгүй.
Шинж тэмдэг нь ихэвчлэн тэгш бус. Гар барилт дуусч, клиент холбогдсон гэж мэдээлж, эхний хариу пакетийн дараа траффик үхдэг. Эх сурвалжид суурилсан бодлогын маршрутчилал, эсвэл серверийн инстанц дээр --mark-өөр тавьсан пакетийн тэмдэг нь хоёр урсгалыг тусгаар барина; аль нь ч дангаараа бүрэн дүрмийн багц биш бөгөөд хоёуланд нь сонгосон хүснэгтэдээ хүчинтэй зам хэрэгтэй.
Туннелийн төлөвөөс илүү орон нутгийн шийдвэрийг шалгаарай, учир нь цөм OpenVPN пакетийг харахаас өмнө эх сурвалж болон интерфэйсийг сонгодог.
ip route get 203.0.113.44 ip rule show
Нэг үүргийг дахин эхлүүлж, нөгөө нь амьд үлдсэнийг батал
Хоёр үүрэг нэг доод давхаргаас хамаарах үед дараалал чухал. Хэрэглэгчийн траффикыг дамжуулахаас өмнө дээд зам байх ёстой бол эхлээд клиентийг дахин эхлүүл, зөвхөн сонсогч эсвэл пулыг нь өөрчилж байгаа бол эхлээд серверийг дахин эхэл. Ямар ч тохиолдолд дараа нь хоёр нэгжийг баталгаажуулаарай, учир нь бүтэлгүй дахин эхлэл нөгөө үүргийг хуучирсан төлөвөөр ажиллуулж үлдээж болно.
Өөрчлөлтийн өмнө зогсох нөхцлийг бичээрэй: дээд туннель алдагдах нь тэнэмэл хэрэглэгчдийг хаах уу, эсвэл Pi-ийн өөрийн дээд холбоос руу буцах уу? DNS болон IPv6-д ч тодорхой хариулт хэрэгтэй, учир нь түлхсэн шийдэгч нь түүнийг ашигтай болгосон замаас илүү удаан амьдардаг.
systemctl restart [email protected] systemctl is-active [email protected] journalctl -u [email protected] -n 20 --no-pager
Өөрчлөлтийг гурав нэгэн зэрэг үнэн байх үед л хүлээн авна: шинэ орж ирэх холболт дуусна, дамжуулсан програмууд зориулалтын гаралтаар зорьсон газартаа хүрнэ, хоёр процесс хоёулаа хүлээж буй харилцагчаа мэдээлсээр байна. Гурвын нэг нь бүтэлгүйтвэл та буруу инстанц эсвэл буруу замыг өөрчилсөн бөгөөд дараагийн алхам нь өөр зүйлийг дахин эхлүүлэх биш, нэгжийг дахин унших явдал юм.