Ehitusme riuter SOCKS-i oma sülearvutis Debian 10-ga

Kogu aasta (või kaks) ma olen lükanud selle artikli avaldamist edasi peamiselt seetõttu, et olen juba avaldanud kaks artiklit, kus kirjeldasin tavalise sülearvuti muutmist SOCKS marsruuteriks, kasutades Debianit.

Kuid selle ajaga on Debian stabiilne versioon uuendatud Busteriks, piisavalt palju inimesi on otse minuga pöördunud palvega aidata seadistamisel, mis tähendab, et minu varasemad artiklid ei ole ammendavad. Mul oli endal ka aimdus, et neis esitatud meetodid ei paljasta kõiki Linuxi seadistamise keerukusi SOCKS-i marsruuteriks tegemiseks. Veelgi enam, need on kirjutatud Debian Stretchi jaoks ning pärast uuendamist Busteriks olen süsteemi initsialiseerimises systemd märganud mõningaid muudatusi teenuste omavahelises suhtlemises. Samuti ei kasutanud ma oma artiklites systemd-networkd, kuigi see sobib kõige paremini keerukate võrgu konfiguratsioonide jaoks.

Lisaks ülaltoodud muudatustele on minu konfiguratsiooni lisatud järgmised teenused: hostapd — juurdepääsupunkti virtualiseerimise teenus, ntp kohalikus võrgus klientide ajasünkroniseerimiseks, dnscrypt-proxy ühenduste krüpteerimiseks DNS-protokolli kaudu ja reklaamide blokeerimiseks kohalike klientide seas ning nagu ma varem mainisin, systemd-networkd võrgu liideste konfigureerimiseks.

Siin on lihtne plokkdiagramm sellise marsruuteri siseehitusest.

Ehitusme riuter SOCKS-i oma sülearvutis Debian 10-ga

Kordaksin, milliseid eesmärke kätkeb see artiklite tsükkel:

  1. Marsruutida SOCKS-i kõik operatsioonisüsteemi ühendused ja kõik seadmete ühendused, mis asuvad sülearvuti samas võrgus.
  2. Minu puhul peab sülearvuti jääma täiesti mobiilseks. See tähendab, et peab olema võimalik kasutada töölauakeskkonda ning mitte olla seotud füüsilise asukohaga.
  3. Viimane punkt eeldab, et ühendus ja marsruutimine toimuvad ainult sisse ehitatud traadita liidese kaudu.
  4. Ja muidugi luua ammendav juhend ning arutada vastavaid tehnoloogiaid minu tagasihoidlike teadmiste piires.

Millest käesolevas artiklis räägitakse:

  1. git — alla laadime projektide repod tun2socks, vajalikud TCP liikluse marsruutimiseks SOCKS-iga ja create_ap — skript virtuaalse juurdepääsupunkti seadistamise automatiseerimiseks hostapd.
  2. tun2socks — loome ja installime systemd teenuse süsteemi.
  3. systemd-networkd — seadistame traadita ja virtuaalsed liidesed, staatiliste marsruutimislaudade ning pakettide edasisaatmise.
  4. create_ap — paigaldame systemd teenuse süsteemi, konfigureerime ja käivitame virtuaalse juurdepääsupunkti.

Valikulise sammud:

  • ntp — paigaldame ja konfigureerime serveri, et sünkroniseerida aega virtuaalse juurdepääsupunkti klientidele.
  • dnscrypt-proxy — krüpteerime DNS-päringud, suunatakse need SOCKS-isse ja blokeerime reklaamdomeenid kohaliku võrgu jaoks.

Miks see kõik on vajalik?

See on üks viis, kuidas korraldada TCP-ühenduste kaitset kohaliku võrgu sees. Peamine eelis on see, et kõik ühendused suunatakse SOCKS-isse, kui nende jaoks pole seadistatud staatilist marsruuti originaali värava kaudu. See tähendab, et SOCKS-serveri seadeid ei pea määrama ühelelegi eraldi programmile ega klientidele kohalikus võrgus — kõik lähevad vaikimisi SOCKS-i kaudu, kuna see on vaikimisi värav, kuni me ei määra vastupidist.

