Ehitatakse SOCKS marsruuter sĂŒlearvutis, kus on Debian 10

Aasta (vĂ”i kaks) olen ma lĂŒkanud selle artikli avaldamist edasi peamiselt seetĂ”ttu, et olin juba avaldanud kaks artiklit, kus kirjeldasin, kuidas luua SOCKS-i marsruuterit tavalise Debianiga sĂŒlearvuti abil.

Kuid alates sellest ajast on stabiilne Debian versioon uuendatud Busteriks ja mulle on piisavalt inimesi isiklikult kirjutanud palvega aidata seadistamisega, seega ei ole mu varasemad artiklid ammendavad. Jah, ma ka arvasin, et meetodid, mida neis kirjeldatakse, ei avalda kĂ”ikvĂ”imalikke nĂŒansse Linuxi seadistamiseks SOCKS-i marsruutimiseks. Pealegi on need kirjutatud Debian Stretchi jaoks, ja pĂ€rast uuendamist Busterisse mĂ€rkasin ma systemd-i initsialiseerimissĂŒsteemis vĂ€ikeseid muutusi teenuste koostöös. Samuti ei kasutanud ma artiklites systemd-networkd-d, kuigi see sobib kĂ”ige paremini keerukate vĂ”rgu konfiguratsioonide jaoks.

Lisaks eeltoodud muudatustele on minu konfiguratsiooni lisatud sellised teenused nagu hostapd — punktide virtualiseerimise teenus, ntp kohaliku vĂ”rgu klientide aja sĂŒnkroonimiseks. dnscrypt-proxy ĂŒhenduste krĂŒpteerimiseks DNS-protokolli ja reklaamide blokeerimiseks kohaliku vĂ”rgu klientidel, samuti nagu juba mainisin, systemd-networkd vĂ”rgu liidestega konfigureerimiseks.

Siin on kÔige lihtsam plaan selle marsruuteri sisemisest seadistusest.

Ehitatakse SOCKS marsruuter sĂŒlearvutis, kus on Debian 10

Seega, tuletan meelde, millised eesmÀrgid on nende artiklite seerial:

  1. Marsruutida kĂ”ik operatsioonisĂŒsteemi ĂŒhendused SOCKS-i, samuti kĂ”ikide seadmete ĂŒhendused, mis on samas vĂ”rgus sĂŒlearvutiga.
  2. Mu sĂŒlearvuti peab olema tĂ€ielikult mobiilne. See tĂ€hendab, et see peab vĂ”imaldama töölauakeskkonna kasutamist ja mitte olema seotud fĂŒĂŒsilise asukohaga.
  3. Viimane punkt eeldab, et ĂŒhendus ja marsruutimine toimub ainult sisseehitatud traadita liidese kaudu.
  4. Ja loomulikult loon tÀieliku juhendi ning kÀsitleme vastavaid tehnoloogiaid minu tagasihoidlike teadmiste ulatuses.

Mida arutame sel artiklis:

  1. git — laeme alla projektide repod tun2socks, mis on vajalik TCP liikluse marsruutimiseks SOCKS-i, ja create_ap — skripti virtuaalse ligipÀÀsupunkti seadistamise automatiseerimiseks hostapd.
  2. tun2socks — ehitame ja installime systemd teenuse sĂŒsteemi.
  3. systemd-networkd — seadistame traadita ja virtuaalsed liidesed, staatilise marsruudifaili tabelid ja pakettide suunamise.
  4. create_ap — paigaldame systemd teenuse sĂŒsteemi, seadistame ja kĂ€ivitame virtuaalse juurdepÀÀsupunkti.

Valikulised sammud:

  • ntp — paigaldame ja seadistame serveri ajasĂŒnkroniseerimiseks virtuaalse juurdepÀÀsupunkti klientides.
  • dnscrypt-proxy — krĂŒpteerime DNS pĂ€ringud, marsruutime need SOCKS-i ja keelame reklaamide domeenid kohalikus vĂ”rgus.

Miks kÔik see?

See on ĂŒks viis, kuidas organiseerida TCP ĂŒhenduste kaitset kohaliku vĂ”rgu sees. Peamine eelis on see, et kĂ”ik ĂŒhendused lĂ€hevad SOCKS-i, kui neile pole loodud staatilist marsruuti originaalvĂ€rava kaudu. See tĂ€hendab, et SOCKS-serveri seadistusi ei pea eraldi programmeerima ega kohalikus vĂ”rgus klientidele mÀÀrama — kĂ”ik lĂ€hevad vaikimisi SOCKS-i, kuna see on vaikimisi vĂ€rav, kuni me mÀÀrame vastupidise.

