WireGuard гар утасны өгөгдөл дээр ажилладаг ч ижил wifi дээр ажиллахгүй
LAN дотроос маршрутизаторын нийтийн хаяг руу явах хүсэлт гар утасны өгөгдлөөс ирэх хүсэлтээс өөр замаар явдаг. Гаднаас туршиж, дараа нь орон нутгийн зам сонго.
Туннель гар утасны өгөгдөл дээр өргөгдөж, дараа нь гэрт холбогдож байгаа хэвээр үлддэг: ижил профайл, ижил peer түлхүүр, хооронд нь ямар ч тохиргооны өөрчлөлт байхгүй. Ялгаа нь аялалд байна: LAN дотроос маршрутизаторын нийтийн хаяг руу явах хүсэлт интернэтээс ирэх хүсэлттэй ижил аялал биш. Гэрийн гарцуудын ихэнх нь буцах замыг огт хэрэгжүүлдэггүй эсвэл зөвхөн тодорхой протоколуудад хэрэгжүүлдэг. Энэ нь түлхүүрт юу ч өөрчлөгдөөгүй байхад шинж тэмдгийг эвдэрсэн түлхүүр мэт харагдуулдаг. Түлхүүр, порт дамжуулалт эсвэл клиентийн профайлд хүрэхээс өмнө аль зам бүтэлгүйтсэнийг тогтоо.
Нэг хаяг, хоёр өөр зам
Гаднаас пакет маршрутизаторын нийтийн хаяг руу хүрч, порт дамжуулах дүрэм түүнийг дотоод хост дээрх WireGuard сонсогчид өгдөг. Дотроос клиент ижил нийтийн хаягийг дууддаг тул пакет клиентээс гарч, маршрутизаторт хүрч, LAN руу буцааж эргүүлэх ёстой. Энэ эргэлт дээр хоёр зам салдаг, учир нь маршрутизатор нэг интерфейсээс гарч, дахин орж буй урсгалыг хөрвүүлэх ёстой. Олон хэрэгжүүлэлт үүнийг хөрвүүлэхийн оронд хаядаг, тэгэхэд клиент хэзээ ч илгээгдээгүй гар барилтыг хүлээдэг.
Энэ зан үйлийг ихэвчлэн NAT loopback эсвэл hairpinning гэж нэрлэдэг бөгөөд энэ нь WireGuard биш, маршрутизаторт хамаарна; RFC 4787 гарц дэмжиж болох эсвэл болохгүй хөрвүүлэлтийн тохиолдлуудыг тайлбарладаг. WireGuard өөрөө замын талаар санал бодолгүй, учир нь зөвхөн интерфейсдээ хүрсэн пакетуудыг хардаг. Маршрутизатор урсгалыг хаях үед демон хэзээ ч юу ч хүлээж авдаггүй, клиент гар барилтын хугацаа дууссаныг мэдээлж, серверийн лог хоосон үлддэг. Хоосон лог нь пакет хаана зогссоныг харуулсан дохио, сервер унасны баталгаа биш. Дахин суулгах нь юу ч өөрчлөхгүй байгаа шалтгаан ч мөн энэ.
Эсрэг тал нь бас чухал: LAN хаягаас гар барилтын оролдлогыг харуулсан серверийн лог нь пакет ирсэн, зам зөв гэдгийг баталж, мөрдөн шалгалтыг түлхүүр, зөвшөөрөгдсөн хаяг руу шилжүүлдэг. Логоос нотолж буй зүйлийг унш, харна гэж найдаж байсан зүйлийг биш.
Ямар нэг зүйлийг өөрчлөхөөс өмнө дахин үүсгэ
Ижил төхөөрөмж, ижил профайлаар зөвшөөрөгдсөн гадаад сүлжээнээс туршиж, дараа нь юу ч засварлалгүй туршилтыг LAN дотор давт. Гадаа дууссан гар барилт болон дотор төхөөрөмжөөс хэзээ ч гарахгүй клиент нөхцөл байдлыг таамаглахын оронд дахин үүсгэдэг. Хоёр оролдлого ижил профайл хэрэглэх ёстой, эс бөгөөс харьцуулалт юу ч батлахгүй.
Дараа нь төгсгөлийн цэгийн нэр энэ төхөөрөмжид юу болж шийдэгдэхийг хар. Дараах гурван команд нь клиент үнэхээр аль хаягийг дуудсаныг ч харуулна:
wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.netЭхний команд интерфейсийн яг одоо хэрэглэж буй төгсгөлийн цэгийг мэдээлнэ, бусад хоёр нь нэр энэ машин дээр юу болж шийдэгдэхийг харуулна. Сервертэй нэг сүлжээнд сууж нийтийн хаяг дуудаж буй клиент hairpin замыг хэрэглэж байна. LAN хаягийг дуудаж буй клиент тийм биш, тэндхийн доголдол өөр мөрдөн шалгалтад хамаарна. Энэ ялгаа нь дараагийн хэсэг огт хамаарах эсэхийг шийднэ.
Ойрхон серверт хүрэх дэмжигдсэн аргууд
Хамгийн цэвэр зохион байгуулалт бол тэнгэрийн хаяа хуваагдсан хариулт: нийтийн нэр интернэтэд нийтийн хаяг руу, доторх клиентүүдэд серверийн LAN хаяг руу шийдэгддэг. Профайл нэг төгсгөлийн цэгийн нэрийг хадгалж, шийдэгч зам сонгоно. Энэ нь дотоод DNS хариултыг хянахыг шаарддаг; гэрийн маршрутизатор үүнийг ихэвчлэн санал болгодог, байгууллага үүнийг зориуд зохицуулж болно. Энэ хяналтгүй бол үлдэх сонголт нь маршрутизаторын функц эсвэл хоёр дахь профайл.
Маршрутизаторын функц бол тусгал: гарц урсгалыг дотроос гадагш хөрвүүлж, дахин дотогш илгээдэг. Ажилладаг газарт клиентийн өөрчлөлт шаардлагагүй, ажиллахгүй газарт ямар ч клиентийн тохиргоо аврахгүй. Үүнийг маршрутизаторын функцийн жагсаалтыг уншихын оронд дотоод оролдлогын үеэр серверийн логийг ажиглаж турш.
Профайлыг хувийн хаяг руу засах нь оношлогоо, дизайн биш. Энэ нь сервер LAN дээр хариулж байгааг баталж, зөөврийн компьютер гэрээс гарах тэр мөчид мөнөөх профайлыг эвддэг.
| Approach | What it depends on | Where it fails |
|---|---|---|
| Split-horizon name | Control of the internal DNS answer | Clients that resolve through a server outside the zone |
| Router reflection | Gateway support for hairpin translation | Routers that drop the flow silently |
| Private address in the profile | Nothing beyond the LAN | Every network except the one at home |
Профайлыг гэрээс холд ашиглахуйц байлга
Аль замыг сонгосон ч, таних шалгалтыг тайван орхи. Төгсгөлийн цэгийн хаяг нь peer-ийн таних тэмдэг биш бөгөөд хаягийн өөрчлөлт санамсаргүй хариулж буй хамааралгүй нийтийн түлхүүрийг хүлээн авахыг хэзээ ч зөвтгөхгүй. WireGuard түлхүүрээр баталгаажуулдаг тул буруу хост гэнэтийн зүйлд хандах эрх олгохын оронд гар барилтад бүтэлгүйтдэг.
Хэрэв нийтийн хаяг шилжвэл нэрийг ашигтай байлгадаг зүйл бол динамик DNS бөгөөд клиентийн шинэчлэх зан байдал өөрчлөлт хэр хурдан ирэхийг шийднэ. Үүнийг хаяг өөрчлөгдсөний дараа гаднаас турш, учир нь LAN тохиолдол үүнийг баталж чадахгүй. Хуучин хариултыг бичлэгийн амьдрах хугацаанаас хэтэрхий кэшлэдэг шийдэгчээс болгоомжил. Өмнөх хаяг руу хараахан зааж буй нэр яг унасан сервер шиг харагдана.
Профайл аль нэрийг хэрэглэж, хилийн хоёр талд юу болж шийдэгдэхийг бичиж тэмдэглэ. Хэн ч бүртгээгүй маршрутизаторын функцээс хамааралтай профайл бол дараагийн прошивкийн шинэчлэлтийг хүлээж буй дэмжлэгийн дуудлага. Тэмдэглэл нь мөн дараагийн хүнд дотоод доголдол нь мэдэгдэж буй hairpin тохиолдол уу эсвэл шинэ зүйл үү гэдгийг хэлдэг.