Sisuliselt lisame teise krüpteerimise ruuteri nagu sülearvuti originaalse ruuteri ette ja kasutame originaalse ruuteri Interneti-ühendust juba krüpteeritud SOCKS-päringute jaoks, mida sülearvuti omakorda marsruutib ja krüpteerib kohaliku võrgu klientide päringud.

Teenusepakkuja vaatepunktist oleme pidevalt ühendatud ühe serveriga, millel on krüpteeritud liiklus.

Seega ühinevad kõik seadmed sülearvuti virtuaalse juurdepääsupunktiga.

Paigaldage süsteemi tun2socks

Kuni teie masinas on internet, laadige alla kõik vajalikud tööriistad.

apt update
apt install git make cmake

Laadige alla badvpn pakk

git clone https://github.com/ambrop72/badvpn

Teie süsteemis ilmub kaust badvpn. Looge eraldi kaust koostamiseks

mkdir badvpn-build

Mine sellesse kausta

cd badvpn-build

Koguge kokku tun2socks

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

Paigaldage süsteemi

make install
  • Parameeter -DBUILD_NOTHING_BY_DEFAULT=1 kustutab kõik badvpn hoidla komponendid.
  • DBUILD_TUN2SOCKS=1 lülitab koostamisse komponendi tun2socks.
  • make install — paigaldab binaart faili tun2socks teie süsteemi aadressile /usr/local/bin/badvpn-tun2socks.

Paigaldage süsteemi tun2socks teenus systemd-sse

Looge fail /etc/systemd/system/tun2socks.service järjgnevate 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 virtuaalse liidese nime, mille me algatame systemd-networkd abil.
  • --netif-ipaddr — liikmena "ruuteri" aadress, millele tun2socks virtuaalne liides liitub. Parim on teha sellest eraldi reserveeritud alamvõrk..
  • --socks-server-addr — võtab socket'i (aadress:port SOCKS server).

Kui teie SOCKS server nõuab autentimist, võite määrata parameetrid --username ja --password.

Edasi registreerige teenus

systemctl daemon-reload

Ja aktiveerige

systemctl enable tun2socks

Enne teenuse käivitamist, varustame selle virtuaalse võrgu liidesega.

Liigume systemd-networkd peale

Lülitame sisse systemd-networkd:

systemctl enable systemd-networkd

Keelame praegused võrgu teenused.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-wait-online — see on teenus, mis ootab töötava võrguühenduse olemasolu enne, kui systemd jätkab teiste teenuste käivitamist, mis sõltuvad võrgu olemasolust. Me keelame selle, kuna liigume systemd-networkd peale.

Lähme ja aktiveerime selle kohe:

systemctl enable systemd-networkd-wait-online

Konfigureerige traadita võrgu liides

Looge systemd-networkd konfigureerimisfail traadita võrgu liidese jaoks /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • Nimi — see on teie traadita liidese nimi. Tuvastage see käsuga Seega tuleb see IP-aadress lisada seansside seadistustesse.
  • IPForward — direktiiv, mis lubab pakettide edastamise võrgu liideses.
  • Address vastutab traadita liidese IP-aadressi määramise eest. Me määrame selle staatiliselt, sest ekvivalentne direktiiv DHCP=yes, systemd-networkd loob süsteemis vaikevärava. Siis läheb kogu liiklus läbi originaalse värava, mitte tulevase virtuaalse liidese teises alamvõrgus. Praegust vaikeväravat saate kontrollida käsuga ip r

Looge staatiline marsruut SOCKS-teenusele

Kui teie SOCKS server pole kohalik, vaid eemal, siis peate looma selle jaoks staatilise marsruudi. Selleks lisage lõppu sektsioon Route oma loodud traadita liidese konfigureerimisfaili järgmise sisuga:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — see on vaikevärav või teie originaalse juurdepääsupunkti aadress.
  • Sihtkoht — SOCKS serveri aadress.

Konfigureerige wpa_supplicant systemd-networkd jaoks

