VPN клиентүүд туннель дотор бие биедээ хүрэхээс сэргийлээрэй
Үйлчилгээнд хүрэх нь маршрут, өөр клиентэд хүрэх нь бодлого. Хамтрагчдын трафикийг шийддэг дамжуулах цэгийг олж, дараа нь хоригийг клиентээс нотлоорой.
Хоёр клиент хоёулаа үсрэх хост нээж чадах боловч бие биеэ нээх ямар ч ажилгүй байж болно. Үйлчилгээнд хүрэх нь дамжуулах шийдвэр, харин хамтрагчдаа хүрэх нь бодлогын шийдвэр бөгөөд ихэнх VPN стек эдгээрийг тусдаа объектод хадгалдаг. Эхнийхэд тохируулсан зүйл нь хоёр дахьд хүчинтэй болохгүй. Тиймээс ажил бол дүрэм нэмэх биш, энэ сервер дээр хамтрагчдын трафикийг шийддэг объектыг олж, хоригийг тэнд бичиж, клиентээс нотлох явдал юм.
Хамтарсан үйлчилгээ рүү хүрэх зам нь хамтрагчдын хоорондын зөвшөөрөл биш
Клиентүүдийн дэд сүлжээг зарлах нь хамтрагчд өөр клиентийн хаяг руу пакетыг утсан дээр хэрхэн тавихыг хэлнэ. Тэр пакет хүрэх эсэхийг дараа нь, түүнийг дамжуулж буй зүйл шийднэ. Linux гарц дээр энэ нь FORWARD гинжин хэлхээ; хэрэглэгчийн орон зайн демон дотор туннелийн өөрийн сессийн хүснэгт юм. Маршрут нь хүртээмжид хариулж, зөвшөөрлийг хөндөхгүй үлдээнэ.
Тиймээс зөвхөн маршрут уншдаг тусгаарлалтын шалгалт юу ч нотлохгүй. /24-ийг клиент бүрт илгээж болох боловч хамтрагчдын хоорондын пакет бүр дамжуулах дэгээнд хаягдана. Аюултай тохиолдол нь эсрэгээрээ: ил тод дүрэм байхгүй, зөвшөөрөх өгөгдмөл байгаа, тусгаарлалт нь хэн ч шалгаагүйгээс л байгаа мэт харагдана.
Шаардлагыг терминал нээхийн өмнө нэг мөрөнд бичээрэй. Үйлчилгээний блок болон үсрэх хостод хүр, клиентийн блокийн дотор өөр юунд ч бүү хүр.
Хамтрагчийн пакетыг үнэхээр хэн дамжуулж байгааг олж мэдээрэй
Серверийн хоёр зан төлөв клиентийн талаас ижил харагдах боловч өөр өөр дүрэм шаарддаг. Нэг бол цөм пакетыг туннелийн интерфейсээс дахин гаргаж дамжуулна, эсвэл демон түүнийг сессүүдийн хооронд хуулж, цөм түүнийг хэзээ ч хардаггүй.
WireGuard эхний бүлэгт багтана: хамтрагчдын хоорондын шилжүүлэгчгүй тул 10.8.0.4-өөс 10.8.0.5 рүү пакет wg0 дээр ирж, дамжуулах дэгээнд хүрч, AllowedIPs хоёр хаягийг хамарсан үед дахин wg0-оос чиглүүлэгдэнэ. OpenVPN нь серверийн тохиргоонд client-to-client тавигдсаны дараа хоёр дахь бүлэг болно, учир нь тэр заавар пакетыг хэрэглэгчийн орон зайд сессүүдийн хооронд дамжуулдаг. Ямар нэгэн зүйл бичихийн өмнө ачаалагдсан тохиргоог тэр зааврын хувьд шалгаарай. Трафикийг хэзээ ч хардаггүй цөмийн дүрмийг ажилладаг дүрмээс ялгах боломжгүй бөгөөд яг ингэж байршуулалт ямар ч тусгаарлалтгүйгээр дуусдаг.
Ачаалагдсан гэж таамаглаж буй файлыг биш, үр дүнтэй тохиргоог уншаарай, учир нь түгээлтийн багцууд өөрсдийн оруулгыг авчирдаг. Хэрэв демон дамжуулж байвал хориг нь түүний өөрийн клиент тус бүрийн удирдлагад байх бөгөөд хост файрвол зөвхөн хост руу хаягласан трафикийг шүүнэ. Хэрэв цөм дамжуулж байвал дамжуулах дэгээ л чухал газар юм.
Маршрутлагдсан ба орчуулагдсан байршуулалтад нэг шалгалт нэмэгдэнэ: алслагдсан клиентийн харж буй эх сурвалж таны хүлээж буй нь биш байж болно. Тэгвэл клиентийн дэд сүлжээнд тохирох дүрэм юунд ч тохирохгүй. Тохирлыг бичихийн өмнө орчуулгаас үлдэх хаягийг тэмдэглэж, NAT хаягийг таамаглахаас илүү интерфейсийн хосыг тохируулахыг эрмэлзээрэй.
Хаяг бүрт бие даан хүчингүй болгох боломжтой таних тэмдэг өгөөрэй
Хоёр төхөөрөмж нэг итгэмжлэл хуваалцмагц тусгаарлалт нуран унана. Тэр таних тэмдэгт уясан дүрэм тэднийг салгаж чадахгүй бөгөөд алдагдсан зөөврийн компьютер хүчингүй болгох нь бүх бүлгийг хүчингүй болгоно. Төхөөрөмж тус бүрийн гэрчилгээ эсвэл хамтрагч тус бүрийн түлхүүр нь хүчингүй болгохыг орон нутгийн, бодлогыг уншигдахуйц байлгана, учир нь хаяг бүр яг нэг хүн эсвэл машинд тохирно. Дизайн үүнийг хийж чадахгүй газарт дүрмийг нарийн гэж дүрслэхийн оронд ашиглалтын гарын авлагад бичээрэй.
Хаягийн хуваарилалт бодлоготой нийцэх ёстой. Үйлчилгээнд блок, клиентүүдэд блок нөөцөлж, клиентийн хаягийг эхэнд ирсэн нь авдаг хүрээнээс биш, өөрийн хянадаг сангаас олгоорой. Хэрэв сервер орчуулж эсвэл гүүр тавьж байвал зураглалын хүснэгтийг тохиргооны хажууд байлгаарай, учир нь дараагийн уншигч дүрмийг дахин гаргахад яг тэр хүснэгт хэрэгтэй.
Хоригийг пакет туннелийг гатлах газарт тавь
WireGuard трафикийг дамжуулдаг гарц дээр хоёр дүрэм энэ тохиолдлыг хамарна: үйлчилгээний блокыг зөвшөөрч, дараа нь клиентийн блокийн үлдсэнийг хая. Интерфейсийн хос нь хаягтай адил чухал, учир нь зөвхөн очих газраар тохируулах нь LAN-аас ирэх трафикийг ч барьдаг. Зөвшөөрөл эхлээд үнэлэгдэхийн тулд тэдгээрийг тэр дарааллаар ачаалаарай.
nftables-ийн хувьд хос нь одоо байгаа inet filter хүснэгтэд орж, эхлээд зөвшөөрөл, дараа нь хаялт. Хоёр тохирол нь хаягийн хамт интерфейсийн хосыг бэхэлнэ.
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.2.0/24 accept
nft add rule inet filter forward iifname "wg0" oifname "wg0" ip saddr 10.8.0.0/24 ip daddr 10.8.0.0/24 drop
Ачаалсны дараа гарах төлөвт итгэхийн оронд гинжийг буцааж уншиж, хоёр дүрэм таны зорьсон дараалалд байгаа эсэхийг баталгаажуулаарай. IPv6 санд тохирох ip6 дүрэм нэмээрэй, эс бөгөөс давхар стект туннель дээр v4 хос нь зөвхөн чимэглэл юм. Хэрэв сервер аль хэдийн зөвшөөрөх дамжуулах бодлоготой бол гинжийг бүхэлд нь солихын оронд хаялтыг нэмээрэй.
OpenVPN дээр client-to-client идэвхтэй үед эдгээр дамжуулах дүрэм хамтрагчдын трафикт хэзээ ч тохирохгүй бөгөөд хориг нь демоны өөрийн удирдлагад байх ёстой. Хост руу хаягласан трафикт цөмийн дүрмийг үлдээгээрэй, гэхдээ тэдгээрийг тусгаарлалтын удирдлага гэж бүү тоо.
Хоригийг серверээс биш, клиентээс нотлоорой
Гарцаас шалгах нь юу ч нотлохгүй, учир нь орон нутагт үүссэн трафик гарах замыг авч, дамжуулах дэгээг хэзээ ч гатлахгүй. Хоёр бодит клиент ашиглаарай: нэг нь үйлчилгээнд хүрэх ёстой, нөгөө нь татгалзагдах ёстой. Эхлээд зөвшөөрлийн тохиолдлыг ажиллуулаарай, ингэснээр эвдэрсэн туннелийг ажиллаж буй бодлого гэж андуурахгүй.
Зөвшөөрөгдсөн клиентээс үйлчилгээ өөрийн порт дээр хариулж байгааг баталгаажуулаарай. Мөн тэр клиентээс хамтрагчийн хаягийг туршаад татгалзалтын оронд чимээгүй хаялт хүлээгээрэй:
ping -c 3 -W 2 10.8.0.5
nc -z -w 2 10.8.0.5 22
nft list chain inet filter forward
iptables -vnL FORWARD
ping -6 -c 3 -W 2 fd00:8::5
Хаягдсан пакет ба офлайн хамтрагч хоёулаа хугацаа дууссан мэт харагддаг тул дүгнэлт хийхийн өмнө тоолуурыг шалгаарай. Хамтрагч тодорхой ажиллаж байх үед хаялтын дүрмийн тоолуур өсч байгааг баталгаажуулаарай. IPv6 дээр давтаарай, энд байхгүй ip6 дүрэм v4 хоригийг үр дүнтэй мэт харагдуулна. Хүлээн авсан ба татгалзсан үр дүнг огноотой нь гарын авлагад тэмдэглээрэй, учир нь дараагийн шилжилт дүрмийг дахин гаргана.