Дэмжлэгийн хэлхээ «симметрик NAT, VPN энд ажиллахгүй» гэсэн дүгнэлтээр төгсөж, дараа нь клиент шалтгаангүйгээр гурван удаа дахин суулгагдана. Шошго нь хэн ч асуугаагүй асуултад хариулдаг тул хор хөнөөл учруулдаг. Тогтмол сервер рүү гадагш холбогддог клиент эхний пакетыг илгээсэн агшинд зураглал үүсгэдэг бөгөөд хариултыг бараг бүх сүлжээ хэрэгжүүлдэг дүрмийн дагуу буцаахыг зөвшөөрдөг. Төгсгөлийн цэгээс хамааралтай зураглал үнэхээр хүндрүүлдэг зүйл бол хоёр тэнцүү гишүүн нэгэн зэрэг бие биедээ хүрэхийг оролдох явдал бөгөөд энэ нь өөр шалгалт юм.

Нэг шошгын ард хоёр асуулт нуугдаж байна

Эхний асуулт нь энэ сүлжээний ард байгаа хост мэдэгдэж буй нийтийн хаяг, порт руу сесс нээж чадах эсэх юм. Туннелийн клиентийн хувьд энэ нь ердийн тохиолдол бөгөөд хариулт нь бараг үргэлж тийм. Маршрутлагч дотоод эх сурвалжийг бүртгэж, гадаад порт хуваарилж, хариултыг нэвтрүүлдэг, учир нь тэр нь дотроос эхэлсэн сесс хамаардаг.

Хоёр дахь асуулт нь өөр өөр сүлжээний ард байгаа хоёр хост дунд нь сервергүйгээр нийтлэг зам олж, бие биедээ илгээж чадах эсэх юм. Энэ нь сүлжээ бүр тэдгээр гадаад портыг хэрхэн хуваарилахаас хамаардаг бөгөөд зураглалын зан төлөв чухал байдаг цорын ганц газар нь тэр.

Хоёрыг хольсон үед сонгодог буруу оношилгоо үүсдэг: тэнцүү гишүүдийн функц бүтэлгүйтэж, хэн нэгэн NAT төрлийн шалгалт ажиллуулж, хамгийн муу ангиллыг хараад ердийн туннель ч ажиллахгүй гэж дүгнэдэг. Бүтэлгүйтсэн зүйл хэзээ ч туннель байгаагүй.

Зураглал ба шүүлт нь тусдаа шинж чанарууд

RFC-ийн нэр томьёо нийлүүлэгчдийн хэрэглэдэг нэрсээс илүү нарийвчлалтай бөгөөд маргааныг шийддэг тул тасалбарт оруулах нь зүйтэй. Зураглал гэдэг нь гадаад портыг хэрхэн хуваарилахыг хэлнэ. Шүүлт гэдэг нь ямар орж ирж буй пакетыг нэвтрүүлэхийг хэлнэ. Сүлжээ нь нэгд нь хатуу, нөгөөд нь уян хатан байж болох бөгөөд яг тэр хослол нь тэнцүү гишүүдийн протокол даван туулах ёстой зүйл юм.

BehaviourWhat it meansEffect on a direct peer path
Endpoint-independent mappingOne external port for every destinationDiscovery works if the port is advertised
Address-dependent mappingNew port per remote addressWorks only if both sides probe the same pair
Address-and-port-dependentNew port per remote address and portUsually needs a relay

Гурав дахь мөр нь ихэнх гэр ахуйн маршрутлагч, гар утасны операторууд симметрик гэж ойлгодог зүйл юм. Шошго зөвхөн хуваарилалтыг тодорхойлдог гэдгийг анхаарна уу. Ийм зураглал, уян хатан шүүлттэй сүлжээ саяхан хуваарилсан порт руу орж ирж буй пакетыг хүлээн авч чаддаг хэвээр байдаг тул нүх цоолох нь заримд нь амжилттай, заримд нь бүтэлгүйтдэг.

Шүүлт нь өөрийн гурван тохиолдол, тус бүрд нь өөрийн нэртэй. Тасалбарт «симметрик NAT» гэж бичих нь «хаяг, портоос хамааралтай шүүлт» гэсэн утгатай үед дараагийн хүнийг гарын авлагын буруу бүлэгт илгээдэг. Хоёулаа шалгалтад өөрөөр ажилладаг тул алдаа нь зөвхөн онолын биш.

Нэрлэхийн оронд зураглалыг хэмжээрэй

