MarÅ”rutÄtÄja izveide programmÄ SOCKS klÄpjdatorÄ ar Debian 10
Veselu gadu (vai divus) es atliku Ŕī raksta publicÄÅ”anu galvenÄ iemesla dÄļ - jau biju publicÄjis divus rakstus, kuros aprakstÄ«ju marÅ”rutÄtÄja izveides procesu SOCKS no ļoti parasta klÄpjdatora ar Debian.
TomÄr kopÅ” tÄ laika Debian stabilÄ versija ir atjauninÄta uz Buster, pietiekami daudz cilvÄku ir sazinÄjuÅ”ies ar mani privÄti, lÅ«dzot palÄ«dzÄ«bu iestatÄ«Å”anÄ, kas nozÄ«mÄ, ka mani iepriekÅ”Äjie raksti nav izsmeļoÅ”i. Nu, es pats uzminÄju, ka tajÄs izklÄstÄ«tÄs metodes pilnÄ«bÄ neatklÄj visas Linux iestatÄ«Å”anas sarežģītÄ«bas marÅ”rutÄÅ”anai SOCKS. TurklÄt tie ir rakstÄ«ti Debian Stretch, un pÄc jauninÄÅ”anas uz Buster, systemd init sistÄmÄ, es pamanÄ«ju nelielas izmaiÅas pakalpojumu mijiedarbÄ«bÄ. Un paÅ”os rakstos es neizmantoju systemd-networkd, lai gan tas ir vislabÄk piemÄrots sarežģītÄm tÄ«kla konfigurÄcijÄm.
Papildus iepriekÅ” minÄtajÄm izmaiÅÄm manai konfigurÄcijai tika pievienoti Å”Ädi pakalpojumi: hostapd - piekļuves punktu virtualizÄcijas pakalpojums, ntp lai sinhronizÄtu lokÄlÄ tÄ«kla klientu laiku, dnscrypt-starpniekserveris Å”ifrÄt savienojumus, izmantojot DNS, un atspÄjot reklÄmu vietÄjÄ tÄ«kla klientiem, kÄ arÄ«, kÄ jau minÄju iepriekÅ”, systemd-networkd tÄ«kla saskarÅu konfigurÄÅ”anai.
Å eit ir vienkÄrÅ”a Å”Äda marÅ”rutÄtÄja iekÅ”ÄjÄs struktÅ«ras blokshÄma.
TÄpÄc es jums atgÄdinÄÅ”u, kÄdi ir Ŕīs rakstu sÄrijas mÄrÄ·i:
MarÅ”rutÄjiet visus OS savienojumus uz SOCKS, kÄ arÄ« savienojumus no visÄm ierÄ«cÄm vienÄ tÄ«klÄ ar klÄpjdatoru.
ManÄ gadÄ«jumÄ klÄpjdatoram vajadzÄtu palikt pilnÄ«gi mobilam. Tas ir, lai dotu iespÄju izmantot darbvirsmas vidi un nebÅ«t piesaistÄ«tam fiziskai atraÅ”anÄs vietai.
PÄdÄjais punkts nozÄ«mÄ savienojumu un marÅ”rutÄÅ”anu tikai caur iebÅ«vÄto bezvadu interfeisu.
Nu, un, protams, visaptveroÅ”a ceļveža izveide, kÄ arÄ« attiecÄ«go tehnoloÄ£iju analÄ«ze, cik man ir pieticÄ«gs.
Kas tiks apskatÄ«ts Å”ajÄ rakstÄ:
iet ā lejupielÄdÄt projektu krÄtuves tun2zeÄ·esnepiecieÅ”ams, lai TCP trafiku novirzÄ«tu uz SOCKS, un izveidot_ap ā skripts, lai automatizÄtu virtuÄlÄ piekļuves punkta iestatÄ«Å”anu, izmantojot hostapd.
tun2zeÄ·es ā izveidot un instalÄt sistÄmÄ sistÄmas pakalpojumu.
systemd-networkd ā konfigurÄt bezvadu un virtuÄlÄs saskarnes, statiskÄs marÅ”rutÄÅ”anas tabulas un pakeÅ”u pÄradresÄciju.
ntp ā instalÄt un konfigurÄt serveri, lai sinhronizÄtu laiku virtuÄlo piekļuves punktu klientiem.
dnscrypt-starpniekserveris ā mÄs Å”ifrÄsim DNS pieprasÄ«jumus, novirzÄ«sim tos uz SOCKS un atspÄjosim reklÄmas domÄnus lokÄlajam tÄ«klam.
PriekÅ” kam tas viss?
Å is ir viens no veidiem, kÄ nodroÅ”inÄt TCP savienojumus lokÄlajÄ tÄ«klÄ. GalvenÄ priekÅ”rocÄ«ba ir tÄ, ka visi savienojumi tiek veikti SOCKS, ja vien tiem nav izveidots statisks marÅ”ruts caur oriÄ£inÄlo vÄrteju. Tas nozÄ«mÄ, ka jums nav jÄnorÄda SOCKS servera iestatÄ«jumi ne atseviŔķÄm programmÄm, ne lokÄlÄ tÄ«kla klientiem ā tie visi pÄc noklusÄjuma tiek novirzÄ«ti uz SOCKS, jo tÄ ir noklusÄjuma vÄrteja, lÄ«dz mÄs norÄdÄm citÄdi.
BÅ«tÄ«bÄ mÄs pievienojam otru Å”ifrÄÅ”anas marÅ”rutÄtÄju kÄ klÄpjdatoru pirms sÄkotnÄjÄ marÅ”rutÄtÄja un izmantojam oriÄ£inÄlÄ marÅ”rutÄtÄja interneta savienojumu klÄpjdatora jau Å”ifrÄtajiem SOCKS pieprasÄ«jumiem, kas savukÄrt marÅ”rutÄ un Å”ifrÄ pieprasÄ«jumus no LAN klientiem.
No pakalpojumu sniedzÄja viedokļa mÄs pastÄvÄ«gi esam savienoti ar vienu serveri ar Å”ifrÄtu trafiku.
AttiecÄ«gi visas ierÄ«ces ir savienotas ar klÄpjdatora virtuÄlo piekļuves punktu.
InstalÄjiet sistÄmÄ tun2socks
KamÄr jÅ«su maŔīnai ir internets, lejupielÄdÄjiet visus nepiecieÅ”amos rÄ«kus.
--tundev - aizÅem virtuÄlÄs saskarnes nosaukumu, kuru inicializÄjam ar systemd-networkd.
--netif-ipaddr ā tun2socks āmarÅ”rutÄtÄjaā, kuram ir pievienots virtuÄlais interfeiss, tÄ«kla adrese. LabÄk to noŔķirt rezervÄts apakÅ”tÄ«kls.
NetworkManager-wait-online ir pakalpojums, kas gaida funkcionÄjoÅ”u tÄ«kla savienojumu, pirms systemd turpina startÄt citus pakalpojumus, kas ir atkarÄ«gi no tÄ«kla klÄtbÅ«tnes. MÄs to atspÄjojam, pÄrejot uz systemd-networkd analogu.
VÄrds ir jÅ«su bezvadu interfeisa nosaukums. IdentificÄjiet to ar komandu ip a.
IPForward - direktÄ«va, kas nodroÅ”ina pakeÅ”u pÄradresÄciju tÄ«kla saskarnÄ.
Adrese ir atbildÄ«gs par IP adreses pieŔķirÅ”anu bezvadu saskarnei. MÄs to norÄdÄm statiski, jo ar lÄ«dzvÄrtÄ«gu direktÄ«vu DHCP=yes, systemd-networkd sistÄmÄ izveido noklusÄjuma vÄrteju. Tad visa trafika tiks veikta caur sÄkotnÄjo vÄrteju, nevis caur nÄkotnes virtuÄlo saskarni citÄ apakÅ”tÄ«klÄ. JÅ«s varat pÄrbaudÄ«t paÅ”reizÄjo noklusÄjuma vÄrteju ar komandu ip r
Ja jÅ«su SOCKS serveris nav lokÄls, bet attÄls, jums ir jÄizveido tam statisks marÅ”ruts. Lai to izdarÄ«tu, pievienojiet sadaļu Route lÄ«dz izveidotÄ bezvadu interfeisa konfigurÄcijas faila beigÄm ar Å”Ädu saturu:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway ā Ŕī ir noklusÄjuma vÄrteja vai sÄkotnÄjÄ piekļuves punkta adrese.
systemd-networkd izmanto wpa_supplicant, lai izveidotu savienojumu ar droÅ”u piekļuves punktu. MÄÄ£inot "paaugstinÄt" bezvadu saskarni, systemd-networkd sÄk pakalpojumu wpa_supplicant@ŠøŠ¼ŃKur nosaukums ir bezvadu interfeisa nosaukums. Ja pirms Ŕī punkta neesat izmantojis systemd-networkd, iespÄjams, Ŕī pakalpojuma jÅ«su sistÄmÄ nav.
TÄpÄc izveidojiet to ar komandu:
systemctl enable wpa_supplicant@wlp6s0
ES izmantoju wlp6s0 kÄ tÄ bezvadu interfeisa nosaukums. JÅ«su vÄrds var atŔķirties. JÅ«s to varat atpazÄ«t ar komandu ip l.
Tagad izveidots pakalpojums wpa_supplicant@wlp6s0 tiks palaists, kad bezvadu interfeiss tiks āpaceltsā, bet tas savukÄrt failÄ meklÄs piekļuves punkta SSID un paroles iestatÄ«jumus /etc/wpa_supplicant/wpa_supplicant-wlp6s0. TÄpÄc jums tas ir jÄizveido, izmantojot utilÄ«tu wpa_passphrase.
kur SSID ir jÅ«su piekļuves punkta nosaukums, parole ir parole un wlp6s0 ā bezvadu interfeisa nosaukums.
InicializÄjiet tun2socks virtuÄlo saskarni
Izveidojiet failu, lai sistÄmÄ inicializÄtu jaunu virtuÄlo saskarni/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
VÄrds ir nosaukums, ko systemd-networkd pieŔķirs nÄkotnes virtuÄlajai saskarnei, kad tÄ tiks inicializÄta.
laipns ir virtuÄlÄs saskarnes veids. No tun2socks pakalpojuma nosaukuma varat uzminÄt, ka tas izmanto interfeisu, piemÄram, tun.
netdev ir failu paplaÅ”inÄjums, kas systemd-networkd Izmanto, lai inicializÄtu virtuÄlÄs tÄ«kla saskarnes. Å o saskarÅu adrese un citi tÄ«kla iestatÄ«jumi ir norÄdÄ«ti .tÄ«kls- faili.
Izveidojiet Å”Ädu failu /etc/systemd/network/25-tun2socks.network ar Å”Ädu saturu:
Name ā virtuÄlÄs saskarnes nosaukums, kuru norÄdÄ«jÄt netdev- fails.
Address ā IP adrese, kas tiks pieŔķirta virtuÄlajam interfeisam. Tai ir jÄatrodas tajÄ paÅ”Ä tÄ«klÄ kÄ adrese, kuru norÄdÄ«jÄt pakalpojumÄ tun2socks
Gateway ā āmarÅ”rutÄtÄjaā IP adrese tun2zeÄ·es, kuru norÄdÄ«jÄt, veidojot systemd pakalpojumu.
TÄtad interfeiss tun2zeÄ·es ir adrese 172.16.1.2un pakalpojums tun2zeÄ·es SÄkot no 172.16.1.1, tas ir, tÄ ir vÄrteja visiem savienojumiem no virtuÄlÄ interfeisa.
Iestatiet virtuÄlo piekļuves punktu
InstalÄÅ”anas atkarÄ«bas:
apt install util-linux procps hostapd iw haveged
LejupielÄdÄjiet repozitoriju izveidot_ap uz jÅ«su automaŔīnu:
git clone https://github.com/oblique/create_ap
Dodieties uz repozitorija mapi savÄ datorÄ:
cd create_ap
InstalÄjiet sistÄmÄ:
make install
JÅ«su sistÄmÄ parÄdÄ«sies konfigurÄcija /etc/create_ap.conf. Å eit ir galvenÄs rediÄ£ÄÅ”anas iespÄjas:
GATEWAY=10.0.0.1 ā labÄk to padarÄ«t par atseviŔķu rezervÄtu apakÅ”tÄ«klu.
NO_DNS=1 - atspÄjot, jo Å”o parametru pÄrvaldÄ«s systemd-networkd virtuÄlais interfeiss.
NO_DNSMASQ=1 - izslÄdziet to tÄ paÅ”a iemesla dÄļ.
INTERNET_IFACE=tun2socks - virtuÄlais interfeiss, kas izveidots priekÅ” tun2socks.
SSID=hostapd ā virtuÄlÄ piekļuves punkta nosaukums.
PASSPHRASE=12345678 - parole.
Neaizmirstiet iespÄjot pakalpojumu:
systemctl enable create_ap
IespÄjot DHCP serveri sistÄmÄ systemd-networkd
Pakalpojums create_ap inicializÄ virtuÄlo saskarni sistÄmÄ ap0. TeorÄtiski dnsmasq karÄjas Å”ajÄ saskarnÄ, bet kÄpÄc instalÄt papildu pakalpojumus, ja systemd-networkd satur iebÅ«vÄtu DHCP serveri?
Lai to iespÄjotu, mÄs definÄsim virtuÄlÄ punkta tÄ«kla iestatÄ«jumus. Lai to izdarÄ«tu, izveidojiet failu /etc/systemd/network/25-ap0.network ar Å”Ädu saturu:
PÄc tam, kad pakalpojums create_ap inicializÄ virtuÄlo saskarni ap0, systemd-networkd automÄtiski pieŔķirs tai IP adresi un iespÄjos DHCP serveri.
StÄ«gas EmitDNS=yes Šø DNS=10.0.0.1 pÄrsÅ«tÄ«t DNS servera iestatÄ«jumus ierÄ«cÄm, kas savienotas ar piekļuves punktu.
Ja neplÄnojat izmantot vietÄjo DNS serveri - manÄ gadÄ«jumÄ tas ir dnscrypt-proxy - varat instalÄt DNS=10.0.0.1 Š² DNS=192.168.1.1Kur 192.168.1.1 ā sÄkotnÄjÄs vÄrtejas adrese. PÄc tam jÅ«su resursdatora un lokÄlÄ tÄ«kla DNS pieprasÄ«jumi tiks neÅ”ifrÄti, izmantojot pakalpojumu sniedzÄja serverus.
PÄc atsÄknÄÅ”anas vai restartÄÅ”anas jums bÅ«s otrs piekļuves punkts, kas novirza resursdatora un LAN ierÄ«ces uz SOCKS.
Å Ädi izskatÄs izvade ip a parastais klÄpjdators:
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
KÄ rezultÄtÄ,
Pakalpojumu sniedzÄjs redz tikai Å”ifrÄtu savienojumu ar jÅ«su SOCKS serveri, kas nozÄ«mÄ, ka viÅÅ” neko neredz.
Un tomÄr tas redz jÅ«su NTP pieprasÄ«jumus, lai to novÄrstu, noÅemiet statiskos marÅ”rutus NTP serveriem. TomÄr nav skaidrs, vai jÅ«su SOCKS serveris atļauj NTP protokolu.
Kruķis tika pamanīts uz Debeina 10
Ja mÄÄ£inÄt restartÄt tÄ«kla pakalpojumu no konsoles, tas neizdosies ar kļūdu. Tas ir saistÄ«ts ar faktu, ka daļa no tÄ virtuÄlÄ interfeisa veidÄ ir saistÄ«ta ar tun2socks pakalpojumu, kas nozÄ«mÄ, ka tÄ tiek izmantota. Lai restartÄtu tÄ«kla pakalpojumu, vispirms ir jÄpÄrtrauc pakalpojums tun2socks. Bet, manuprÄt, ja izlasi lÄ«dz galam, tÄ tev noteikti nav problÄma!