ProHoster > Blog > İdarə > Debian 10 noutbukunda SOCKS-da marşrutlaşdırıcının qurulması
Debian 10 noutbukunda SOCKS-da marşrutlaşdırıcının qurulması
Bütün bir il (və ya iki) bu məqaləni dərc etməyi əsas səbəbə görə təxirə saldım - mən artıq Debian ilə çox adi bir noutbukdan SOCKS-da marşrutlaşdırıcının yaradılması prosesini təsvir etdiyim iki məqalə dərc etmişdim.
Bununla belə, o vaxtdan Debian-ın stabil versiyası Buster-ə yeniləndi, kifayət qədər sayda insan mənimlə əlaqə saxlayıb, quraşdırma ilə bağlı kömək istədi, yəni əvvəlki məqalələrim tam deyil. Yaxşı, mən özüm təxmin etdim ki, onlarda göstərilən üsullar SOCKS-də marşrutlaşdırma üçün Linux-un qurulmasının bütün incəliklərini tam açıb göstərmir. Bundan əlavə, onlar Debian Stretch üçün yazılmışdır və Buster-ə yüksəldikdən sonra systemd init sistemində xidmətlərin qarşılıqlı təsirində kiçik dəyişiklikləri müşahidə etdim. Məqalələrin özlərində mən systemd-networkd-dən istifadə etməmişəm, baxmayaraq ki, o, mürəkkəb şəbəkə konfiqurasiyaları üçün ən uyğundur.
Yuxarıdakı dəyişikliklərə əlavə olaraq, konfiqurasiyama aşağıdakı xidmətlər əlavə edildi: hostapd - giriş nöqtəsinin virtuallaşdırılması xidməti, ntp yerli şəbəkə müştərilərinin vaxtını sinxronlaşdırmaq, dnscrypt-proxy DNS vasitəsilə əlaqələri şifrələmək və yerli şəbəkə müştərilərində reklamı deaktiv etmək, həmçinin daha əvvəl qeyd etdiyim kimi, systemd-şəbəkə şəbəkə interfeyslərinin konfiqurasiyası üçün.
Belə bir marşrutlaşdırıcının daxili strukturunun sadə blok diaqramı buradadır.
Beləliklə, bu məqalə silsiləsindəki məqsədlərin nə olduğunu sizə xatırlatmağa icazə verin:
Bütün ƏS bağlantılarını SOCKS-a, eləcə də noutbukla eyni şəbəkədə olan bütün cihazlardan olan bağlantıları yönləndirin.
Mənim vəziyyətimdəki noutbuk tamamilə mobil qalmalıdır. Yəni, iş masası mühitindən istifadə etmək və fiziki bir yerə bağlanmamaq imkanı vermək.
Sonuncu nöqtə yalnız daxili simsiz interfeys vasitəsilə əlaqə və marşrutlaşdırma nəzərdə tutur.
Yaxşı və əlbəttə ki, hərtərəfli bələdçinin yaradılması, eləcə də təvazökar biliklərimə uyğun olaraq müvafiq texnologiyaların təhlili.
Bu məqalədə nələrə toxunulacaq:
git — layihə depolarını yükləyin tun2 corabTCP trafikini SOCKS-ə yönləndirmək üçün tələb olunur və yaratmaq_ap — istifadə edərək virtual giriş nöqtəsinin quraşdırılmasını avtomatlaşdırmaq üçün skript hostapd.
tun2 corab — sistemdə systemd xidmətini qurun və quraşdırın.
systemd-şəbəkə — simsiz və virtual interfeysləri, statik marşrutlaşdırma cədvəllərini və paketlərin yönləndirilməsini konfiqurasiya edin.
yaratmaq_ap — sistemdə systemd xidmətini quraşdırın, virtual giriş nöqtəsini konfiqurasiya edin və işə salın.
Könüllü addımlar:
ntp — virtual giriş nöqtəsi klientlərində vaxtı sinxronlaşdırmaq üçün serveri quraşdırın və konfiqurasiya edin.
dnscrypt-proxy — biz DNS sorğularını şifrələyəcəyik, onları SOCKS-a yönləndirəcəyik və yerli şəbəkə üçün reklam domenlərini deaktiv edəcəyik.
Bütün bunlar nə üçündür?
Bu, yerli şəbəkədə TCP əlaqələrini qorumağın yollarından biridir. Əsas üstünlük ondan ibarətdir ki, orijinal şlüz vasitəsilə onlar üçün statik marşrut qurulmayıbsa, bütün əlaqələr SOCKS-da aparılır. Bu o deməkdir ki, yerli şəbəkədəki fərdi proqramlar və ya müştərilər üçün SOCKS server parametrlərini təyin etməyə ehtiyac yoxdur - onların hamısı standart olaraq SOCKS-a keçir, çünki biz əksini göstərənə qədər o, standart şlüzdür.
Əslində, biz orijinal marşrutlaşdırıcının qarşısında noutbuk kimi ikinci şifrələyici marşrutlaşdırıcı əlavə edirik və noutbukun artıq şifrələnmiş SOCKS sorğuları üçün orijinal marşrutlaşdırıcının İnternet bağlantısından istifadə edirik ki, bu da öz növbəsində LAN müştərilərinin sorğularını yönləndirir və şifrələyir.
Provayderin nöqteyi-nəzərindən biz daim şifrələnmiş trafikə malik bir serverə qoşuluruq.
Müvafiq olaraq, bütün cihazlar laptopun virtual giriş nöqtəsinə qoşulur.
Sistemə tun2socks quraşdırın
Maşınınızın interneti olduğu müddətdə bütün lazımi alətləri endirin.
apt update
apt install git make cmake
badvpn paketini endirin
git clone https://github.com/ambrop72/badvpn
Sisteminizdə bir qovluq görünəcək badvpn. Quraşdırma üçün ayrıca bir qovluq yaradın
NetworkManager-onlayn gözləyin systemd şəbəkənin mövcudluğundan asılı olan digər xidmətləri başlatmağa davam etməzdən əvvəl işləyən şəbəkə bağlantısını gözləyən xidmətdir. systemd-şəbəkə analoquna keçdiyimiz zaman onu söndürürük.
Gəlin onu dərhal aktiv edək:
systemctl enable systemd-networkd-wait-online
Simsiz şəbəkə interfeysini qurun
Simsiz şəbəkə interfeysi üçün systemd-networkd konfiqurasiya faylı yaradın /etc/systemd/network/25-wlp6s0.network.
ad simsiz interfeysinizin adıdır. Bunu əmrlə müəyyən edin ip a.
IPForward - şəbəkə interfeysində paketlərin yönləndirilməsinə imkan verən direktiv.
ünvan simsiz interfeysə IP ünvanının təyin edilməsinə cavabdehdir. Biz onu statik olaraq təyin edirik, çünki ekvivalent direktivlə DHCP=yes, systemd-networkd sistemdə standart şlüz yaradır. Sonra bütün trafik fərqli alt şəbəkədəki gələcək virtual interfeysdən deyil, orijinal şlüzdən keçəcək. Komanda ilə cari standart şlüzü yoxlaya bilərsiniz ip r
Uzaqdan olan SOCKS serveri üçün statik marşrut yaradın
Əgər SOCKS serveriniz yerli deyil, uzaqdırsa, onda siz onun üçün statik marşrut yaratmalısınız. Bunu etmək üçün bir bölmə əlavə edin Route aşağıdakı məzmunla yaratdığınız simsiz interfeys konfiqurasiya faylının sonuna qədər:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway — bu, defolt şlüz və ya orijinal giriş nöqtənizin ünvanıdır.
Destination — SOCKS server ünvanı.
systemd-şəbəkə üçün wpa_supplicant-ı konfiqurasiya edin
systemd-networkd təhlükəsiz giriş nöqtəsinə qoşulmaq üçün wpa_supplicant istifadə edir. Simsiz interfeysi "qaldırmağa" çalışarkən, systemd-networkd xidməti işə salır wpa_supplicant@имяHara имя simsiz interfeysin adıdır. Bu nöqtəyə qədər systemd-networkd-dən istifadə etməmisinizsə, bu xidmət sisteminizdə çox güman ki, yoxdur.
Beləliklə, onu əmrlə yaradın:
systemctl enable wpa_supplicant@wlp6s0
Mən istifadə etdim wlp6s0 simsiz interfeysinin adı kimi. Adınız fərqli ola bilər. Bunu əmrlə tanıya bilərsiniz ip l.
İndi yaradılmış xidmət wpa_supplicant@wlp6s0 simsiz interfeys "qaldırıldıqda" işə salınacaq, lakin o, öz növbəsində faylda giriş nöqtəsinin SSID və parol parametrlərini axtaracaq. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Buna görə də, yardım proqramından istifadə edərək onu yaratmalısınız wpa_passphrase.
hara SSID giriş nöqtənizin adı, parol paroldur və wlp6s0 — simsiz interfeysinizin adı.
tun2socks üçün virtual interfeysi işə salın
Sistemdə yeni virtual interfeysi işə salmaq üçün fayl yaradın/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
ad systemd-networkd işə salındıqda gələcək virtual interfeysə təyin edəcəyi addır.
Uşaq virtual interfeys növüdür. tun2socks xidmətinin adından onun kimi bir interfeysdən istifadə etdiyini təxmin edə bilərsiniz tun.
netdev faylların uzantısıdır systemd-networkd Virtual şəbəkə interfeyslərini işə salmaq üçün istifadə edir. Bu interfeyslər üçün ünvan və digər şəbəkə parametrləri aşağıda göstərilmişdir .şəbəkə-fayllar.
Belə bir fayl yaradın /etc/systemd/network/25-tun2socks.network aşağıdakı məzmunla:
Beləliklə, interfeys tun2 corab ünvanı var 172.16.1.2, və xidmət tun2 corab - 172.16.1.1, yəni virtual interfeysdən bütün əlaqələr üçün şlüzdür.
Virtual giriş nöqtəsi qurun
Asılılıqları quraşdırın:
apt install util-linux procps hostapd iw haveged
Anbarı yükləyin yaratmaq_ap avtomobilinizə:
git clone https://github.com/oblique/create_ap
Maşınınızdakı depo qovluğuna keçin:
cd create_ap
Sistemə quraşdırın:
make install
Sisteminizdə konfiqurasiya görünəcək /etc/create_ap.conf. Əsas redaktə seçimləri bunlardır:
GATEWAY=10.0.0.1 — onu ayrıca qorunan alt şəbəkə etmək daha yaxşıdır.
NO_DNS=1 - söndürün, çünki bu parametr systemd-şəbəkə virtual interfeysi tərəfindən idarə olunacaq.
NO_DNSMASQ=1 - eyni səbəbdən söndürün.
WIFI_IFACE=wlp6s0 — noutbukun simsiz interfeysi.
INTERNET_IFACE=tun2socks - tun2socks üçün yaradılmış virtual interfeys.
SSID=hostapd — virtual giriş nöqtəsinin adı.
PASSPHRASE=12345678 - parol.
Xidməti aktivləşdirməyi unutmayın:
systemctl enable create_ap
systemd-networkd-də DHCP serverini aktivləşdirin
Xidmət create_ap sistemdə virtual interfeysi işə salır ap0. Teorik olaraq, dnsmasq bu interfeysdə dayanır, lakin systemd-networkd daxili DHCP serverini ehtiva edirsə, niyə əlavə xidmətlər quraşdırmalısınız?
Onu aktivləşdirmək üçün virtual nöqtə üçün şəbəkə parametrlərini təyin edəcəyik. Bunu etmək üçün bir fayl yaradın /etc/systemd/network/25-ap0.network aşağıdakı məzmunla:
create_ap xidməti virtual interfeysi işə saldıqdan sonra ap0, systemd-networkd avtomatik olaraq ona IP ünvanı təyin edəcək və DHCP serverini işə salacaq.
Simlər EmitDNS=yes и DNS=10.0.0.1 DNS server parametrlərini giriş nöqtəsinə qoşulmuş cihazlara ötürmək.
Əgər yerli DNS serverindən istifadə etməyi planlaşdırmırsınızsa - mənim vəziyyətimdə bu dnscrypt-proxy-dir - quraşdıra bilərsiniz DNS=10.0.0.1 в DNS=192.168.1.1Hara 192.168.1.1 — orijinal şlüzünüzün ünvanı. Sonra host və yerli şəbəkəniz üçün DNS sorğuları provayderin serverləri vasitəsilə şifrələnməyəcək.
EmitNTP=yes и NTP=192.168.1.1 NTP parametrlərini köçürün.
Eyni şey xəttə də aiddir NTP=10.0.0.1.
NTP serverini quraşdırın və konfiqurasiya edin
Sistemə quraşdırın:
apt install ntp
Konfiqurasiyanı redaktə edin /etc/ntp.conf. Standart hovuzların ünvanlarını şərh edin:
İctimai server ünvanlarını əlavə edin, məsələn, Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Şəbəkənizdəki müştərilərə serverə girişi təmin edin:
restrict 10.0.0.0 mask 255.255.255.0
Şəbəkənizdə yayımı aktivləşdirin:
broadcast 10.0.0.255
Nəhayət, bu serverlərin ünvanlarını statik marşrutlaşdırma cədvəlinə əlavə edin. Bunu etmək üçün simsiz interfeys konfiqurasiya faylını açın /etc/systemd/network/25-wlp6s0.network və bölmənin sonuna əlavə edin Route.
Dnscrypt-proxy bağlantılarını tun2socks vasitəsilə yönləndirmək üçün aşağıdakıları əlavə edin:
force_tcp = true
Konfiqurasiyanı redaktə edin /etc/resolv.conf, bu DNS serverini hosta bildirir.
nameserver 127.0.0.1
nameserver 192.168.1.1
Birinci sətir dnscrypt-proxy-nin istifadəsinə imkan verir, ikinci sətir isə dnscrypt-proxy serverinin mövcud olmadığı halda orijinal şlüzdən istifadə edir.
Yenidən başladıqdan və ya yenidən başladıqdan sonra host və LAN cihazlarını SOCKS-a yönləndirən ikinci giriş nöqtəniz olacaq.
Çıxış belə görünür ip a adi noutbuk:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tun2socks: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 500
link/none
inet 172.16.1.2/24 brd 172.16.1.255 scope global tun2socks
valid_lft forever preferred_lft forever
inet6 fe80::122b:260:6590:1b0e/64 scope link stable-privacy
valid_lft forever preferred_lft forever
3: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether e8:11:32:0e:01:50 brd ff:ff:ff:ff:ff:ff
4: wlp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 4c:ed:de:cb:cf:85 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global wlp6s0
valid_lft forever preferred_lft forever
inet6 fe80::4eed:deff:fecb:cf85/64 scope link
valid_lft forever preferred_lft forever
5: ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 4c:ed:de:cb:cf:86 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/24 brd 10.0.0.255 scope global ap0
valid_lft forever preferred_lft forever
inet6 fe80::4eed:deff:fecb:cf86/64 scope link
valid_lft forever preferred_lft forever
Nəticədə,
Provayder yalnız SOCKS serverinizlə şifrələnmiş əlaqəni görür, yəni onlar heç nə görmürlər.
Və hələ də NTP sorğularınızı görür, bunun qarşısını almaq üçün NTP serverləri üçün statik marşrutları silin. Bununla belə, SOCKS serverinizin NTP protokoluna icazə verdiyi dəqiq deyil.
Crutch Debain 10-da göründü
Konsoldan şəbəkə xidmətini yenidən başlatmağa cəhd etsəniz, xəta ilə uğursuz olacaq. Bu onunla bağlıdır ki, onun virtual interfeys şəklində olan hissəsi tun2socks xidmətinə bağlıdır, yəni ondan istifadə olunur. Şəbəkə xidmətini yenidən başlatmaq üçün əvvəlcə tun2socks xidmətini dayandırmalısınız. Ancaq məncə, sona qədər oxusanız, bu sizin üçün qətiliklə problem deyil!