PĂ”himĂ”tteliselt lisame originaalruuteri ette teise krĂŒpteeritud ruuteri, kasutades originaalruuteri Interneti-ĂŒhendust, et edastada krĂŒpteeritud SOCKS-pĂ€ringud, mis tulevad sĂŒlearvutist. SeejĂ€rel suunab sĂŒlearvuti ja krĂŒpteerib kohaliku vĂ”rgu klientide pĂ€ringud.

Teenusepakkuja vaatenurgast oleme pidevalt ĂŒhendatud ĂŒhe serveriga, kus on krĂŒpteeritud liiklus.

SeetĂ”ttu ĂŒhenduvad kĂ”ik seadmed sĂŒlearvuti virtuaalsele juurdepÀÀsupunktile.

Installige sĂŒsteemi tun2socks

Nii kaua, kui 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 eraldi kaust ehitamiseks

mkdir badvpn-build

Liikuge sinna

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 deaktiveerib kĂ”ikide badvpn hoidla komponentide kogumise.
  • —DBUILD_TUN2SOCKS=1 kĂ€sitletakse kogumist tun2socks.
  • make install — installib binaarfaili tun2socks teie sĂŒsteemi aadressile /usr/local/bin/badvpn-tun2socks.

Installige tun2socks teenus systemd-s

Looge fail /etc/systemd/system/tun2socks.service jÀrgnevate sisu kujul:

