Tërë vitin (ose dy) kam shtyrë publikimin e këtij artikulli për arsye kryesore - tashmë kam botuar dy artikuj, në të cilët përshkruaj procesin e ndërtimit të një routeri SOCKS nga një laptop i zakonshëm me Debian.
MegjithatĂ«, qĂ« nga atĂ«herĂ« versioni stabil i Debian u pĂ«rditĂ«sua nĂ« Buster, mĂ« janĂ« drejtuar mjaft njerĂ«z nĂ« privat pĂ«r ndihmĂ« nĂ« konfigurim, qĂ« do tĂ« thotĂ« se artikujt e mi tĂ« mĂ«parshĂ«m nuk janĂ« shterues. ĂfarĂ« do, unĂ« vetĂ« e kisha parasysh se metodat e pĂ«rshkruara nĂ« to nuk zbulojnĂ« plotĂ«sisht tĂ« gjitha hollĂ«sitĂ« e konfigurimit tĂ« Linux pĂ«r orientimin 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, kam vĂ«nĂ« re disa ndryshime tĂ« vogla nĂ« bashkĂ«veprimin e shĂ«rbimeve. Po ashtu, nĂ« artikujt e vetĂ« nuk kam pĂ«rdorur systemd-networkd, ndonĂ«se ajo Ă«shtĂ« mĂ« e pĂ«rshtatshme pĂ«r konfigurime komplekse tĂ« rrjetit.
PĂ«rveç ndryshimeve tĂ« pĂ«rmendura mĂ« lart, nĂ« konfigurimin tim janĂ« shtuar shĂ«rbime si hostapd â njĂ« shĂ«rbim pĂ«r virtualizimin e pikĂ«s sĂ« qasjes, ntp pĂ«r sinkronizimin e kohĂ«s sĂ« klientĂ«ve nĂ« rrjetin lokal, dnscrypt-proxy pĂ«r enkriptimin e lidhjeve pĂ«rmes protokollit DNS dhe mbajtjen nĂ«n kontroll tĂ« reklamave nĂ« klientĂ«t e rrjetit lokal, si dhe, siç pĂ«rmenda mĂ« parĂ«, systemd-networkd pĂ«r konfigurimin e ndĂ«rfaqeve tĂ« rrjetit.
Këtu është një skemë e thjeshtë, e brendshme e funksionimit të një routeri të tillë.

