Adlar ünvanlara çevrilir və bu ünvanlar sonradan marşrutlaşdırmaya təsir edən firewall dəstinə düşə bilər, bu da ad əsaslı yönləndirməni proksisiz mümkün edir. İncəlik ondadır ki, dörd komponent düzgün ötürməlidir: həlledici, dəst, yeni axını işarələyən təsnifatçı və onu daşıyan peer. Hər ötürmə fərqli şəkildə uğursuz olur və hər biri öz vaxtını saxlayır.

Dizaynı konfiqurasiya kimi deyil, zəncir kimi qəbul edin. Hər addımda sual budur: qərar hansı komponentə aiddir və onun girişi olmadıqda nə baş verir.

DNS cavabının edə bildikləri və bilmədikləri

dnsmasq cavablardan ünvanları nftables dəstinə köçürə bilər, bu marşrut qərarı deyil, qidalamadır. Həmin seçim, dnsmasq təlimatında sənədləşdirildiyi kimi, ailəni, cədvəli və dəsti göstərir və başındakı 4# yalnız A yazılarını seçir, ona görə v6 təyinatları öz həllini tələb edir. Dəst artıq mövcud olmalıdır, çünki həlledici firewall sahibinin yaratdığı bir şeyə elementlər əlavə edir. O addımda heç nə interfeys, cədvəl və ya peer seçmir.

Müştəri də ad üçün həmin həlledicidən istifadə etməlidir. Öz şifrələnmiş DNS-i olan tətbiq və ya siyasətdən əvvəlki keşlənmiş cavab, dəstdə heç bir qeyd yaratmadan qoşulur.

Dəst girişdir, marşrut deyil

Dəstdəki element uyğunlaşdırma şərtidir. Kiminsə ona baxıb bu paketin yeni axın başlatdığına qərar verməsi və axını tuneldən keçirən siyasəti tətbiq etməsi lazımdır. Linux-da bu adətən işarə qoya bilən marşrut qabiliyyətli çıxış yolu, işarələnmiş paketləri ayrı cədvələ göndərən qayda və həmin cədvəldə WireGuard cihazına istiqamətlənən marşrut deməkdir. Təkcə üzvlük bunların heç birini qurmur.

nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips

Peer unudulan ikinci əhatə yoxlamasını tətbiq edir. WireGuard paketi yalnız icazə verilən ünvanlarında təyinat olan peer üçün şifrələyir, ona görə peer siyahısı həmin prefiksi istisna edəndə interfeysə siyasət marşrutu kifayət etmir. Siyahını menecerin təsadüfən yaratdığı marşrutdan asılı saxlamaq əvəzinə marşrut sahibinin nəzarətində saxlayın.

İşarələr, cədvəllər və peer əhatəsi

İşarələr ortaq ad məkanıdır, ona görə həm dəyər, həm də maska onları istifadə edən hər şeylə razılaşdırılmalıdır. İşarələnmiş trafiki ayrı cədvələ göndərən qayda, həmin cədvəldə uyğun marşrut olmadıqda müəyyən nəticə tələb edir, çünki cavabsız axtarış növbəti qaydaya keçib paketi fiziki interfeysdən çıxara bilər. Ayrı cədvəlin içində blackhole standart marşrutu o səssiz qaçışı görünən atma çevirir. Dizaynın hələ edə bilmədiyi şey heç vaxt dəstə daxil olmayan təyinat üçün bağlanmaqdır.

Tunelin öz xarici paketləri təsnifatçıdan yayınmalıdır. WireGuard alətləri məhz bunun üçün soket işarəsi təqdim edir və ondan istifadə enkapsulyasiyanın özünün qurduğu interfeysə geri yönəldilməsinin qarşısını alır.

Hər ömrü ayrıca sınayın

Üç anbar üç cədvəl üzrə köhnəlir: həlledici keşi, dəst elementləri və izlənən bağlantı. Onları bu sıra ilə sınayın və hər birinin lazım olanda hərəkət edib-etmədiyinə baxın. Aşağıdakı əmrlər heç nəyi dəyişmədən həlledici, dəst, bağlantı cədvəli və siyasət qaydalarını oxuyur.

dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show

Element əlavə edən təzə axtarış qidalamanın işlədiyini sübut edir, cavabından uzun yaşayan köhnə element isə qeydə layiq ömür uyğunsuzluğudur. Bağlantı cədvəlində gözlənilən işarə ilə yeni bağlantının görünməsi təsnifatçının işlədiyini göstərir, köhnə bağlantının ilk işarəsini saxlaması isə səhv deyil, düzgün davranışdır. Qayda siyahısı siyasət axtarışının ümumiyyətlə mövcud olub-olmadığını cavablandırır, bu uyğunlaşıb-uyğunlaşmadığından fərqli sualdır. Dörd çıxışı bu sıra ilə oxuyun və uğursuz ötürmə özünü göstərəcək.

Müəyyən bir adın həmişə bir yol istifadə etməsi tələb olunduqda, DNS ilə qidalanan dəst bunu sübut edə bilməz, çünki ortaq ünvanlar başqa adları da daşıyır. Proksi və ya tətbiq səviyyəli mexanizm bu zəmanət üçün alətdir.

Əlaqəli məqalələr