PĂ«r njĂ« vit (apo dy) e kam shtyrĂ« publikimin e kĂ«tij artikulli pĂ«r njĂ« arsye kryesore â unĂ« kam botuar tashmĂ« dy artikuj, nĂ« tĂ« cilat kam pĂ«rshkruar procesin e krijimit tĂ« njĂ« router SOCKS nga njĂ« laptop i zakonshĂ«m me Debian.
Megjithatë, që nga ajo kohë, versioni stabil i Debian është përditësuar në Buster, dhe kam marrë një numër të mjaftueshëm kërkesash në mesazhe private për ndihmë me konfigurimin, çka do të thotë se artikujt e mi të mëparshëm nuk janë plotësisht të mjaftueshëm. E dija vetë që metodat e përshkruara atje nuk e zbulojnë plotësisht çdo nuancë të konfigurimit të Linux për rrugëzim në SOCKS. Për më tepër, ato janë shkruar për Debian Stretch, dhe pas përditësimit në Buster, në sistemin e inicializimit systemd, vura re disa ndryshime të vogla në bashkëveprimin e shërbimeve. Po ashtu, në këta artikuj nuk kam përdorur systemd-networkd, edhe pse është më e përshtatshme për konfigurime komplekse rrjetesh.
PĂ«rveç ndryshimeve tĂ« pĂ«rmendura mĂ« sipĂ«r, nĂ« konfigurimin tim janĂ« shtuar shĂ«rbime tĂ« tilla si hostapd â njĂ« shĂ«rbim pĂ«r virtualizimin e pikave tĂ« aksesit, ntp pĂ«r sinkronizimin e kohĂ«s sĂ« klientĂ«ve nĂ« rrjetin lokal, dnscrypt-proxy pĂ«r enkriptimin e lidhjeve pĂ«r protokollin DNS dhe pĂ«r çaktivizimin e reklamave nĂ« klientĂ«t e rrjetit lokal, siç e pĂ«rmenda mĂ« parĂ«, systemd-networkd pĂ«r konfigurimin e ndĂ«rfaqeve rrjeti.
Ja një diagram i thjeshtë të brendshëm të kësaj ruter.

Pra, do t'ju kujtoj se çfarë qëllimesh ndjek ky cikël artikujsh:
- Të ruterizohet në SOCKS të gjitha lidhjet e OS-së, si dhe lidhjet e të gjitha pajisjeve që përfshihen në të njëjtin rrjet me laptopin.
- Laptopi në rastin tim duhet të mbetet plotësisht mobil. Kështu, ai duhet të ofrojë mundësinë për të përdorur ambientin e punës dhe të mos jetë i lidhur me një vendndodhje fizike.
- Pika e fundit nënkupton lidhjen dhe ruterizimin vetëm nëpërmjet ndërfaqes wireless të integruar.
- Sigurisht, gjithashtu krijimi i një udhëzuesi të plotë dhe shqyrtimi i teknologjive përkatëse brenda njohurive të mia modeste.
Ajo që do të shqyrtohet në këtë artikull:
- git â do tĂ« shkarkojmĂ« repo tĂ« projekteve tun2socks, i nevojshĂ«m pĂ«r ruterizimin e trafikut TCP nĂ« SOCKS, dhe create_ap â skript pĂ«r automatizimin e konfigurimit tĂ« pikĂ«s virtuale tĂ« qasjes me hostapd.
- tun2socks â do tĂ« ndĂ«rtojmĂ« dhe installojmĂ« shĂ«rbimin systemd nĂ« sistem.
- systemd-networkd â do tĂ« konfigurojmĂ« ndĂ«rfaqet pa tel dhe virtuale, tabelat e rrugĂ«zimit statik dhe rikthimin e paketave.
- create_ap â do tĂ« instalojmĂ« shĂ«rbimin systemd nĂ« sistem, do ta konfigurojmĂ« dhe do ta nisnim pikĂ«n virtuale tĂ« qasjes.
Hapat e opsional:
- ntp â do tĂ« instalojmĂ« dhe konfigurojmĂ« njĂ« server pĂ«r sinkronizimin e kohĂ«s tek klientĂ«t e pikĂ«s virtuale tĂ« qasjes.
- dnscrypt-proxy â do tĂ« enkriptojmĂ« kĂ«rkesat DNS, do t'i rrugĂ«zojmĂ« ato nĂ« SOCKS dhe do tĂ« shkĂ«putim domenet reklamues pĂ«r rrjetin lokal.
Pse e gjithë kjo?
Ky Ă«shtĂ« njĂ« nga mĂ«nyrat pĂ«r tĂ« organizuar mbrojtjen e lidhjeve TCP nĂ« rrjetin lokal. Avantazhi kryesor Ă«shtĂ« se tĂ« gjitha lidhjet kalojnĂ« nĂ« SOCKS, pĂ«rveç nĂ«se Ă«shtĂ« ndĂ«rtuar njĂ« rrugĂ« statike pĂ«rmes kalimit origjinal. Kjo do tĂ« thotĂ« se nuk Ă«shtĂ« e nevojshme tĂ« shkruhen cilĂ«simet e shĂ«rbimit SOCKS pĂ«r asnjĂ« program tĂ« veçantĂ«, as pĂ«r klientĂ«t nĂ« rrjetin lokal â tĂ« gjithĂ« kalojnĂ« nĂ« SOCKS siç Ă«shtĂ« parazgjedhur, ndĂ«rsa ai mbetet kalimi i parazgjedhur derisa tĂ« pĂ«rcaktojmĂ« ndryshe.
Në thelb ne shtojmë një ruter të dytë të enkriptuar si një laptop para ruterit origjinal dhe përdorim lidhjen e internetit të ruterit origjinal për kërkesat SOCKS të enkriptuara tashmë nga laptopi, i cili, nga ana e tij, riorienton dhe enkripton kërkesat e klientëve në rrjetin lokal.
Nga pikëpamja e ofruesit, ne jemi vazhdimisht të lidhur me një server me trafiku të enkriptuar.
Përkatësisht, të gjitha pajisjet lidhen me një pikë qasje virtuale të laptopit.
Instaloni në sistem tun2socks
Nëse keni internet në makinën tuaj, shkarkoni të gjitha mjetet e nevojshme.
apt updateapt install git make cmakeShkarkoni paketën badvpn
git clone https://github.com/ambrop72/badvpn
Në sistemin tuaj do të ketë një dosje badvpn. Krijoni një dosje të veçantë për ndërtimin
mkdir badvpn-build
Shkoni në të
cd badvpn-build
Ndërtoni tun2socks
cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1
Instaloni në sistem
make install
- Parametri
-DBUILD_NOTHING_BY_DEFAULT=1çon nĂ« ndalimin e ndĂ«rtimit tĂ« tĂ« gjithĂ« komponentĂ«ve tĂ« repositorit badvpn. - â
DBUILD_TUN2SOCKS=1aktivizon ndërtimin e komponentit tun2socks. make installdo të instalohet binari tun2socks në sistemin tuaj në adresën/usr/local/bin/badvpn-tun2socks.
Instaloni shërbimin tun2socks në systemd
Krijoni një skedar /etc/systemd/system/tun2socks.service me përmbajtjen e mëposhtme:
[Unit]
Description=SOCKS TCP Relay
[Service]
ExecStart=/usr/local/bin/badvpn-tun2socks --tundev tun2socks --netif-ipaddr 172.16.1.1 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:9050
[Install]
WantedBy=multi-user.target
--tundevâ merr emrin e ndĂ«rfaqes virtuale qĂ« ne e inicializojmĂ« me ndihmĂ«n e systemd-networkd.--netif-ipaddrâ adresa rrjetit 'router'-it tun2socks, me tĂ« cilin lidhim ndĂ«rfaqen virtuale. E rekomanduar Ă«shtĂ« qĂ« tĂ« krijohet njĂ« .--socks-server-addrâ merr soket (adresa:porte serverit SOCKS).
Nëse serveri juaj SOCKS kërkon autentifikim, mund të specifikoni parametrat --username dhe --password.
Më pas regjistroni shërbimin
systemctl daemon-reloadDhe aktivizoni
systemctl enable tun2socksPara se të ndizni shërbimin, do t'ia sigurojmë atij një ndërfaqe rrjeti virtuale.
Kalojmë në systemd-networkd
Aktivizojmë systemd-networkd:
systemctl enable systemd-networkdĂaktivizoni shĂ«rbimet aktuale tĂ« rrjetit.
systemctl disable networking NetworkManager NetworkManager-wait-online- NetworkManager-wait-online â Ă«shtĂ« njĂ« shĂ«rbim qĂ« pret qĂ« tĂ« ketĂ« njĂ« lidhje rrjeti funksionale para se systemd tĂ« vazhdojĂ« tĂ« nisĂ« shĂ«rbime tĂ« tjera qĂ« varen nga disponueshmĂ«ria e rrjetit. Ne e çaktivizojmĂ« atĂ«, pasi do tĂ« kalojmĂ« nĂ« njĂ« pĂ«rgjigjĂ«se systemd-networkd.
Le të aktivizohemi menjëherë:
systemctl enable systemd-networkd-wait-onlineKonfiguroni ndërfaqen e rrjetit wireless
Krijoni një skedar konfigurimi systemd-networkd për ndërfaqen e rrjetit të wireless /etc/systemd/network/25-wlp6s0.network.
[Match]
Name=wlp6s0
[Network]
Address=192.168.1.2/24
IPForward=yes
- Emri â Ă«shtĂ« emri i ndĂ«rfaqes tuaj tĂ« rrjetit wireless. Identifikoni atĂ« me komandĂ«n
ip a. - IPForward â Ă«shtĂ« direktiva qĂ« aktivizon ridrejtime tĂ« paketave nĂ« ndĂ«rfaqen e rrjetit.
- Adresa merret me caktimin e adresës IP për ndërfaqen wireless. E caktuam atë statikisht sepse me direktivën ekvivalente
DHCP=yes, systemd-networkd krijon një portë të paracaktuar në sistem. Atëherë gjithë trafiku do të kalojë përmes portës origjinale, jo përmes ndërfaqes virtuale të ardhshme në një subnet të ndryshme. Mund ta kontrolloni portën aktuale të paracaktuar me komandënip r
Krijoni një rrugë statike për serverin tuaj SOCKS
Nëse serveri juaj SOCKS nuk është lokal, por i largët, duhet të krijoni një rrugë statike për të. Për këtë, shtoni një seksion Route në fund të skedarit tuaj të konfigurimit të ndërfaqes wireless me përmbajtjen e mëposhtme:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gatewayâ Ă«shtĂ« porti i paracaktuar ose adresa e pikĂ«s suaj origjinale tĂ« qasjes.Destinationâ adresa e serverit SOCKS.
Konfiguroni wpa_supplicant për systemd-networkd
systemd-networkd pĂ«rdor wpa_supplicant pĂ«r t'u lidhur me njĂ« pikĂ« aksesi tĂ« mbrojtur. Kur pĂ«rpiqet tĂ« "ngrejĂ«" ndĂ«rfaqen wireless, systemd-networkd aktivizon shĂ«rbimin wpa_supplicant@emri, ku emri â Ă«shtĂ« emri i ndĂ«rfaqes wireless. NĂ«se nuk keni pĂ«rdorur systemd-networkd deri tani, ndoshta ky shĂ«rbim nuk ekziston nĂ« sistemin tuaj.
Prandaj krijoni atë me komandën:
systemctl enable wpa_supplicant@wlp6s0Unë kam përdorur wlp6s0 si emrin e ndërfaqes time wireless. Emri juaj mund të ndryshojë. Mund ta zbuloni atë me komandën ip l.
Tani shërbimi i krijuar wpa_supplicant@wlp6s0 do të aktivizohet kur "ngrihet" ndërfaqja wireless, megjithatë, nga ana e saj, do të kërkojë cilësimet SSID dhe fjalëkalimin e pikës së aksesit në skedarin /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Prandaj, është e nevojshme ta krijoni atë me ndihmën e utilitarit wpa_passphrase.
Për këtë, ekzekutoni komandën:
wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.confku SSID â Ă«shtĂ« emri i pikĂ«s suaj tĂ« aksesit, password â Ă«shtĂ« fjalĂ«kalimi, dhe wlp6s0 â emri i ndĂ«rfaqes suaj wireless.
Inicioni ndërfaqen virtuale për tun2socks
Krijoni një skedar për inicializimin e një ndërfaqeje të re virtuale në sistem/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
- Emri â Ă«shtĂ« emri qĂ« systemd-networkd do t'i caktojĂ« ndĂ«rfaqes virtuale tĂ« ardhshme gjatĂ« inicializimit tĂ« saj.
- Lloji â Ă«shtĂ« tipi i ndĂ«rfaqes virtuale. Duke u bazuar nĂ« emrin e shĂ«rbimit tun2socks, mund tĂ« supozoni se pĂ«rdor njĂ« ndĂ«rfaqe tĂ« tipit
tun. - netdev â Ă«shtĂ« njĂ« pĂ«rshkrim skedari qĂ«
systemd-networkdpërdoret për inicializimin e ndërfaqeve të rrjetit virtual. Adresa dhe parametra të tjerë të rrjetit për këto ndërfaqe janë të caktuara në .rrjet-skedarët.
Krijoni një skedar të tillë /etc/systemd/network/25-tun2socks.network me përmbajtjen e mëposhtme:
[Match]
Name=tun2socks
[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
Emriâ emri i ndĂ«rfaqes virtuale qĂ« keni caktuar nĂ« netdev-skedarin.Adresaâ IP adresa qĂ« do t'i caktohet ndĂ«rfaqes virtuale. Duhet tĂ« jetĂ« nĂ« tĂ« njĂ«jtin rrjet me adresĂ«n qĂ« keni caktuar nĂ« shĂ«rbimin tun2socksGatewayâ IP adresa e "routarit" tun2socks, e cila Ă«shtĂ« caktuar kur krijuat shĂ«rbimin systemd.
KĂ«shtu, ndĂ«rfaqja tun2socks ka adresĂ«n 172.16.1.2, dhe shĂ«rbimi tun2socks â 172.16.1.1, pra Ă«shtĂ« gateway pĂ«r tĂ« gjitha lidhjet nga ndĂ«rfaqja virtuale.
Konfiguroni pikën virtuale të q access
Instaloni varësitë:
apt install util-linux procps hostapd iw havegedShkarkoni repositorin create_ap në makinën tuaj:
git clone https://github.com/oblique/create_apShkoni në dosjen e repositorit në makinën tuaj:
cd create_apInstaloni në sistem:
make installDo të keni një konfigurim në sistemin tuaj /etc/create_ap.conf. Ja opsionet kryesore për modifikim:
GATEWAY=10.0.0.1â Ă«shtĂ« mĂ« mirĂ« ta bĂ«ni njĂ« nĂ«nrrjet tĂ« rezervuar tĂ« veçantĂ«.NO_DNS=1â çaktivizoni, pasi ky parametr do tĂ« menaxhohet nga ndĂ«rfaqja virtuale systemd-networkd.NO_DNSMASQ=1â çaktivizoni pĂ«r tĂ« njĂ«jtĂ«n arsye.WIFI_IFACE=wlp6s0â ndĂ«rfaqja wireless e laptopit.INTERNET_IFACE=tun2socksâ ndĂ«rfaqja virtuale, e krijuar pĂ«r tun2socks.SSID=hostapdâ emri i pikĂ«s virtuale tĂ« aksesi.PASSPHRASE=12345678â fjalĂ«kalimi.
Mos harroni të aktivizoni shërbimin:
systemctl enable create_apAktivizoni serverin DHCP në systemd-networkd
Shërbimi create_ap initizon një ndërfaqe virtuale në sistem ap0. Në teori, në këtë ndërfaqe qëndron dnsmasq, por pse të instaloni shërbime të panevojshme, nëse systemd-networkd përmban një server DHCP të integruar?
Për ta aktivizuar, do të definijmë cilësimet e rrjetit për pikën virtuale. Për këtë, krijoni një skedë /etc/systemd/network/25-ap0.network me përmbajtjen e mëposhtme:
[Match]
Name=ap0
[Network]
Address=10.0.0.1/24
DHCPServer=yes
[DHCPServer]
EmitDNS=yes
DNS=10.0.0.1
EmitNTP=yes
NTP=10.0.0.1
Pasi shërbimi create_ap të inicojë ndërfaqen virtuale ap0, systemd-networkd automatikisht do t'i japë një adresë IP dhe do të aktivizojë serverin DHCP.
Rreshtat EmitDNS=yes dhe DNS=10.0.0.1 kalojnë cilësimet e serverit DNS te pajisjet e lidhura me pikën e aksesi.
NĂ«se nuk planifikoni tĂ« pĂ«rdorni njĂ« server DNS lokal â nĂ« rastin tim, Ă«shtĂ« dnscrypt-proxy â mund tĂ« instaloni DNS=10.0.0.1 nĂ« DNS=192.168.1.1, ku 192.168.1.1 â adresa e gateway-t tuaj origjinal. AtĂ«herĂ« kĂ«rkesat DNS tĂ« hostit tuaj dhe tĂ« rrjetit lokal do tĂ« shkojnĂ« nĂ« mĂ«nyrĂ« tĂ« pazhduar pĂ«rmes serverĂ«ve tĂ« ofruesit.
EmitNTP=yes dhe NTP=192.168.1.1 kanë transmetuar cilësimet NTP.
E njëjta gjë vlen për rreshtin NTP=10.0.0.1.
Instaloni dhe konfigurojeni serverin NTP
Instaloni në sistem:
apt install ntp
Rregulloni konfigurimin /etc/ntp.conf. Komentoni adresat e grupeve standarde:
#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst
Shtoni adresat e serverëve publikë, për shembull, Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Siguroni akses në server për klientët nga rrjeti juaj:
restrict 10.0.0.0 mask 255.255.255.0
Aktivizoni transmetimin në rrjetin tuaj:
broadcast 10.0.0.255
Së fundi, shtoni adresat e këtyre serverëve në tabelën e rutimit static. Për këtë, hapni dosjen e konfigurimit të ndërfaqes wireless /etc/systemd/network/25-wlp6s0.network dhe shtoni në fund të seksionit Route.
[Route]
Gateway=192.168.1.1
Destination=216.239.35.0
[Route]
Gateway=192.168.1.1
Destination=216.239.35.4
[Route]
Gateway=192.168.1.1
Destination=216.239.35.8
[Route]
Gateway=192.168.1.1
Destination=216.239.35.12Mund të kuptoni adresat e serverëve tuaj NTP, duke përdorur utilitarin host si nga:
host time1.google.comInstaloni dnscrypt-proxy, hiqni reklamat dhe fshehni trafikun DNS nga ofruesi
apt install dnscrypt-proxyPër të shërbyer kërkesat DNS të hostit dhe rrjetit lokal, rregulloni soketin /lib/systemd/system/dnscrypt-proxy.socket. Ndryshoni rreshtat e mëposhtëm:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53Rivendosni systemd:
systemctl daemon-reloadRregulloni konfigurimin /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
Për të drejtuar lidhjet dnscrypt-proxy nëpër tun2socks, shtoni më poshtë:
force_tcp = true
Rregulloni konfigurimin /etc/resolv.conf, që informon serverin DNS mbi hostin.
nameserver 127.0.0.1
nameserver 192.168.1.1Rreshti i parë përfshin përdorimin e dnscrypt-proxy, i dyti - përdor portin origjinal, në rast se serveri dnscrypt-proxy nuk është i disponueshëm.
Gati!
Rivendosni ose ndaloni shërbimet në rrjet që janë aktive:
systemctl stop networking NetworkManager NetworkManager-wait-onlineDhe rivendosni të gjitha të nevojshmet:
systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntpPas rivendosjes ose rivendosjes do të keni një pikë të dytë qasjeje, e cila rrugëzon hostin dhe pajisjet e rrjetit lokal në SOCKS.
Kështu duket dalja ip a e një laptopi normal:
1: lo: 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: 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: 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: 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: 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
Si rezultat
- Furnizuesi sheh vetëm një lidhje të enkriptuar me serverin tuaj SOCKS, që do të thotë se nuk shikon asgjë.
- Megjithatë, ai i sheh kërkesat tuaja NTP. Për ta parandaluar këtë, hiqni rruget statike për serverët NTP. Megjithatë, nuk është e sigurt që serveri juaj SOCKS lejon protokollin NTP.
Një zgjidhje e përkohshme e vërejtur në Debain 10
Nëse përpiqeni të rijëni shërbimin rrjetit nga konsola, ai do të bjerë me një gabim. Kjo lidhet me faktin se një pjesë e tij në formën e një ndërfaqe virtuale është e lidhur me shërbimin tun2socks dhe për këtë arsye është në përdorim. Për të rijëni shërbimin rrjetit, së pari duhet të ndaloni shërbimin tun2socks. Por, mendoj se nëse keni lexuar deri në fund, për ju kjo nuk është një problem!
Linke
Burimi: habr.com
