Terve aasta (või kaks) lükkasin selle artikli avaldamise edasi peamisel põhjusel - olin juba avaldanud kaks artiklit, milles kirjeldasin SOCKSis ruuteri loomise protsessi väga tavalisest Debianiga sülearvutist.
Sellest ajast saadik on aga Debiani stabiilset versiooni uuendatud Busterile, piisav hulk inimesi on minuga privaatselt ühendust võtnud ja palunud seadistamisel abi, mis tähendab, et minu varasemad artiklid ei ole ammendavad. Noh, ma ise arvasin, et neis kirjeldatud meetodid ei paljasta täielikult kõiki Linuxi seadistamise keerukust SOCKSis marsruutimiseks. Lisaks on need kirjutatud Debian Stretchi jaoks ja pärast Busteri versiooni uuendamist systemd init süsteemis märkasin teenuste koostoimes väikseid muudatusi. Ja artiklites endis ma ei kasutanud systemd-networkd, kuigi see sobib kõige paremini keerukate võrgukonfiguratsioonide jaoks.
Lisaks ülaltoodud muudatustele lisati minu konfiguratsioonile järgmised teenused: hostapd - pääsupunkti virtualiseerimise teenus, ntp sünkroonida kohaliku võrgu klientide aega, dnscrypt-puhverserver DNS-i kaudu ühenduste krüpteerimiseks ja kohaliku võrgu klientide reklaamide keelamiseks ning, nagu ma varem mainisin, systemd-networkd võrguliideste konfigureerimiseks.
Siin on lihtne plokkskeem sellise ruuteri sisemisest struktuurist.
Niisiis, lubage mul teile meelde tuletada, millised on selle artiklite sarja eesmärgid:
Suunake kõik OS-i ühendused SOCKS-i, samuti kõigi sülearvutiga samas võrgus olevate seadmete ühendused.
Minu puhul peaks sülearvuti jääma täiesti mobiilseks. See tähendab, et anda võimalus kasutada töölauakeskkonda ja mitte olla seotud füüsilise asukohaga.
Viimane punkt hõlmab ühendust ja marsruutimist ainult sisseehitatud traadita liidese kaudu.
No ja muidugi põhjaliku juhendi koostamine, samuti asjakohaste tehnoloogiate analüüs minu parimate teadmiste kohaselt.
Mida selles artiklis käsitletakse:
git — laadige alla projektihoidlad tun2sokidvajalik TCP-liikluse suunamiseks SOCKS-i ja loo_ap — skript virtuaalse pääsupunkti seadistamise automatiseerimiseks hostapd.
tun2sokid — luua ja installida süsteemi teenus.
systemd-networkd — konfigureerida traadita ja virtuaalseid liideseid, staatilisi marsruutimistabeleid ja pakettide ümbersuunamist.
loo_ap — installige süsteemi teenus, konfigureerige ja käivitage virtuaalne pöörduspunkt.
Valikulised sammud:
ntp — serveri installimine ja konfigureerimine virtuaalse pöörduspunkti klientide aja sünkroonimiseks.
dnscrypt-puhverserver — krüpteerime DNS-päringud, suuname need SOCKS-i ja keelame kohaliku võrgu reklaamidomeenid.
Mille jaoks see kõik on?
See on üks viise TCP-ühenduste kaitsmiseks kohalikus võrgus. Peamine eelis on see, et kõik ühendused tehakse SOCKSIS, välja arvatud juhul, kui nende jaoks on ehitatud staatiline marsruut läbi algse lüüsi. See tähendab, et te ei pea määrama SOCKS-i serveri sätteid ei üksikute programmide ega kohaliku võrgu klientide jaoks – need kõik lähevad vaikimisi SOCKS-i, kuna see on vaikelüüs, kuni me ei näita teisiti.
Põhimõtteliselt lisame teise krüpteeriva ruuteri sülearvutina algse ruuteri ette ja kasutame sülearvuti juba krüptitud SOCKS-i päringute jaoks algse ruuteri Interneti-ühendust, mis omakorda suunab ja krüpteerib LAN-klientide päringuid.
Pakkuja seisukohalt oleme pidevalt ühendatud ühe krüpteeritud liiklusega serveriga.
Sellest lähtuvalt on kõik seadmed ühendatud sülearvuti virtuaalse pöörduspunktiga.
Installige süsteemi tun2socks
Kuni teie masinal on Internet, laadige alla kõik vajalikud tööriistad.
apt update
apt install git make cmake
Laadige alla badvpn pakett
git clone https://github.com/ambrop72/badvpn
Teie süsteemi ilmub kaust badvpn. Looge ehitamise jaoks eraldi kaust
NetworkManager-wait-online on teenus, mis ootab toimivat võrguühendust, enne kui systemd jätkab teiste võrgu olemasolust sõltuvate teenuste käivitamist. Me keelame selle, kui lülitume systemd-networkd analoogile.
Lubame selle kohe:
systemctl enable systemd-networkd-wait-online
Seadistage traadita võrgu liides
Looge traadita võrguliidese jaoks systemd-networkd konfiguratsioonifail /etc/systemd/network/25-wlp6s0.network.
Nimi on teie traadita liidese nimi. Tuvastage see käsuga ip a.
IPForward - direktiiv, mis võimaldab võrguliidesel pakettide ümbersuunamist.
AADRESS vastutab traadita liidesele IP-aadressi määramise eest. Täpsustame selle staatiliselt, kuna samaväärse direktiiviga DHCP=yes, systemd-networkd loob süsteemi vaikelüüsi. Siis toimub kogu liiklus algse lüüsi kaudu, mitte tulevase virtuaalse liidese kaudu mõnes teises alamvõrgus. Praegust vaikelüüsi saate kontrollida käsuga ip r
Looge SOCKS-i kaugserveri jaoks staatiline marsruut
Kui teie SOCKS-server ei ole kohalik, vaid kaugserver, peate selle jaoks looma staatilise marsruudi. Selleks lisage jaotis Route järgmise sisuga loodud traadita liidese konfiguratsioonifaili lõppu:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway — see on vaikelüüs või teie algse pöörduspunkti aadress.
Destination — SOCKS serveri aadress.
Seadistage wpa_supplicant jaoks systemd-networkd
systemd-networkd kasutab turvalise pääsupunktiga ühenduse loomiseks faili wpa_supplicant. Kui proovite traadita liidest "tõsta", käivitab systemd-networkd teenuse wpa_supplicant@имяKus Nimi on traadita liidese nimi. Kui te pole systemd-networkd enne seda punkti kasutanud, siis tõenäoliselt puudub see teenus teie süsteemis.
Nii et looge see käsuga:
systemctl enable wpa_supplicant@wlp6s0
ma kasutasin wlp6s0 selle traadita liidese nimeks. Teie nimi võib olla erinev. Saate selle ära tunda käsuga ip l.
Nüüd loodud teenus wpa_supplicant@wlp6s0 käivitatakse traadita liidese tõstmisel, kuid see omakorda otsib failist pääsupunkti SSID ja parooli sätteid /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Seetõttu peate selle utiliidi abil looma wpa_passphrase.
kus SSID on teie pääsupunkti nimi, parool on parool ja wlp6s0 — teie traadita liidese nimi.
Initsialiseerige tun2socksi virtuaalne liides
Looge fail süsteemi uue virtuaalse liidese lähtestamiseks/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
Nimi on nimi, mille systemd-networkd tulevasele virtuaalsele liidesele initsialiseerimisel määrab.
Laps on virtuaalse liidese tüüp. Tun2socksi teenuse nime järgi võite arvata, et see kasutab liidest nagu tun.
netdev on failide laiend, mis systemd-networkd Kasutatakse virtuaalsete võrguliideste lähtestamiseks. Nende liideste aadress ja muud võrgusätted on määratletud .võrk- failid.
Looge selline fail /etc/systemd/network/25-tun2socks.network järgmise sisuga:
Name — teie määratud virtuaalse liidese nimi netdev- fail.
Address — IP-aadress, mis määratakse virtuaalsele liidesele. Peab asuma samas võrgus kui aadress, mille määrasite teenuses tun2socks
Gateway — ruuteri IP-aadress tun2sokid, mille määrasite süsteemiteenuse loomisel.
Nii et liides tun2sokid on aadress 172.16.1.2ja teenust tun2sokid - 172.16.1.1, see tähendab, et see on värav kõigi virtuaalse liidese ühenduste jaoks.
Seadistage virtuaalne pääsupunkt
Installi sõltuvused:
apt install util-linux procps hostapd iw haveged
Laadige hoidla alla loo_ap teie autole:
git clone https://github.com/oblique/create_ap
Minge oma masina hoidla kausta:
cd create_ap
Installige süsteemi:
make install
Teie süsteemi kuvatakse konfiguratsioon /etc/create_ap.conf. Siin on peamised redigeerimisvalikud:
GATEWAY=10.0.0.1 — parem on teha sellest eraldi reserveeritud alamvõrk.
NO_DNS=1 - keelake, kuna seda parameetrit haldab virtuaalne liides systemd-networkd.
NO_DNSMASQ=1 - lülitage see samal põhjusel välja.
WIFI_IFACE=wlp6s0 — sülearvuti juhtmevaba liides.
INTERNET_IFACE=tun2socks - tun2socksi jaoks loodud virtuaalne liides.
SSID=hostapd — virtuaalse pöörduspunkti nimi.
PASSPHRASE=12345678 - parool.
Ärge unustage teenust lubada:
systemctl enable create_ap
Luba DHCP-server süsteemis systemd-networkd
Teenindus create_ap initsialiseerib süsteemis virtuaalse liidese ap0. Teoreetiliselt ripub dnsmasq sellel liidesel, kuid milleks installida lisateenuseid, kui systemd-networkd sisaldab sisseehitatud DHCP-serverit?
Selle lubamiseks määratleme virtuaalse punkti võrgusätted. Selleks looge fail /etc/systemd/network/25-ap0.network järgmise sisuga:
Pärast seda, kui teenus create_ap initsialiseerib virtuaalse liidese ap0, määrab systemd-networkd sellele automaatselt IP-aadressi ja lubab DHCP-serveri.
Stringid EmitDNS=yes и DNS=10.0.0.1 edastada DNS-serveri sätted pääsupunktiga ühendatud seadmetele.
Kui te ei kavatse kasutada kohalikku DNS-serverit – minu puhul on selleks dnscrypt-puhverserver – saate installida DNS=10.0.0.1 в DNS=192.168.1.1Kus 192.168.1.1 — teie algse lüüsi aadress. Seejärel lähevad teie hosti ja kohaliku võrgu DNS-päringud teenusepakkuja serverite kaudu krüptimata.
EmitNTP=yes и NTP=192.168.1.1 NTP seadete ülekandmine.
Lisage avaliku serveri aadressid, näiteks Google'i avalik NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Andke oma võrgus olevatele klientidele juurdepääs serverile:
restrict 10.0.0.0 mask 255.255.255.0
Lubage oma võrku leviedastus:
broadcast 10.0.0.255
Lõpuks lisage nende serverite aadressid staatilisse marsruutimistabelisse. Selleks avage traadita liidese konfiguratsioonifail /etc/systemd/network/25-wlp6s0.network ja lisage jaotise lõppu Route.
Pärast taaskäivitamist või taaskäivitamist on teil teine pääsupunkt, mis suunab hosti ja LAN-seadmed SOCKS-i.
Selline näeb välja väljund ip a tavaline sülearvuti:
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
Selle tulemusena
Pakkuja näeb ainult krüptitud ühendust teie SOCKS-serveriga, mis tähendab, et nad ei näe midagi.
Siiski näeb see teie NTP-päringuid, selle vältimiseks eemaldage NTP-serverite staatilised marsruudid. Siiski pole kindel, et teie SOCKS-server lubab NTP-protokolli.
Kark märgati Debain 10 peal
Kui proovite võrguteenust konsoolist taaskäivitada, ebaõnnestub see veaga. Selle põhjuseks on asjaolu, et osa sellest virtuaalse liidese kujul on seotud teenusega tun2socks, mis tähendab, et seda kasutatakse. Võrguteenuse taaskäivitamiseks peate esmalt peatama teenuse tun2socks. Aga ma arvan, et kui loete lõpuni, pole see teie jaoks kindlasti probleem!