systemd-networkd kasutab wpa_supplicant'i kaitstud juurdepääsupunktiga ühendamiseks. Kui proovite „aktiveerida” traadita liidest, käivitab systemd-networkd teenuse wpa_supplicant@nimi, kus nimi — see on traadita liidese nimi. Kui te pole varem systemd-networkd-d kasutanud, siis tõenäoliselt pole see teenus teie süsteemis olemas.

Seega looge see käsuga:

systemctl enable wpa_supplicant@wlp6s0

Olen kasutanud wlp6s0 nimeks oma traadita liidesena. Selle nimi võib teil erineda. Saate seda tuvastada käsuga ip l.

Nüüd on loodud teenus wpa_supplicant@wlp6s0 käivitub, kui traadita liides on "üles tõstetud", kuid see otsib omakorda SSID ja parooli seadistusi pääsupunkti failist /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Seetõttu on vaja see luua utiliidi abil wpa_passphrase.

Selleks kasutage käsku:

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

kus SSID on teie pääsupunkti nimi, password - parool ja wlp6s0 on teie traadita liidese nimi.

Algatage virtuaalne liides tun2socks jaoks

Looge fail, et algatada uut virtuaalset liidest süsteemis/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Nimi on nimi, mille systemd-networkd omistab tulevasele virtuaalsele liidesele selle algatamisel.
  • Kind on virtuaalse liidese tüüp. Nime põhjal tun2socks teenuse järgi võite arvata, et see kasutab tüübi liidest tun.
  • netdev on faililaiend, mida systemd-networkd kasutatakse virtuaalsete võrgu liideste algatamiseks. Aadress ja muud võrgu seadistused nende liideste jaoks on määratletud .network-failides.

Looge selline fail /etc/systemd/network/25-tun2socks.network järjgnevate sisuga:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Nimi on virtuaalse liidese nimi, mille määrasite netdev-failis.
  • Address on IP-aadress, mis määratakse virtuaalsele liidesele. Peab olema samas võrgus aadressiga, mille määrasite tun2socks teenuses
  • Gateway on "ruuteri" IP-aadress tun2socks, mille määrasite systemd teenuse loomisel.

Seega on liidesel tun2socks aadress 172.16.1.2, ja teenus tun2socks172.16.1.1, st on kõikide ühenduste jaoks virtuaalsest liidesest värav.

Konfigureerige virtuaalne pääsupunkt

Installige sõltuvused:

apt install util-linux procps hostapd iw haveged

Laadige hoidla create_ap oma masinasse:

git clone https://github.com/oblique/create_ap

Minema hoidla kausta oma masinas:

cd create_ap

Installige süsteemi:

make install

Teie süsteemis ilmub konfiguratsioon /etc/create_ap.conf. Siin on peamised valikud redigeerimiseks:

  • GATEWAY=10.0.0.1 on parem teha eraldi reserveeritud alamvõrguna.
  • NO_DNS=1 on välja lülitatud, kuna seda parameetrit haldab virtuaalne liides systemd-networkd.
  • NO_DNSMASQ=1 on välja lülitatud samal põhjusel.
  • WIFI_IFACE=wlp6s0 on sülearvuti traadita liides.
  • INTERNET_IFACE=tun2socks on virtuaalne liides, mis on loodud tun2socks jaoks.
  • SSID=hostapd on virtuaalse pääsupunkti nimi.
  • PASSPHRASE=12345678 on parool.

Ärge unustage teenust käivitada:

systemctl enable create_ap

Käitage DHCP serverit systemd-networkd-s

Teenuse create_ap algatab süsteemis virtuaalse liidese ap0Idee järgi on sellel liidesel "riputatuna" dnsmasq, kuid miks installeerida liigsed teenused, kui systemd-networkd sisaldab sisseehitatud DHCP serverit?

Selle aktiveerimiseks määrame virtuaalse punkti võrguseaded. Selleks looge fail /etc/systemd/network/25-ap0.network järjgnevate 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 automaatselt sellele IP-aadressi ja aktiveerib DHCP serveri.

