Bir müştəri digər müştərinin SSH xidmətinə çatmalıdır və hovuzun qalan hissəsi bugünkü kimi təcrid olunmuş qalmalıdır. Cəlbedici açar client-to-client-dır; bərabərlər arası girişi hamı üçün birdən açır və qərarı nüvə yerinə OpenVPN-a verir. Daha dar cavab bu açarı söndürülü saxlayır və serverin öz marşrutlaşdırması ilə firewall-unun dəqiq bir axını daşımasına imkan verir.

Mexanizm qayda mətnindən daha vacibdir, çünki iki yanaşma paketi müxtəlif yerlərə qoyur. Hansını seçdiyinizi bilmək həm heç nə etmirmiş kimi görünən qaydayı, həm də onsuz qoşulan bərabəri izah edir.

client-to-client paketi hara köçürür

client-to-client aktiv ikən server bərabər paketini tunel qurğusundan yenidən bayıra göndərmək əvəzinə daxildə ötürür, ona görə paket heç vaxt nüvənin ötürmə yoluna çatmır. Bu rahatdır və həm də o deməkdir ki, firewall-unuz nəzarət etməli olduğu axını heç vaxt görmür. Seçimi söndürülü buraxın və server paketi eyni interfeysdən yenidən bayıra yönləndirir, bu da onu netfilter-in qarşısına qoyur. Eyni interfeys girir, eyni interfeys çıxır və FORWARD zənciri söz sahibi olur.

Mübadilə aydındır: bir siyasət nöqtəsi qazanırsınız və qısa yolun sizin üçün gördüyü marşrutlaşdırma və ötürmə işini öz üzərinizə götürürsünüz. Bu iş bir axın üçün kiçikdir və əlavə etdiyiniz hər istisna ilə böyüyür. İstisnaları indi sayın, çünki bərabərlər arası siyasət əslində qayda dəstində yaşayır.

Bərabər paketinin həqiqətən getdiyi yol

Tutaq ki, Linux Community OpenVPN 2.6 xidməti, DCO yerinə istifadəçi məkanında TUN emalı, subnet topologiyası, tun0 və müştəri A-nın 10.44.0.21, müştəri B-nin 10.44.0.37 ünvanında olduğu 10.44.0.0/24 hovuzu var. Subnet topologiyasında A-nın aldığı ünvan və şəbəkə maskası hovuzu artıq əhatə edir, ona görə A paketi əlavə itələnmiş marşruta ehtiyac duymadan tunel qurğusuna göndərir. A üzərindəki faktiki marşrutu fərz etmək yerinə yoxlayın.

Serverdə paket B-yə ünvanlanmış halda gəlir; B lokal ünvan olmadığı üçün paket ötürülür. Bunun ümumiyyətlə baş verməsi üçün IPv4 ötürməsi aktiv olmalıdır və marşrut axtarışı paketi tun0 vasitəsilə yenidən bayıra göndərməlidir. Buna görə firewall hər iki tərəfdə eyni interfeysə malik ötürülən bir axın görür və əksər qayda dəstlərinin qaçırdığı təfərrüat budur. Burada mənbə tərcüməsi lazım deyil və A-nın ünvanını toxunulmaz saxlamaq B-nin öz mənbə əsaslı qaydasını tətbiq etməsinə imkan verən şeydir.

Serverdə iki qayda, bu ardıcıllıqla

Üç qayda bütün icazəni daşıyır: ötürmə, cüt istisnası və tunel cütü üçün standart atma. Qəbul qaydası cütü və xidməti adlandırır, ona görə icazə böyüyən hovuzda da qüvvədə qalır. Onu tuneldən-tunelə trafik üçün hər hansı ümumi rəddən əvvəl qoyun, çünki ilk uyğunluq qalib gəlir:

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o tun0 -s 10.44.0.21 -d 10.44.0.37 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -j DROP

Bu əmrlər nümunəvidir və hostunuzun qaydaları daimi saxlamaq üçün istifadə etdiyi mexanizmə aiddir; icra zamanı edilən əlavə növbəti açılışda yox olur. B-nin cavablarının və TCP əl sıxışmasının ikinci, güzgülü qəbul olmadan qayıtmasına imkan verən vəziyyətli qaydadır.

Qayda siyahısı yerinə sayğacları sonradan yoxlayın, çünki heç vaxt uyğunlaşmayan qayda işləyənlə tamamilə eyni görünür. Sayğaclar sıfırda qalırsa, paket düşündüyünüz yolla getmir.

B hələ nəyə icazə verməlidir

SSH xidmətini B işlədir, buna görə tunel ünvanında nəyinsə dinləyib-dinləmədiyinə və öz host firewall-unun mənbəni qəbul edib-etmədiyinə B qərar verir. Serverdəki şəbəkə icazəsi B-dəki heç bir hesab üçün icazə deyil və host açarının yoxlanması ilə istifadəçi autentifikasiyası hər yerdən olduğu kimi qüvvədə qalır.

Əvvəlcə müsbət halı sınaqdan keçirin: A-dan B-nin tunel ünvanına yeni SSH bağlantısı, gözlənilən host açarı ilə qəbul edilməlidir. Sonra başqa bərabər və ya başqa port yoxlayın və rədd edildiyini təsdiqləyin, çünki səssizcə hər şeyə icazə verən icazə vacib olana qədər işləyəndən seçilmir. Bu sınağın hər iki yarısı zəruridir və ikincisi insanların atladığıdır.

Təyin edilmiş ünvanları, hər iki müştəridə faktiki marşrutları və serverdə və B-də dəqiq qaydaları qeyd edin. Şlüzə uğurlu ping və ya serverdə açıq port bunların heç birini sübut etmir, çünki bərabərlər arası ötürmə hələ bloklanmışkən hər ikisi doğru ola bilər. Bu rəqəmləri tunel açıqkən yazın, çünki müştərinin yenidən qoşulduqdan sonra aldığı ünvan başqa ola bilər.

Əlaqəli məqalələr