Pra, le të rikujtojmë cilat janë objektivat e këtij cikli artikujsh:
- Të orientojmë në SOCKS të gjitha lidhjet e OS-së, si dhe lidhjet e të gjitha pajisjeve që janë në të njëjtin rrjet me laptopin.
- Laptopi në rastin tim duhet të mbetet plotësisht mobil. Që do të thotë, të ofrojë mundësinë për të përdorur mjedisin e tryezës së punës dhe të mos jetë i lidhur me një vendndodhje fizike.
- Pika e fundit nënkupton lidhjen dhe orientojning vetëm përmes ndërfaqes së integruar të pa kabllit.
- Po ashtu, të krijoj një udhëzues të plotë, si dhe të analizoj teknologjitë përkatëse sa më shumë që të jetë e mundur nga njohuritë e mia të skromta.
ĂfarĂ« do tĂ« shqyrtohet nĂ« kĂ«tĂ« artikull:
- git â do tĂ« shkarkojmĂ« repository-t e projekteve tun2socks, e nevojshme pĂ«r orientoimin e trafikut TCP nĂ« SOCKS, dhe create_ap â skripti pĂ«r automatizimin e konfigurimit tĂ« pikĂ«s virtuale tĂ« qasjes duke pĂ«rdorur hostapd.
- tun2socks â do tĂ« ndĂ«rtomĂ« dhe instalojmĂ« shĂ«rbimin systemd nĂ« sistem.
- systemd-networkd â do tĂ« konfiguroni ndĂ«rfaqet pa tela dhe virtuale, tabelat e rrugĂ«zimit statik dhe redirektimin e paketave.
- create_ap â do tĂ« instaloni shĂ«rbimin systemd nĂ« sistem, do tĂ« konfiguroni dhe aktivizoni pikĂ«n virtuale tĂ« aksesit.
Hapat opsionale:
- ntp â do tĂ« instaloni dhe konfiguroni serverin pĂ«r sinkronizimin e kohĂ«s nĂ« klientĂ«t e pikĂ«s virtuale tĂ« aksesit.
- dnscrypt-proxy â do tĂ« kriptoni kĂ«rkesat DNS, do t'i rrugĂ«zoni ato nĂ« SOCKS dhe do tĂ« çaktivizoni domenet e reklamave pĂ«r rrjetin lokal.
Pse duhet të bëjmë këtë?
Ky është një nga mënyrat për të organizuar mbrojtjen e lidhjeve TCP në rrjetin lokal. Avantazhi kryesor është se të gjitha lidhjet shkojnë në SOCKS, nëse për to nuk është ndërtuar një rrugëzim statik përmes gateway-së origjinale. Kjo do të thotë se nuk është e nevojshme t'i jepni konfigurimet SOCKS serverëve individualë apo klientëve në rrjetin lokal - të gjithë shkojnë në SOCKS me parazgjedhje, pasi ai është gateway standard, derisa ne të specifikojmë ndryshe.
Dhe në thelb, ne po shtojmë një router të dytë të kriptuar si laptopin përpara router-it origjinal dhe po përdorim lidhjen e internetit të router-it origjinal për kërkesat SOCKS që tashmë janë të kriptuara nga laptopi, i cili, në këndvështrim, rrugëzon dhe kripton kërkesat e klientëve në rrjetin lokal.
Nga këndvështrimi i ofruesit, ne jemi vazhdimisht të lidhur me një server me trafik të kriptuar.
Për pasojë, të gjitha pajisjet lidhen me pikën virtuale të aksesit të laptopit.
Instaloni tun2socks në sistemin tuaj
Sa herë që 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
Një folder do të shfaqet në sistemin tuaj badvpn. Krijoni një folder 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çaktivizon ndĂ«rtimin e tĂ« gjitha komponenteve tĂ« depozitĂ«s badvpn. - â
DBUILD_TUN2SOCKS=1aktivizon ndĂ«rtimin e komponentit tun2socks. make installâ do 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, tĂ« cilĂ«n ne e inicializojmĂ« me systemd-networkd.--netif-ipaddrâ adresa rrjetit "routerit" tun2socks, nĂ« tĂ« cilin lidhet ndĂ«rfaqja virtuale. MĂ« mirĂ« tĂ« krijoni njĂ« .--socks-server-addrâ merr njĂ« soket (adresĂ«:porti serverit SOCKS).
Nëse serveri juaj SOCKS kërkon autentifikim, mund të specifikoni parametrat --username dhe --password.
Pastaj regjistroni shërbimin
systemctl daemon-reloadDhe aktivizoni
systemctl enable tun2socksPara se të filloni shërbimin, sigurohuni që të kenë një ndërfaqe virtuale rrjeti.
Kaloni te systemd-networkd
Aktivizoni 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Ă« jetĂ« njĂ« lidhje rrjeti e funksionshme para se systemd tĂ« vazhdojĂ« me ngarkimin e shĂ«rbimeve tĂ« tjera qĂ« varen nga existencia e rrjetit. Ne e çaktivizojmĂ« kĂ«tĂ«, pasi do tĂ« kalojmĂ« nĂ« njĂ« alternativĂ« tĂ« systemd-networkd.
Le të aktivizojmë atë menjëherë:
systemctl enable systemd-networkd-wait-onlineKonfiguroni ndërfaqen rrjetësore pa tela
Krijoni një skedar konfigurimi për systemd-networkd për ndërfaqen rrjetësore pa tela /etc/systemd/network/25-wlp6s0.network.
[Match]
Name=wlp6s0
[Network]
Address=192.168.1.2/24
IPForward=yes
- Emri â Ă«shtĂ« emri i ndĂ«rfaqes suaj pa tela. Identifikoni atĂ« me komandĂ«n
ip a. - IPForward â Ă«shtĂ« njĂ« direktivĂ« qĂ« aktivizon ridrejtimin e paketave nĂ« ndĂ«rfaqen rrjetĂ«sore.
- Adresa dhe i jep një IP ndërfaqes suaj pa tela. Ne e specifikojmë atë statikisht sepse me direktivën e barabartë
DHCP=yes, systemd-networkd krijon një derë në sistemin tuaj si derë të paracaktuar. Pastaj gjithë trafik do të kalojë përmes derës origjinale dhe jo përmes ndërfaqes virtuale që do të krijojmë në një nënrrjet të ndryshëm. Mund të kontrolloni derë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, do t'ju nevojitet të krijoni një rrugë statike për të. Për këtë, shtoni seksionin Rrugë në fund të skedarit tuaj të konfigurimit për ndërfaqen pa tela me përmbajtje si më poshtë:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
DerĂ«â Ă«shtĂ« dera e paracaktuar ose adresa e pikĂ«s suaj origjinale tĂ« qasjes.Destinacioniâ Ă«shtĂ« 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Ă« qasjeje tĂ« mbrojtur. GjatĂ« pĂ«rpjekjes pĂ«r tĂ« "ngjitur" ndĂ«rfaqen pa tela, systemd-networkd aktivizon shĂ«rbimin wpa_supplicant@emriindex emri â Ă«shtĂ« emri i interfaces sĂ« wireless. NĂ«se nuk e keni pĂ«rdorur systemd-networkd deri tani, atĂ«herĂ«, sigurisht, ky shĂ«rbim do tĂ« mungojĂ« nĂ« sistemin tuaj.
Prandaj krijoni atë me komandën:
systemctl enable wpa_supplicant@wlp6s0Kam përdorur wlp6s0 si emrin e interfaces time wireless. Ju mund të keni një emër ndryshe. Mund ta mësoni atë me komandën ip l.
Tani shërbimi i krijuar wpa_supplicant@wlp6s0 do të ngrihet kur "ngrihet" interface i wireless, megjithatë, ajo, nga ana e saj, do të kërkojë cilësimet e SSID dhe fjalëkalimin e pikës së qasjes 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 fjalĂ«kalim>\/etc\/wpa_supplicant\/wpa_supplicant-wlp6s0.confku SSID â Ă«shtĂ« emri i pikĂ«s suaj tĂ« qasjes, fjalĂ«kalim â fjalĂ«kalimi, dhe wlp6s0 â emri i interfaces tuaj wireless.
Inicioni interface virtual për tun2socks
Krijoni një skedar për inicimin e një interface të ri virtual në sistemin/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
- Emri â Ă«shtĂ« emri qĂ« systemd-networkd do t'i caktojĂ« tĂ« ardhmes interface virtual kur tĂ« inicohet.
- Kind â Ă«shtĂ« tipi i interface virtual. Duke u bazuar nĂ« emrin e shĂ«rbimit tun2socks, mund tĂ« arrini tĂ« merrni me mend se ajo pĂ«rdor njĂ« interface tĂ« tipit
tun. - netdev â Ă«shtĂ« shtrirja e skedarĂ«ve qĂ«
systemd-networkdpërdor për të inicuar interface të virtuale të rrjetit. Adresa dhe cilësimet e tjera të rrjetit për këto interface përcaktohen në .network-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 interface virtuale qĂ« keni caktuar nĂ« netdev-skedarin.Adresaâ IP adresa qĂ« do tĂ« caktohet interface virtuale. Duhet tĂ« jetĂ« nĂ« tĂ« njĂ«jtĂ«n rrjet me adresĂ«n qĂ« keni caktuar nĂ« shĂ«rbimin tun2socksDerĂ«â IP adresa "router" tun2socks, tĂ« cilin keni caktuar gjatĂ« krijimit tĂ« shĂ«rbimit systemd.
KĂ«shtu, interface 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 interface virtuale.
Konfiguroni pikën virtuale të qasjes
Instaloni varësitë:
apt install util-linux procps hostapd iw havegedShkarkoni depozita create_ap në makinën tuaj:
git clone https:\/\/github.com\/oblique\/create_apShkoni në dosjen e depozitës në makinën tuaj:
cd create_apInstaloni në sistem:
make installNë sistemin tuaj do të shfaqet një konfigurim /etc/create_ap.conf. Ja opsionet kryesore për rregullim:
GATEWAY=10.0.0.1â Ă«shtĂ« mĂ« mirĂ« ta bĂ«ni njĂ« subnet tĂ« rezervuar tĂ« veçantĂ«.NO_DNS=1â çaktivizoni, pasi ky parametĂ«r do tĂ« kontrollohet nga interface-i virtual i systemd-networkd.NO_DNSMASQ=1â çaktivizoni pĂ«r tĂ« njĂ«jtĂ«n arsye.WIFI_IFACE=wlp6s0â ndĂ«rfaqja pa tela e laptopit.INTERNET_IFACE=tun2socksâ ndĂ«rfaqja virtuale e krijuar pĂ«r tun2socks.SSID=hostapdâ emri i pikĂ«s virtuale tĂ« qasjes.PASSPHRASE=12345678â fjalĂ«kalimi.
Mos harroni të aktivizoni shërbimin:
systemctl enable create_apAktivizoni shërbimin DHCP në systemd-networkd
Shërbimi create_ap krijon në sistem ndërfaqen virtuale ap0. Idealisht, në këtë ndërfaqe "varët" dnsmasq, por përse të instaloni shërbime të panevojshme, nëse systemd-networkd ka një shërbim DHCP të integruar?
Për ta aktivizuar atë, do të përcaktojmë përputhjen rrjetore për pikën virtuale. Për këtë, krijoni një skedar /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
Pas aktivizimit të shërbimit create_ap, ap0, systemd-networkd automatikisht do t'i japë një IP dhe do të aktivizojë shërbimin DHCP.
Rreshtat EmitDNS=yes dhe DNS=10.0.0.1 kalojnë konfigurimet e serverit DNS te pajisjet e lidhura me pikën e qasjes.
NĂ«se nuk planifikoni tĂ« pĂ«rdorni njĂ« server lokal DNS â nĂ« rastin tim Ă«shtĂ« dnscrypt-proxy â mund tĂ« vendosni DNS=10.0.0.1 nĂ« DNS=192.168.1.1index 192.168.1.1 â adresa e gateways tuaj origjinal. AtĂ«herĂ« kĂ«rkesat DNS tĂ« hostit tuaj dhe rrjetit lokal do tĂ« kalojnĂ« nĂ« mĂ«nyrĂ« tĂ« pa enkriptuar pĂ«rmes serverĂ«ve tĂ« ofruesit.
EmitNTP=yes dhe NTP=192.168.1.1 kalojnë konfigurimet NTP.
E njëjta gjë vlen për rreshtin NTP=10.0.0.1.
Instaloni dhe konfiguroni serverin NTP
Instaloni në sistem:
apt install ntp
Rregulloni konfigun /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 iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst
Ofroni 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 ĐŒĐ°ŃŃŃŃŃОзimi statik. PĂ«r kĂ«tĂ«, hapni skedarin e konfigurimit tĂ« ndĂ«rfaqes pa tela /etc/systemd/network/25-wlp6s0.network dhe shtoni nĂ« fund tĂ« seksionit RrugĂ«.
[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ë zbuloni adresat e serverëve tuaj NTP duke përdorur mjetin host në mënyrë të tillë:
host time1.google.comInstaloni dnscrypt-proxy, hiqni reklamën dhe fshehni trafikun DNS nga ofruesi
apt install dnscrypt-proxyPër të shërbyer kërkesat DNS të hostit dhe rrjetit lokal, rregulloni socketin /lib/systemd/system/dnscrypt-proxy.socket. Ndryshoni rreshtat e mëposhtme:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53Rinisni systemd:
systemctl daemon-reloadRregulloni konfigun /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
Për të drejtuar lidhjet dnscrypt-proxy përmes tun2socks, shtoni më poshtë:
force_tcp = true
Rregulloni konfigun /etc/resolv.conf, i cili njofton serverin DNS të hostit.
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 aksesueshëm.
Gati!
Rinovoni ose ndaloni shërbimet aktive të rrjetit:
systemctl stop networking NetworkManager NetworkManager-wait-onlineDhe rinisni të gjitha të nevojshmet:
systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntpPas rinovimit ose rinisjes do të keni një pikë të dytë qasje, e cila do të drejtojë hostin dhe pajisjet e rrjetit lokal në SOCKS.
Ja si 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
NĂ« fund
- Ofertuesi sheh vetëm një lidhje të enkriptuar me serverin tuaj SOCKS, ndaj nuk sheh asgjë.
- Megjithatë, ai sheh kërkesat tuaja NTP, për të parandaluar këtë, fshini rrugët statike për serverat NTP. Sidoqoftë, nuk është e garantuar që serveri juaj SOCKS lejon protokollin NTP.
Një zgjidhje, e vërejtur në Debian 10
Nëse provoni të rinisni shërbimin e 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ërfaqeje virtuale është e lidhur me shërbimin tun2socks, kështu që është e përdorur. Për të rinisur shërbimin e rrjetit, së pari duhet të ndaloni shërbimin tun2socks. Por, mendoj se nëse e keni lexuar deri në fund, kjo sigurisht që nuk është një problem për ju!
Linket
Burimi: habr.com