Та өөрийн хянаж буй аль ч UDP үйлчилгээний серверийн талаас хуваарилагдсан портыг шууд ажиглаж болно. Нийтийн хост дээр бичлэг эхлүүлж, клиентээс илгээж, пакет ирсэн эх портыг уншина уу:

sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820

Төгсгөлийн цэгийн мөр нь гурваас хамгийн ашигтай, учир нь WireGuard тэнцүү гишүүн бүрээс хүлээн авсан сүүлийн хаяг, портыг бүртгэдэг. Тэр портыг клиент ашиглаж байна гэж бодож буй порттой харьцуулна уу. Ямар нэг хөрвүүлэлт хийгдэх бүрт тэд ялгаатай байх бөгөөд чухал асуулт нь утга тогтвортой үлдэх эсэх юм.

Хоёр дахь очих порт эсвэл хоёр дахь сервер рүү ажиглалтыг давтаж, дахин харьцуулна уу. Хэрэв гадаад порт очих газраас хамаарч өөрчлөгдвөл зураглал нь хаяг, портоос хамааралтай. Хэрэв ижил хэвээр байвал сүлжээ нэг зураглал өгч байгаа бөгөөд илрүүлэлтэд боломж байна.

STUN-д суурилсан хэрэгслүүд ижил ангиллыг нэг алхамаар мэдээлдэг бөгөөд сүлжээ нийтийн STUN сервер рүү гадагш UDP-г зөвшөөрвөл ашиглаж болно. Зөвшөөрөхгүй бол дээрх бичлэгийн арга ажилласаар байх бөгөөд таны хянаж буй хостоос өөр юу ч шаардахгүй.

Гэмтэлд тохирох засварыг сонгоно уу

Хэрэв бүтэлгүйтэж буй функц нь тэнцүү гишүүдийн функц бол дэмжигдсэн хариултууд нь реле, хоёр тэнцүү гишүүн хүрч чадах уулзалтын үйлчилгээ, эсвэл өөр топологи юм. TURN яг үүний төлөө байдаг бөгөөд өөрийн релетэй бүтээгдэхүүн зарим сүлжээ дайсагнагч байхыг хүлээж байгаагаа хэлдэг.

Хэрэв бүтэлгүйтэж буй функц нь ердийн туннель бол зураглалын зан төлөв таны асуудал биш бөгөөд дээрх зүйлсийн аль нь ч хамаарахгүй. Клиент үнэхээр илгээж байгаа, сервер пакетыг харж байгаа, хариулт буцаж байгаа эсэхийг шалгана уу. Тэр дараалал нь гурван ажиглалт бөгөөд маршрутлагчийн NAT ангиллын талаар юу ч мэдэх шаардлагагүй.

Ажиллахгүй байгаа зүйл бол ямар нэгэн зүйл холбогдох хүртэл локал портын өөрчлөлтийг тараах явдал юм. Клиентийн эх портыг өөрчлөх нь сүлжээ зураглалыг хэрхэн хуваарилахыг өөрчлөхгүй. Тав дахь оролдлогын санамсаргүй амжилт нь худал эерэг бөгөөд сарын турш шийдэл гэж ишлэгдэх болно.

Дүгнэлтийг бус, архитектурыг бичээрэй

Ашигтай тэмдэглэл нь аль протокол, сесс аль чиглэлд эхэлдэг, замд реле байгаа эсэх, утсан дээр юу ажиглагдсаныг хэлдэг. «симметрик NAT, ажиллахгүй» нь хэрэглэх боломжгүй, учир нь энэ нь нэгэн зэрэг туннелийн тухай буруу бөгөөд тэнцүү гишүүний замын тухай мэдээлэлгүй.

Хэрэв шалгасан бол хэмжсэн портын тогтвортой байдал, шүүлтийн зан төлөвийг оруулна уу. Эдгээр хоёр баримт нь өөр хэн нэгэнд бүх мөрдөн шалгалтыг давтахгүйгээр шинэ функц тэр сүлжээнд ажиллах эсэхийг урьдчилан таамаглах боломж олгоно. Тэд мөн тусламжийн хуудас бүр дээр арай өөр утгатай нийлүүлэгчийн ангиллаас илүү сайн хөгшрөдөг.

Эцэст нь, бичихдээ RFC 4787-ийн нэр томьёог гартаа байлгаарай. Нарийн нэр томьёо хэрэглэх нь нэг өгүүлбэрийн зардалтай бөгөөд дараагийн уншигч ижил буруу оношилгоог давтахыг сэргийлдэг, тэмдэглэл бичихийн бүх утга нь энэ юм.

Холбоотой нийтлэлүүд