dnsmasq 53-р портыг холбож чадахгүй байна: түүнийг эзэмшиж буй сокетыг ол
53-р порт дээрх холболтын алдаа нь сокетын эзэмшлийн асуудал. Сонсогчдыг уншиж, wildcard-ын хүрээг шалгаад, дараа нь аль демон VPN клиентүүдэд хариу өгөхийг шийд.
dnsmasq хаяг аль хэдийн ашиглагдаж байна гэсэн алдаатай зогсдог бөгөөд лог нь буруутан биш портыг нэрлэдэг. VPN мөн ажилладаг машин дээр эхний хариу үйлдэл нь түлхэгдсэн маршрутуудыг буруутгах байдаг ч холболтын алдаа нь аль ч клиент асуулга илгээхээс өмнө тохиолддог. Ямар нэг зүйл сокетыг аль хэдийн эзэмшиж байгаа бөгөөд ажил нь түүнийг тодорхойлох юм. Маршрутын өөрчлөлт портыг чөлөөлж чадахгүй.
Энэ дарааллаар таван алхам: алдааг дахин гарга, сонсогчдыг жагсаа, wildcard-ыг ойлго, ажлыг хуваарил, дараа нь шалга.
Алхам 1: алдааг дахин гаргаж унших
dnsmasq-ыг үйлчилгээний ашигладаг ижил тохиргоотойгоор урд талд ажиллуулбал алдаа нь таамаглах ёстой лог биш таны терминалд гарч ирнэ. Мессеж дэх хаягийн гэр бүл болон локал хаягт анхаар. Тодорхой хаяг руу холбох ба wildcard руу холбох нь өөр өөр эзэмшигчтэй өөр өөр бүтэлгүйтэл юм.
Яг текстийг хадгал. Хаяг ашиглагдаж байна, зөвшөөрлийн алдаа, байхгүй интерфейс бүгд эхлүүлэлтийн бүтэлгүйтэл болж ирдэг бөгөөд тэд гурван өөр засвар руу заадаг.
Алхам 2: эзэмшигчдийг жагсаах
Эхлээд сокетуудыг жагсаа. Эх порт 53 дээрх шүүлтүүр нь харах эрх байвал хоёр тээврийг болон эзэмшиж буй процессыг харуулна:
ss -lntup 'sport = :53'Гаралтыг баганаар унш: тээвэр, локал хаяг, порт, процесс. TCP сонсогч ба UDP сонсогч нь тусдаа сокетууд тул нэгийг нь зогсоох нь нөгөөг нь чөлөөлөхгүй. wildcard хаяг нь бүх интерфейсийг хамардаг, өөрөөр хэлбэл нэг ч мөр нэрээр дурдаагүй ч VPN хаяг аль хэдийн эзлэгдсэн байна. Процессийн нэр нь энэ нь түгээлтийн удирддаг resolver, контейнер эсвэл өмнөх туршилтын ажиллуулж үлдээсэн зүйл эсэхийг хэлнэ.
Алхам 3: wildcard-ын урхи
bind-interfaces сонголт нь dnsmasq wildcard сокет эсвэл тохируулсан интерфейс бүрт нэг сокет холбохыг өөрчилдөг, dnsmasq-ын лавлагаа дүрсэлсний дагуу. Үүнгүйгээр dnsmasq wildcard-ыг холбож, хүсэлтүүдийг интерфейсээр шүүж болох бөгөөд өөр демон wildcard-ыг эзэмшиж байвал тэр даруй бүтэлгүйтнэ. Linux bind-dynamic-ыг нэмдэг бөгөөд энэ нь эхэлсний дараа үүссэн интерфейсүүдийг зохицуулдаг, VPN интерфейс зөвхөн холбогдох үед гарч ирдэг бол энэ нь бодит асуудал юм.
Тиймээс өөр өөр интерфейст тохируулсан мэт харагдах хоёр демон нэгэнт мөргөлддөг. Зөрчил нь санаархалд биш, сокет дээр байна. Холболтын горимыг санаатайгаар сонгож, өөрчлөхөөс өмнө хувилбартаа зориулсан баримтжуулсан зан төлөвийг унш.
Алхам 4: ажлыг хуваарилах
Аль демон VPN клиентүүдэд, аль нь хостод хариу өгөхийг шийд. Туннелийн хаяг дээр сонсож, дээш дамжуулдаг нэг resolver нийтлэг зохион байгуулалт; тус бүр 53-р портыг эзэмшдэг гэж үздэг хоёр resolver бол зохион байгуулалт огт биш.
Дараа нь энэ шийдвэрийг үйлчилгээ бүрийн өөрийн тохиргоонд илэрхийл: сонсох хаяг, интерфейсийн шүүлтүүр, дамжуулалт. Тэдгээрийг үйлчилгээний эзэмшигчээр дамжуулан өөрчил, түгээлтийн нэгж, сүлжээний менежер эсвэл контейнерийн ажиллагааны орчин байсан ч, өөрчлөлт дахин эхлүүлэлтийг давахын тулд.
Алхам 5: сокетыг шалга, дараа нь замыг
Дахин эхлүүлсний дараа клиентийг туршихаас өмнө зорьсон сокетууд байгааг батал. Хэзээ ч холбогдоогүй демоныг маршрутаар аврах боломжгүй бөгөөд зөв холбогдсон сокет руу клиентийн бүтэлгүйтэл нь өөр шийдэлтэй өөр асуудал юм. Дараа нь туннель дээрх клиентээс хүртээмжийг шалга. Зөвхөн дараа нь шаардлагатай нэрс шийдэгдэж байгаа эсэхийг асуух нь зүйтэй.
Тусдаа барих ёстой гурван үр дүн: сокет байна, клиент түүнд хүрнэ, хариулт зөв байна.
Юу хийх ёсгүй
Портыг чөлөөлөхийн тулд юунаас хамааралтайг мэдэхгүйгээр танихгүй resolver-ыг бүү зогсоо, учир нь хост өөрийн хайлтууд ихэвчлэн хамааралтай байдаг. Хоёр дахь демоныг нийтийн сонсох хаяг руу зөөдөг хуучин жорыг бүү хуул, учир нь энэ нь гаж нөлөөгөөр хэн танаас асууж болохыг шийддэг. Алдаа локал байсан үед дамжуулалт бүү нэм.
Хэрэв машиныг удирддаг бол эзэмшлийн шийдвэрийг дараагийн администратор олох газарт бич. Портын зөрчил зургийг дахин бүтээх бүрт буцаж ирдэг.