[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 — vastab virtuaalse liidese nime, mille me initsialiseerime systemd-networkd kaudu.
  • --netif-ipaddr — vĂ”rgu aadress "marsruuter" tun2socks, millega virtuaalne liides ĂŒhendub. Parim on teha see eraldi reserveeritud alamsĂŒsteem.
  • --socks-server-addr — vastab soketile (aadress:port SOCKS server).

Kui teie SOCKS server nÔuab autentimist, saate mÀÀrata parameetrid --username ja --password.

SeejÀrel registreerige teenus

systemctl daemon-reload

Ja lubage

systemctl enable tun2socks

Enne teenuse kÀivitamist tagame selle virtuaalse vÔrgu liidesega.

Liigume ĂŒle systemd-networkd-le

Luba systemd-networkd:

systemctl enable systemd-networkd

Keerame vÀlja olemasolevad vÔrgu teenused.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-wait-online — see on teenus, mis ootab aktiivse vĂ”rguĂŒhenduse olemasolu, enne kui systemd jĂ€tkab teiste teenuste kĂ€ivitamist, mis sĂ”ltuvad vĂ”rgu olemasolust. Me lĂŒkkame selle vĂ€lja, kuna liigume ĂŒle systemd-networkd analoogile.

LĂ€heme kohe selle peale:

systemctl enable systemd-networkd-wait-online

Seadistage traadita vÔrgu liides

Looge systemd-networkd konfiguratsioonifail traadita vÔrgu liidese jaoks /etc/systemd/network/25-wlp6s0.network.

[Match]
Nimi=wlp6s0

[VÔrk]
Aadress=192.168.1.2/24
IPForward=yes
  • Nimi — see on teie traadita liidese nimi. Identifitseerige see kĂ€suga ip a.
  • IPForward — direktiiv, mis lubab paketide suunamist vĂ”rguliideses.
  • Address vastutab IP-aadressi mÀÀramise eest traadita liidesele. MÀÀrame selle staatiliselt, kuna ekvivalentne direktiiv DHCP=yes, systemd-networkd loob sĂŒsteemisse vaikimisi vĂ€rava. Sellisel juhul suundub kogu liiklus originaalsesse vĂ€ravasse, mitte tulevasse virtuaalsesse liidesesse erinevas alamvĂ”rgus. Saate kontrollida praegust vaikimisi vĂ€ravat kĂ€suga ip r

Looge staatiline marsruut eemalserveri SOCKS jaoks

Kui teie SOCKS server ei ole kohalik, vaid eemal, peate selle jaoks looma staatilise marsruudi. Selleks lisage sektsioon Route teie loodud traadita liidese konfiguratsioonifaili lÔppu jÀrgmise sisuga:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — see on vaikimisi vĂ€rav vĂ”i teie originaalse ligipÀÀsupunkti aadress.
  • Destination — SOCKS serveri aadress.

Konfigureerige wpa_supplicant systemd-networkd jaoks

systemd-networkd kasutab wpa_supplicant'i kaitstud pÀÀsupunktiga ĂŒhendamiseks. Kui proovite juhtida 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 seda teenust teie sĂŒsteemis ei ole.

Seega looge see kÀsuga:

systemctl enable wpa_supplicant@wlp6s0

Ma kasutasin wlp6s0 oma traadita liidese nimeks. Teie nimi vÔib erineda. Saate seda teada kÀsuga ip l.

NĂŒĂŒd kĂ€ivitatav teenus wpa_supplicant@wlp6s0 hakkab kĂ€ivituma, kui traadita liidest juhitakse, kuid see omakorda otsib SSID ja pÀÀsupunkti parooli seadet faili /etc/wpa_supplicant/wpa_supplicant-wlp6s0. SeetĂ”ttu tuleb see luua utiliidi wpa_passphrase.

abil. Selleks tÀitke kÀsk:

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

kus SSID — see on teie pÀÀsupunkti nimi, password — parool, ja wlp6s0 — see on teie traadita liides.

Algatage virtuaalne liides tun2socks jaoks

Looge fail uue virtuaalse liidese algatamiseks sĂŒsteemis/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Nimi — see on nimi, mille systemd-networkd mÀÀrab tulevasele virtuaalsele liidesele selle initsialiseerimise ajal.
  • TĂŒĂŒp — see on virtuaalse liidese tĂŒĂŒp. Nime 'tun2socks' pĂ”hjal vĂ”ite arvata, et see kasutab tĂŒĂŒpi tun.
  • netdev — need on faililaiendid, mida systemd-networkd kasutatakse virtuaalsete vĂ”rguliideste initsialiseerimiseks. Nende liideste aadress ja muud vĂ”rguseaded mÀÀratakse .vĂ”rk-failides.

Looge selline fail /etc/systemd/network/25-tun2socks.network jÀrgnevate sisu kujul:

[Match]
Nimi=tun2socks

[VÔrk]
Aadress=172.16.1.2/24
LĂŒĂŒs=172.16.1.1
  • Nimi — virtuaalse liidese nimi, mille mÀÀrasite netdev-failis.
  • Address — IP-aadress, mis mÀÀratakse virtuaalsele liidesele. Peab olema samas vĂ”rgus aadressiga, mille mÀÀrasite service tun2socks
  • Gateway — IP-aadress "marsruutijale" tun2socks, mille mÀÀrasite systemd teenuse loomisel.

Nii on liidesel tun2socks aadress 172.16.1.2, ja teenus tun2socks — 172.16.1.1, mis on kĂ”igiĂŒhenduste jaoks virtuaalsest liidesest.

Konfigureerige virtuaalne juurdepÀÀsupunkt

Installige sÔltuvused:

apt install util-linux procps hostapd iw haveged

Kloonige repo create_ap oma masinasse:

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

Minge oma masina repode kausta:

cd create_ap

Installige sĂŒsteemi:

make install

Teie sĂŒsteemis kuvatakse konfiguratsioon /etc/create_ap.conf. Siin on peamised redigeerimisvĂ”imalused:

  • GATEWAY=10.0.0.1 — on parem teha eraldi reserveeritud alamhulk.
  • NO_DNS=1 — lĂŒlitage vĂ€lja, kuna seda parameetrit haldab virtuaalne liides systemd-networkd.
  • NO_DNSMASQ=1 — lĂŒlitage vĂ€lja samal pĂ”hjusel.
  • WIFI_IFACE=wlp6s0 — sĂŒlearvuti traadita liides.
  • INTERNET_IFACE=tun2socks — virtuaalne liides, mis on loodud tun2socks jaoks.
  • SSID=hostapd — virtuaalse juurdepÀÀsupunkti nimi.
  • PASSPHRASE=12345678 — parool.

Ärge unustage teenust kĂ€ivitada:

systemctl enable create_ap

KĂ€ivitage DHCP server systemd-networkd-s

Teenuseks create_ap initseerib sĂŒsteemis virtuaalse liidese ap0. Eeldatavasti on dnsmasq sellel liidesel, kuid miks installida tarbetuid teenuseid, kui systemd-networkd sisaldab sisseehitatud DHCP-serverit?

Selle aktiveerimiseks mÀÀrake virtuaalse punkti vÔrguseaded. Selleks looge fail /etc/systemd/network/25-ap0.network jÀrgnevate sisu kujul:

[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 initseerib virtuaalse liidese ap0, mÀÀrab systemd-networkd sellele automaatselt IP-aadressi ja kÀivitab DHCP serveri.

Read EmitDNS=yes ja DNS=10.0.0.1 edastavad DNS serveri seaded punktiga ĂŒhendatud seadmetele.

Kui te ei plaani kasutada kohalikke DNS-servereid — minu puhul dnscrypt-proxy — vĂ”ite paigaldada DNS=10.0.0.1 ĂŒhes DNS=192.168.1.1, kus 192.168.1.1 — teie originaalse marsruutija aadress. Sellisel juhul saadetakse teie hosti ja kohalikest vĂ”rkudest pĂ€ringud DNS serverite kaudu edastamata, lĂ€bi teenusepakkuja serverite.

EmitNTP=yes ja NTP=192.168.1.1 edastavad NTP seadistusi.

Sama kehtib ka rea kohta NTP=10.0.0.1.

Paigaldage ja seadistage NTP-server

Installige sĂŒsteemi:

apt install ntp

Korrigeerige konfiguratsiooni /etc/ntp.conf. Kommenteerige vĂ€lja ŃŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚sete poolt adressi:

#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 aadresse, nÀiteks Google Public NTP:

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

Pakkuge serverile juurdepÀÀs teie vÔrgu klientidele:

restrict 10.0.0.0 mask 255.255.255.0

LĂŒlitage edastus oma vĂ”rku:

broadcast 10.0.0.255

LÔpuks lisage nende serverite aadresse staatilise marsruutimise tabelisse. Selleks avage juhtseadmise konfiguratsioonifail /etc/systemd/network/25-wlp6s0.network ja lisage sektsiooni 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

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

host time1.google.com

Installige dnscrypt-proxy, eemaldage reklaam ja varjage DNS-i liiklust teenusepakkuja eest

apt install dnscrypt-proxy

Kohanemiseks DNS-pÀringute jaoks hosti ja kohaliku vÔrgu, muuda soket /lib/systemd/system/dnscrypt-proxy.socket. Muuda jÀrgmisi ridu:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

TaaskÀivitage systemd:

systemctl daemon-reload

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

server_names = ['adguard-dns']

Kuna suunata dnscrypt-proxy ĂŒhendused tun2socks kaudu, lisage allpool:

force_tcp = true

Korrigeerige konfiguratsiooni /etc/resolv.conf, mis teavitab DNS-serverit hostist.

nameserver 127.0.0.1
nameserver 192.168.1.1

Esimene rida sisaldab dnscrypt-proxy kasutamist, teine - kasutab originaalset ĂŒhendust, juhul kui dnscrypt-proxy server ei ole saadaval.

Valmis!

TaaskÀivitage vÔi peatage aktiivsed vÔrguteenused:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ja kÀivitage kÔik vajalikud:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

PÀrast taaskÀivitamist vÔi uuesti laadimist on teil teine juurdepÀÀsupunkt, mis marsruutib hosti ja kohaliku vÔrgu seadmed SOCKS-i kaudu.

Nii nĂ€eb vĂ€lja tavapĂ€rase sĂŒlearvuti vĂ€ljund: ip a tavaline sĂŒlearvuti:

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

In conclusion,

  1. Teenusepakkuja nĂ€eb ainult teie SOCKS-serverile suunatud krĂŒpteeritud ĂŒhendust, seega ei nĂ€e ta midagi.
  2. Siiski nÀeb see teie NTP-pÀringuid. Selle vÀltimiseks eemaldage staatilised marsruudid NTP-serverite jaoks. Siiski ei ole kindel, et teie SOCKS-server lubab NTP-protokolli.

Kiirparandus, tÀheldatud Debian 10-s

Kui proovite vÔrgu teenust konsoolist uuesti kÀivitada, siis see kukub kokku veaga. See on seotud sellega, et selle osa virtuaalsest liidesest on seotud tun2socks teenusega ning seetÔttu on see kasutuses. Enne vÔrgu teenuse uuesti kÀivitamist tuleb kÔigepealt peatada tun2socks teenus. Kuid arvan, et kui te lugesite lÔpuni, pole see teile kindlasti probleem!

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 NAT-itud vÔi sillatud WiFi juurdepÀÀsupunkti.
  5. dnscrypt-proxy 2 - paindlik DNS-proxy, toetades krĂŒpteeritud DNS-protokolle.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster