Wireguard VPN – Problemlərin aradan qaldırılması

Sonra, “TAP” (Orijinal) ad boşluğunda bir teleGuard interfeysi yaradırıq:

Torguards IP yoxlayıcısı

Bütün Linux şəbəkə interfeysləri kimi, Wireguard şəbəkə adları infrastrukturuna inteqrasiya edir. Bu, bir idarəçinin tamamilə fərqli bir şəbəkə alt sisteminə sahib ola biləcəyi və hər birində hansı interfeyslərin yaşadığını seçmək deməkdir.

Wireguard olduqca maraqlı bir şey edir. Bir teleGuard interfeysi yaradıldıqda (IP link əlavə WG0 tipli teleGuard əlavə edin), yaradıldığı ad boşluğunu xatırlayır. “Mən ad boşluğunda yaradıldım a.”Daha sonra, Wireguard yeni ad boşlularına köçürülə bilər (” Mən adlar boşluğuna hərəkət edirəm.”), ancaq hələ də ad boşluğunda yarandığını xatırlayacaq.

Wireguard, şifrəli paketləri göndərmək və qəbul etmək üçün UDP yuvasından istifadə edir. Bu yuva Həmişə ad boşluğunda yaşayır a – Orijinal doğum yerləri boşluğu. Bu, bəzi çox sərin xüsusiyyətlərə imkan verir. Yəni bir ad boşluğunda (a), digərinə (b) -də (b) içərisində teleGuard interfeysini yarada bilərsiniz və ad boşluğundan göndərilən, advace soketi vasitəsilə göndərilən ClearText paketlərinə a.

.)

Bu, çox gözəl imkanlar açır.

Adi konteynerləşmə

Bunun ən açıq istifadəsi konteynerlər (məsələn, locker konteynerləri kimi), yeganə interfeysi kimi bir teleGuard interfeysi verməkdir.

Konteyner # IP Addr 1: MTU 65536 QDISC NOQQueue State State Naməlum Group Standard Qlen 1 Link / 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00 INET 127.0.0.1/8 hostu host lo etibarlı_lft Forever Preferred_lft Forever 17: WG0: MTU 1423 QDISC NOQUE QUEQUEUUE DÖVLƏT QRUPU DETABLE 1 LINK / YOX 192.168.4-ə.33/32 Scope Qlobal WG0 etibarlı_lft Forever Forever_lft Forever 

Burada, mümkün olan şəbəkəyə daxil olmaq üçün yeganə yol WG0, WIREGUARD interfeysi vasitəsilədir.

Bu kimi bir qurumun həyata keçirməyin yolu belədir:

Əvvəlcə “Konteyner” adlı şəbəkə ad boşluğunu yaradırıq:

# IP netns konteyner əlavə edin 

Sonra, “TAP” (Orijinal) ad boşluğunda bir teleGuard interfeysi yaradırıq:

# IP bağlantısı WG0 tipli teleGuard əlavə edin 

Nəhayət, bu interfeysi yeni ad boşluğuna köçürürük:

# IP link dəsti wg0 netns konteyner 

İndi WG0-ni həmişəki kimi konfiqurasiya edə bilərik, yeni adlarınızı göstərməyimizdən başqa:

# IP -n konteyner adtr 192 əlavə et.168.4-ə.33/32 dev wg0 # ip netns exc konteyner wg setconf wg0 / slem / wireguard / wg0.conf # ip -n konteyner link dəsti wg0 up # ip -n konteyner marşrutu standart def dev wg0 

Və Voila, indi “konteyner” üçün hər hansı bir şəbəkə qaynaqlarına daxil olmağın yeganə yolu WIREGUARD interfeysi vasitəsilə olacaqdır.

Qeyd edək ki, Docker istifadəçiləri şəbəkə adları adının əvəzinə bir dok cihazının pidini göstərə biləcəklər, onsuz da konteyner üçün artıq yaradılan şəbəkə adları boşluğundan istifadə etmək üçün:

# IP link dəsti wg0 netns 879 

Bütün trafikinizi yönləndirin

Daha az açıq bir istifadə, lakin olduqca güclü, bu qədər güclü, bu, teleGuard üzərindən bütün adi internet trafikinizi yenidən istiqamətləndirmək üçün bu səciyyəni istifadə etməkdir. Ancaq əvvəlcə bunu etmək üçün köhnə adi həlləri nəzərdən keçirək:

Klassik həllər

Klassik həllər müxtəlif yönləndirmə masa konfiqurasiyasına etibar edir. Bütün bunlar üçün, həqiqi teleGuard son nöqtəsi üçün bəzi açıq bir yol təyin etməliyik. Bu nümunələr üçün, Gəlin Wireguard son nöqtəsinin demo olduğunu güman edək.teleqan.yazma kimi, 163-ə çatan com.172.161.0 . Bundan əlavə, güman edək ki, ümumiyyətlə ETH0 və 192 klassik şlüzdən istifadə edərək İnternetə qoşulduğumuzu güman edək.168.1.1 .

Standart marşrutu əvəz etmək

Ən sadə texnikanın yalnız standart marşrutu əvəz etməkdir, ancaq Wireguard son nöqtəsi üçün açıq bir qayda əlavə etməkdir:

# IP marşrutu del defolt # ip marşrutu standart dev wg0 # ip marşrutu əlavə edin 163 əlavə edin.172.161.192 vasitəsilə 0/32.168.1.1 dev eth0 

Bu işləyir və nisbətən sadədir, lakin DHCP DAEMONLARI VƏ Təəssüf ki, nə etdiyimizi geri qaytarmaq istəyirəm.

Standart marşrutu aşmaq

Beləliklə, standart marşrutu əvəz etmək əvəzinə, onu standart olaraq cəmi əlavə edən, lakin standartdan əvvəl uyğunlaşdıran daha konkret bir qayda ilə ləğv edə bilərik:

# IP marşrutu 0 əlavə edin.0.0.0/1 dev wg0 # IP marşrutu əlavə edin 128.0.0.0/1 dev wg0 # ip marşrutu 163 əlavə edin.172.161.192 vasitəsilə 0/32.168.1.1 dev eth0 

Bu yolla, standart marşrutu düzəltmirik. Bu, eyni zamanda, Eth0 yuxarı və aşağı getdikdə, demo üçün açıq bir yol olduqda bu da çox yaxşı işləyir.teleqan.com unudulacaq, bu əsəbi olan.

Qayda əsaslı marşrutlaşdırma

Bəzi insanlar qayda əsaslı marşrutlaşdırma və çox marşrutlaşdırma masalarından istifadə etməyi üstün tuturlar. Bu işin yolu, wireguard marşrutları və düz mətn marşrutları üçün bir marşrutlaşdırma masası üçün bir marşrutlaşdırma masası yaratırıq və sonra hər biri üçün hansı marşrutinq masasının istifadə edilməsini müəyyən etmək üçün qaydalar əlavə edirik:

# IP qaydası 163-ə əlavə edin.172.161.0 Axtarış Main PreF 30 # IP Qaydası Bütün Axtarma Əlavə et 80 PreF 40 # IP marşrutu Default dev wg0 Cədvəl 80 

İndi marşrutlaşdırma masalarını ayrı saxlaya bildik. Təəssüf ki, bu, açıq-yoxuş budur ki, açıq nöqtə qaydaları hələ də əlavə edilməlidir və interfeys çıxarıldıqda təmizlik yoxdur və daha mürəkkəb marşrutlaşdırma qaydaları artıq çoxaldılmalıdır.

Təkmilləşdirilmiş qayda əsaslı marşrutlaşdırma

Əvvəlki həll, tuneldən azad edilməli olan açıq nöqtə ipini bilən, lakin Wireguard son nöqtələri gəzə bilər, bu qayda o deməkdir ki, bu qayda köhnələ bilər. Xoşbəxtlikdən, tuneldən azad olacaq Wireguardın UDP yuvasından çıxan bütün paketlərdə bir fwmark qoya bilirik:

# WG Set WG0 Fwmark 1234 # IP marşrutu Defolt defe dev wg0 stol 2468 # IP qaydası yoxdur Fwmarket 1234 

Əvvəlcə interfeysdəki fwmarkı qurduq və alternativ bir marşrut cədvəlində standart bir yol təyin etdik. Sonra bu alternativ marşrut cədvəlinə getməli olan paketlərin olduğunu göstəririk. Və nəhayət, yerli şəbəkəyə hələ də daxil olmaq üçün bir rahatlıq xüsusiyyəti əlavə edirik, bununla da, sıfırdan daha çox olan marşrutlaşdırma masasından deyilsə, əsas marşrutlaşdırma masasından istifadə etmək üçün paketlər, əsas marşrutlaşdırma cədvəlindən istifadə etməyə imkan veririk. Defolt olmayan yerli marşrutlar kimi. Bu WG-Tez (8) alət tərəfindən istifadə olunan texnika.

Klassik həllərin yaxşılaşdırılması

WireGuard müəllifləri tunel istifadə hallarını ödəmək üçün “NotoIF” adlı bir xüsusiyyət əlavə etməkdə maraqlıdırlar. Bu, interfeyslərin “bu paketi özümün bir interfeys kimi istifadə edərək marşrutlaşdırma, marşrutlaşdırma döngəsinin qarşısını almaq üçün” deməyə imkan verərdi. Wireguard kimi bir xətt əlavə edə bilərdi .FLOWI4_NOT_OIF = WG0_IDX və istifadəçilərin tunası -Based interfeysləri Setsockopt (FD, So_NOTOIF, Tun0_IDX) kimi gedən yuvalarına bir seçim qura biləcəklər; . UNITALITUSUTY Bu hələ birləşdirilməyib, ancaq LKML ipini burada oxuya bilərsiniz.

Yeni adlar boşluğu

Klassik marşrutlaşdırma masa hacks deyil, şəbəkə ad boşluğundan istifadə edərək bütün İnternet trafikini telequard vasitəsilə marşrutlaşdıra biləcəyimizə görə. Bu işin yolu, İnternetə, Eth0 və ya WLAN0 kimi internetə, bir ad boşluğuna (fiziki “adlandırdığımız” adlandıran interfeysləri hərəkət etdirdiyimiz və sonra “TAP” adları yerində olan bir interfeys olmalıdır.

Əvvəlcə “Fiziki” şəbəkə adları yerini yaradırıq:

# IP netns fiziki əlavə edir 

İndi Eth0 və WLAN0-nı “fiziki” ad boşluğuna köçürürük:

# IP link dəsti Eth0 netns fiziki # iw phy0 set netns adı fiziki 

(Qeyd edək ki, simsiz qurğular IW istifadə edərək və fiziki cihaz phy0 göstərərək köçürülməlidir .)

İndi “Fiziki” ad boşluğunda bu interfeyslər var, “Təşəl” adları sahəsində interfeys yoxdur:

# IP -n Fiziki Link 1: MTU 65536 QDISC Noop Standart Defa Standart Qrup Defolt Qrup Qlen 1 Link / 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00 ETH0: MTU 1500 QDISC PFIFO_Fast Standart Defa Standart Qrup Defolt Qrupu Default Qrupu Qlen 1000 Mode Dorgant Group Default Qlen 1000 Link / Ether 1 Link / Loopback 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00 

İndi bir teleGuard interfeysi birbaşa “fiziki” ad boşluğuna əlavə edirik:

# IP -n Fiziki bağlantı WG0 tipli telguard əlavə edin 

WG0-nin doğum yeri adları artıq “Fiziki” ad boşluğudır . İndi WG0-ni “təşəbbüs” ad boşluğuna köçürə bilərik; Yenə də doğma yerini yuvalar üçün xatırlayacaq.

# IP -n Fiziki link dəsti WG0 netns 1 

“1” adlı ad boşluğu olaraq “1” göstəririk, çünki bu sistemdəki ilk prosesin pididir. İndi “TAP” ad boşluğu WG0 cihazı var:

# IP Link 1: MTU 65536 QDISC NOQQueue State Naməlum Mode Standart Qrup Defolt Qrup Qlen 1 Link / 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: 00: WG0: WG0: WG0: MTU: MTU 1423 qdisc NoQueue State Naməlum Mode Default Group Defolt Qlen 1 Link / Yoxdur 

İndi adi vasitələrdən istifadə edərək fiziki cihazları konfiqurasiya edə bilərik, ancaq “fiziki” şəbəkə adları sahəsində onları işə salırıq:

# ip netns exec fiziki dhcpcd wlan0 # ip netns exec fiziki wpa_supplitant -iwlan0 -c / slc / wpa_supplitant / wpa_supplitant.Conf # IP -n Fiziki Addtr 192 əlavə edin.168.Əqrəb.52/24 dev eth0 

Və sairə. Nəhayət, WG0 interfeysini adi kimi konfiqurasiya edə bilər və onu standart yol kimi təyin edə bilərik:

# WG Setconf WG0 / ETC / ETREGUARD / WG0.conf # ip addtr 10 əlavə et.2-ci.4-ə.5/32 dev wg0 # ip link dəsti wg0 up # ip marşrutu defolt dev wg0 əlavə edin 

Bitmiş! Bu anda sistemdəki bütün adi proseslər paketlərini yalnız WG0 interfeysi və WG0 marşrutlarını ehtiva edən “TAP” ad boşluğu vasitəsilə yola salacaqdır. Bununla birlikdə WG0, “Fiziki” ad boşluğunda yaşayan UDP yuvası var, bu da eth0 və ya WLAN0-dan trafik göndərəcək deməkdir . Normal proseslər, “Fiziki” ad boşluğunun içərisində olan DHCPCD və WPA_Supplicant istisna olmaqla, ETH0 və ya WLAN0-dan xəbərdar olmayacaqdır.

Bəzən, bir veb səhifəni açmaq və ya “fiziki” ad boşluğundan istifadə edərək tez bir şey etmək istəyə bilərsiniz. Məsələn, bəlkə də bütün trafikinizi teleGuard vasitəsilə bütün trafikinizi adi kimi marşrutlaşdırmağı planlaşdırırsınız, ancaq oturduğunuz qəhvə mağazası sizə bir veb saytdan istifadə etməyinizdən əvvəl bir veb saytdan istifadə etməyinizi tələb etməyinizi tələb edir. Beləliklə, “fiziki” interfeysdən istifadə edərək (yerli istifadəçiniz kimi) seçilmiş prosesləri (yerli istifadəçiniz kimi) icra edə bilərsiniz:

$ sudo -e IP Netns Exec Fiziki sudo -e -u \ # $ (id -u) -G \ # $ (id -g) xromu 

Bu əlbəttə ki, gözəl bir funksiyaya çevrilə bilər .Başrc:

physexec ()

İndi “Fiziki” ad boşluğunda xrom açmaq üçün aşağıdakıları yaza bilərsiniz.

$ physexec xrom 

Qəhvə dükan şəbəkəsinə imza atdığınızda, hər zamanki kimi bir brauzer kürü verin və bütün trafikin bütün trafikinizi bildiyini bilinən sörf Wireguard tərəfindən qorunur:

$ xromu 

Nümunə skripti

Aşağıdakı nümunə ssenarisi / usr / local / bin / wgphys kimi saxlanıla bilər və Wgphys Up, Wgphys Down və Wgphys Exec kimi əmrlər üçün istifadə olunur:

Əqrəb!/ bin / bash Set -Ex [[$ UID != 0]] && exc sudo -e "$ (READLINK -F "$ 0")" "$ @" yuxarı () < killall wpa_supplicant dhcpcd || true ip netns add physical ip -n physical link add wgvpn0 type wireguard ip -n physical link set wgvpn0 netns 1 wg setconf wgvpn0 /etc/wireguard/wgvpn0.conf ip addr add 192.168.4.33/32 dev wgvpn0 ip link set eth0 down ip link set wlan0 down ip link set eth0 netns physical iw phy phy0 set netns name physical ip netns exec physical dhcpcd -b eth0 ip netns exec physical dhcpcd -b wlan0 ip netns exec physical wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0 ip link set wgvpn0 up ip route add default dev wgvpn0 >aşağı() < killall wpa_supplicant dhcpcd || true ip -n physical link set eth0 down ip -n physical link set wlan0 down ip -n physical link set eth0 netns 1 ip netns exec physical iw phy phy0 set netns 1 ip link del wgvpn0 ip netns del physical dhcpcd -b eth0 dhcpcd -b wlan0 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0 >icarəsi () < exec ip netns exec physical sudo -E -u \ # $ Sudo_uid: - $ (id -u)> -g \ # $ Sudo_gid: - $ (id -g)> -- "$ @" > əmr ="1 dollar" dəyişmə xasiyyət "$ əmr" içində yuxarı) yuxarı "$ @" ;; aşağı) aşağı "$ @" ;; exec) icarəsi "$ @" ;; *) əks-səda "İstifadəsi: $ 0 yuxarı | aşağı | Exec " > & 2; Çıxış 1 ;; esac 

Yuxarıdakıların kiçik bir demonu:

© Müəllif hüquqları 2015-2022 Jason A. Donenfeld. Bütün hüquqlar qorunur. “Wireguard” və “Wireguard” loqotipi Jason A-nın ticarət nişanlarıdır. Donenfeld.

Bu layihə ZX2C4 və EDGE təhlükəsizliyindən, informasiya təhlükəsizliyi tədqiqat təcrübəsinə həsr olunmuş firma.

Wireguard VPN – Problemlərin aradan qaldırılması

Saat WG əmri ilə açılan bir terminaldan çıxmağın faydalı ola bilər. Budur, iki həmyaşıdları olan bir sistem göstərən bir nümunə çıxışı, bu günə qədər VPN-ni yalnız bir VPN qurduğu yerdir:

Hər 2.0S: WG J-WG: 4 Aug - 2022 Baş səhifə: 47:37 OONT: 10.172.196.106: 51000 icazə verildi IP: 10.Əqrəb.11.2/32 Son əl dəsti: 3 saat, 27 dəqiqə, 35 saniyə əvvəl Transfer: 3.06 KIB, 2, 2.80 KIB göndərdi: Zliz1hlarzqvfxpMyMe2ectxdk611NB7UZLAD4MCPGI = icazə verilən IPS: 10.Əqrəb.11.3/32 

Kernel Debug mesajları

Giriş gəldikdə Wireguard da səssizdir. Əslində bir kernel modulu olan, modulunun şifahi girişini açıq şəkildə aktivləşdirməliyik. Bu aşağıdakı əmrlə aparılır:

$ Echo "Modul Wireguard + P" | sudo tee / sys / kernel / debug / dinamik_debug / nəzarət 

Bu, canlı izləyə bilən kernel jurnalına teleGuard giriş mesajları yazacaq:

$ sudo dmesg -wt 

Girişdən deaktiv etmək üçün bunu işləyin:

$ Echo "Modul Wireguard -P" | sudo tee / sys / kernel / debug / dinamik_debug / nəzarət 

Təyinat ünvanı tələb olunur

Bir ip ping və bu kimi bir səhv geri alsanız:

$ ping 10.Əqrəb.11.2 ping 10.Əqrəb.11.2 (10).Əqrəb.11.2) 56 (84) bayt məlumat. 10-dan.Əqrəb.11.1 icmp_seq = 1 təyinat hostu əlçatmaz ping: sendsg: təyinat ünvanı tələb olunur 

Bu, bu təyinat üçün seçilmiş telguard interfeysi bunun üçün son nöqtəni bilmir, çünki bu baş verir. Başqa sözlə, şifrələnmiş trafikin harada göndəriləcəyini bilmir.

Bunun üçün bir ümumi ssenariya, mükəmməl etibarlı olan son nöqtə konfiqurasiyasının olmadığı və ev sahibi həmin həmyaşıdlara trafik göndərməyə çalışır. Daha əvvəl təsvir etdiyimiz qəhvə dükan ssenarisini götürək.

Laptop VPN-ə qoşulur və həmişəki kimi trafik mübadiləsi aparır. Sonra bir az dayanır (şəxs daha bir fincan almaq üçün getdi). Trafik dayandırılır (Wireguard səssiz, xatırlayır). Ev marşrutlaşdırıcıda Wireguard yenidən başladı, geri qayıtdıqda, dizüstü kompüterə necə çatacağını bilmir, çünki əvvəllər əlaqə qurmadı. Bu, bu zaman ev marşrutlaşdırıcısı qəhvəxanada noutbukun trafik göndərməyə çalışırsa, bu, yuxarıdakı səhvi əldə edəcəkdir.

İndi noutbuk istifadəçisi geri qayıdır və ev şəbəkəsinə bir qədər trafik yaradır (yadda saxla: laptop ev şəbəkəsinin son nöqtəsi dəyəri var). VPN “oyanır”, məlumat mübadiləsi aparılır, əl işləri tamamlandı və indi ev marşrutlaşdırıcı noutbukla əlaqəli son nöqtəni bilir və bu mövzuları olmadan yenidən yeni trafikə başlaya bilər.

Başqa bir ehtimal, həmyaşıdlardan birinin bir nat arxasında durmasıdır və “bağlantısı” diri-diri hesab etmək üçün dövlət firewall üçün kifayət qədər trafik yox idi və bu, Nat xəritəsini atdı. Bu vəziyyətdə, həmyaşıd, Wireguard’ı göndərməyə məcbur edən davamlı konfiqurasiyadan faydalana bilər kafir hər bir neçə saniyə ərzində zond.

Tələb olunan açar mövcud deyil

$ ping 10.Əqrəb.11.1 ping 10.Əqrəb.11.1 (10).Əqrəb.11.1) 56 (84) bayt məlumat. 10-dan.Əqrəb.11.2 icmp_seq = 1 təyinat hostu əlçatmaz ping: sendsg: tələb olunan açar mövcud deyil 

Wireguard interfeysinə nəqliyyatın yönləndirilməsi marşrutu olanda baş verə bilər, ancaq bu interfeys, icazə verilən konfiqurasiyasında sadalanan hədəf ünvanı yoxdur.

WireGuard üçün Kernel’in kernelinin qəbul edilməsinə işarə olsanız, bu da DMESG çıxışında bu kimi bir mesaj görəcəksiniz:

WIREGUARD: HOME0: Heç bir həmyaşıd 10 IPS-ə uyğun gəlməyə icazə vermədi.Əqrəb.11.1