Ruuteri ehitamine Debian 10-ga sülearvutis SOCKSis

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.

Ruuteri ehitamine Debian 10-ga sülearvutis SOCKSis

Niisiis, lubage mul teile meelde tuletada, millised on selle artiklite sarja eesmärgid:

  1. Suunake kõik OS-i ühendused SOCKS-i, samuti kõigi sülearvutiga samas võrgus olevate seadmete ühendused.
  2. 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.
  3. Viimane punkt hõlmab ühendust ja marsruutimist ainult sisseehitatud traadita liidese kaudu.
  4. No ja muidugi põhjaliku juhendi koostamine, samuti asjakohaste tehnoloogiate analüüs minu parimate teadmiste kohaselt.

Mida selles artiklis käsitletakse:

  1. git — laadige alla projektihoidlad tun2sokidvajalik TCP-liikluse suunamiseks SOCKS-i ja loo_ap — skript virtuaalse pääsupunkti seadistamise automatiseerimiseks hostapd.
  2. tun2sokid — luua ja installida süsteemi teenus.
  3. systemd-networkd — konfigureerida traadita ja virtuaalseid liideseid, staatilisi marsruutimistabeleid ja pakettide ümbersuunamist.
  4. 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

mkdir badvpn-build

Mine selle juurde

cd badvpn-build

Koguge tun2socks

cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1

Installige süsteemi

make install
  • Parameeter -DBUILD_NOTHING_BY_DEFAULT=1 keelab kõigi badvpn-hoidla komponentide ehitamise.
  • -DBUILD_TUN2SOCKS=1 sisaldab koostu komponenti tun2sokid.
  • make install — installib binaarfaili tun2socks teie süsteemi aadressil /usr/local/bin/badvpn-tun2socks.

Installige süsteemis tun2socks teenus

Looge fail /etc/systemd/system/tun2socks.service järgmise sisuga:

[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 - võtab selle virtuaalse liidese nime, mille initsialiseerime süsteemiga systemd-networkd.
  • --netif-ipaddr — tun2socks ruuteri võrguaadress, millega virtuaalne liides on ühendatud. Parem on see eraldi teha reserveeritud alamvõrk.
  • --socks-server-addr - aktsepteerib pistikupesa (адрес:порт SOCKS serverid).

Kui teie SOCKS-server nõuab autentimist, saate määrata parameetrid --username и --password.

Järgmisena registreerige teenus

systemctl daemon-reload

Ja lülitage see sisse

systemctl enable tun2socks

Enne teenuse käivitamist pakume sellele virtuaalse võrguliidese.

Lülitumine süsteemile systemd-networkd

Me kaasame systemd-networkd:

systemctl enable systemd-networkd

Keela praegused võrguteenused.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • 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.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • 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.

Selleks käivitage käsk:

wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.conf

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:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • 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:

[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

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.

Sama kehtib ka liini kohta NTP=10.0.0.1.

Installige ja konfigureerige NTP-server

Installige süsteemi:

apt install ntp

Muutke konfiguratsiooni /etc/ntp.conf. Kommenteerige standardsete kogumite aadresse:

#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

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.

[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.12

Utiliidi abil saate teada oma NTP-serverite aadressid host järgmiselt:

host time1.google.com

Installige dnscrypt-puhverserver, eemaldage reklaamid ja peitke DNS-liiklus oma teenusepakkuja eest

apt install dnscrypt-proxy

Hosti ja kohaliku võrgu DNS-päringute teenindamiseks muutke pesa /lib/systemd/system/dnscrypt-proxy.socket. Muutke järgmisi ridu:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Taaskäivita systemd:

systemctl daemon-reload

Muutke konfiguratsiooni /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

dnscrypt-puhverserveri ühenduste suunamiseks tun2socksi kaudu lisage allpool:

force_tcp = true

Muutke konfiguratsiooni /etc/resolv.conf, mis ütleb DNS-serverile hostile.

nameserver 127.0.0.1
nameserver 192.168.1.1

Esimene rida võimaldab kasutada dnscrypt-puhverserverit, teine ​​rida kasutab algset lüüsi juhuks, kui dnscrypt-puhverserver pole saadaval.

Valmis!

Taaskäivitage või peatage võrguteenuste käitamine:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ja taaskäivitage kõik vajalik:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

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

  1. Pakkuja näeb ainult krüptitud ühendust teie SOCKS-serveriga, mis tähendab, et nad ei näe midagi.
  2. 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!

Viited

  1. Staatiline marsruutimine Linuxis – IBM
  2. systemd-networkd.service – Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: see skript loob NAT-i või sillatud WiFi-pääsupunkti.
  5. dnscrypt-proxy 2 – paindlik DNS-puhverserver, mis toetab krüptitud DNS-protokolle.

Allikas: www.habr.com