Read EmitDNS=yes ja DNS=10.0.0.1 edastavad DNS serveri seaded seadmetele, mis on ühendatud juurdepääsupunktiga.

Kui te ei kavatse kasutada kohalikku DNS serverit — minu puhul on see dnscrypt-proxy — võite seada DNS=10.0.0.1 ja DNS=192.168.1.1, kus 192.168.1.1 — teie originaalsuleta. Siis edastatakse teie hosti ja kohaliku võrgu DNS päringud krüpteerimata läbi teenusepakkujate serverite.

EmitNTP=yes ja NTP=192.168.1.1 edastavad NTP seaded.

Sama kehtib rea kohta NTP=10.0.0.1.

Installige ja seadistage NTP server

Installige süsteemi:

apt install ntp

Muuda konfiguratsiooni /etc/ntp.conf. Kommenteerige välja vaikimisi serveri aadressid:

#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 avalike serverite aadressid, näiteks Google'i avalik NTP:

server time1.google.com iburst
server time2.google.com iburst
server time3.google.com iburst
server time4.google.com iburst

Pakkuge oma võrgu klientidele juurdepääs serverisse:

restrict 10.0.0.0 mask 255.255.255.0

Aktiveerige edastus oma võrku:

broadcast 10.0.0.255

Lõpuks lisage nende serverite aadressid staatilise marsruudi tabelisse. Selleks avage juhtmevaba liidese konfiguratsioonifail /etc/systemd/network/25-wlp6s0.network ja lisage lõppu sektsiooni 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

Saate teada oma NTP serverite aadresse, kasutades utiliiti host järgmiselt:

host time1.google.com

Installige dnscrypt-proxy, eemaldage reklaamid ja varjage DNS liiklus pakkuja eest

apt install dnscrypt-proxy

Kuna teenindada hosti ja kohaliku võrgu DNS päringuid, muutke socket'i /lib/systemd/system/dnscrypt-proxy.socket. Muuda järgmised read:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Taaskäivitage systemd:

systemctl daemon-reload

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

server_names = ['adguard-dns']

Kuna suunata dnscrypt-proxy ühendused läbi tun2socks, lisage alla:

force_tcp = true

Muuda konfiguratsiooni /etc/resolv.conf, mis ütleb DNS serverile hostist.

nameserver 127.0.0.1
nameserver 192.168.1.1

Esimene rida võimaldab dnscrypt-proxy kasutamist, teine ​​– kasutab originaalsuleta, kui dnscrypt-proxy server pole saadaval.

Valmis!

Taaskäivitage või peatage aktiivsed võrguteenused:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ja taaskäivitage kõik vajalikud:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Pärast taaskäivitamist või lähtestamist saate teise juurdepääsupunkti, mis suunab hosti ja kohaliku võrgu seadmed SOCKS-i.

Umbes nii välja näeb väljund Seega tuleb see IP-aadress lisada seansside seadistustesse tavalise sülearvuti kohta:

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

Kokkuvõttes

  1. Teenusepakkuja näeb ainult teie SOCKS-serverisse suunatud krüpteeritud ühendust, seega ei näe nad midagi.
  2. Kuid nad näevad teie NTP-päringuid, et seda vältida, eemaldage staatilised marsruudid NTP-serverite jaoks. Kuid pole kindel, kas teie SOCKS-server toetab NTP-protokolli.

Kohandamine, mida on märgatud Debian 10-s

Kui proovite võrgu teenust konsoolist taaskäivitada, kukub see viga. See on seotud sellega, et tema osa virtuaalsest liidesest on seotud teenusega tun2socks ja seega kasutatakse. Enne võrgu teenuse taaskäitamist tuleb kõigepealt peatada teenus tun2socks. Aga ma arvan, et kui olete lõpuni lugenud, ei ole see teile kindlasti probleem!

Viidatud lingid

  1. Staatiline marsruutimine Linuxis - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: See skript loob NATed või sillaga WiFi juurdepääsupunkti.
  5. dnscrypt-proxy 2 - Paindlik DNS-proxy, mis toetab krüpteeritud DNS-protokolle.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster