SOCKS-en bideratzailea eraikitzea ordenagailu eramangarri batean Debian 10-rekin

Urte oso batez (edo bi) artikulu hau argitaratzea atzeratu nuen arrazoi nagusiagatik: jada bi artikulu argitaratuak nituen, eta horietan SOCKS-en bideratzaile bat sortzeko prozesua deskribatzen nuen Debian-eko ordenagailu eramangarri arrunt batetik.

Hala ere, orduz geroztik Debian-en bertsio egonkorra Buster-era eguneratu da, jende kopuru nahikoa nirekin harremanetan jarri da modu pribatuan konfiguraziorako laguntza eskatuz, eta horrek esan nahi du nire aurreko artikuluak ez direla zehatzak. Beno, nik neuk asmatu dut haietan azaltzen diren metodoek ez dituztela guztiz agerian uzten Linux SOCKS-en bideratze-lanak konfiguratzeko dituen konplexutasun guztiak. Horrez gain, Debian Stretch-erako idatzita daude, eta Buster-era eguneratu ondoren, systemd init sisteman, aldaketa txikiak nabaritu ditut zerbitzuen elkarrekintzan. Eta artikuluetan bertan, ez nuen systemd-networkd erabili, sare konfigurazio konplexuetarako egokiena den arren.

Aurreko aldaketez gain, zerbitzu hauek gehitu ziren nire konfigurazioan: hostapd - sarbide puntu birtualizazio zerbitzua, ntp sare lokaleko bezeroen ordua sinkronizatzeko, dnscrypt-proxy konexioak DNS bidez enkriptatzeko eta sare lokaleko bezeroen publizitatea desgaitzeko, eta, gainera, lehen aipatu dudan bezala, systemd-networkd sareko interfazeak konfiguratzeko.

Hona hemen bideratzaile baten barne-egituraren bloke-diagrama sinple bat.

SOCKS-en bideratzailea eraikitzea ordenagailu eramangarri batean Debian 10-rekin

Beraz, gogorarazten dizut zeintzuk diren artikulu sorta honen helburuak:

  1. Bideratu OS konexio guztiak SOCKSera, baita ordenagailu eramangarriaren sare bereko gailu guztietako konexioak ere.
  2. Nire kasuan ordenagailu eramangarriak guztiz mugikorra izan beharko luke. Hau da, mahaigaineko ingurunea erabiltzeko eta kokapen fisiko bati lotuta ez egoteko aukera ematea.
  3. Azken puntuak hari gabeko interfaze integratuaren bidez soilik konektatzea eta bideratzea dakar.
  4. Beno, eta noski, gida integral bat sortzea, baita dagozkion teknologien azterketa ere nire ezagutza xumean.

Artikulu honetan landuko dena:

  1. git β€” Deskargatu proiektuen biltegiak tun2galtzerdiakbeharrezkoa da TCP trafikoa SOCKSera bideratzeko, eta sortu_ap β€” Sarbide-puntu birtual baten konfigurazioa automatizatzeko script bat erabiliz hostapd.
  2. tun2galtzerdiak β€” eraiki eta instalatu systemd zerbitzua sisteman.
  3. systemd-networkd β€” konfiguratu haririk gabeko interfazeak eta birtualak, bideratze-taula estatikoak eta paketeen birbideratzea.
  4. sortu_ap β€” instalatu systemd zerbitzua sisteman, konfiguratu eta abiarazi sarbide-puntu birtual bat.

Aukerako urratsak:

  • ntp β€” instalatu eta konfiguratu zerbitzari bat sarbide-puntu birtualeko bezeroetan denbora sinkronizatzeko.
  • dnscrypt-proxy β€” DNS eskaerak enkriptatuko ditugu, SOCKSera bideratuko ditugu eta sare lokalerako publizitate-domeinuak desgaituko ditugu.

Zertarako da hau guztia?

Hau da sare lokal batean TCP konexioak ziurtatzeko moduetako bat. Abantaila nagusia da konexio guztiak SOCKS-en egiten direla, jatorrizko atebidetik bide estatiko bat eraikitzen ez bada behintzat. Horrek esan nahi du ez dituzula SOCKS zerbitzariaren ezarpenak zehaztu behar ez programa indibidualentzat, ez sare lokaleko bezeroentzat; denak SOCKSera joaten dira lehenespenez, atebide lehenetsia baita kontrakoa adierazten dugun arte.

Funtsean, bigarren enkriptazio-bideratzaile bat gehitzen dugu ordenagailu eramangarri gisa jatorrizko bideratzailearen aurrean eta jatorrizko bideratzailearen Interneteko konexioa erabiltzen dugu ordenagailu eramangarriaren lehendik zifratutako SOCKS eskaerak egiteko, eta horrek LAN bezeroen eskaerak bideratzen eta enkriptatzen ditu.

Hornitzailearen ikuspuntutik, trafiko enkriptatutako zerbitzari batera etengabe konektatuta gaude.

Horren arabera, gailu guztiak ordenagailu eramangarriaren sarbide birtualera konektatuta daude.

Instalatu tun2socks sisteman

Zure makinak internet badu, deskargatu beharrezko tresna guztiak.

apt update
apt install git make cmake

Deskargatu badvpn paketea

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

Zure sisteman karpeta bat agertuko da badvpn. Sortu aparteko karpeta bat eraikitzeko

mkdir badvpn-build

Joan zaitez

cd badvpn-build

Bildu tun2socks

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

Instalatu sisteman

make install
  • Parametroa -DBUILD_NOTHING_BY_DEFAULT=1 badvpn biltegiaren osagai guztien eraikuntza desgaitzen du.
  • -DBUILD_TUN2SOCKS=1 osagai bat biltzen du muntaian tun2galtzerdiak.
  • make install β€” tun2socks bitarra zure sisteman instalatuko du hemen /usr/local/bin/badvpn-tun2socks.

Instalatu tun2socks zerbitzua systemd-en

Sortu fitxategi bat /etc/systemd/system/tun2socks.service eduki honekin:

[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 - systemd-networkd-rekin hasten dugun interfaze birtualaren izena hartzen du.
  • --netif-ipaddr β€” interfaze birtuala konektatuta dagoen tun2socks "bideratzailearen" sareko helbidea. Hobe da bereiztea azpisare erreserbatua.
  • --socks-server-addr - socket-a onartzen du (адрСс:ΠΏΠΎΡ€Ρ‚ SOCKS zerbitzariak).

Zure SOCKS zerbitzariak autentifikazioa behar badu, parametroak zehaztu ditzakezu --username ΠΈ --password.

Ondoren, erregistratu zerbitzua

systemctl daemon-reload

Eta piztu

systemctl enable tun2socks

Zerbitzua hasi aurretik, sare birtualaren interfaze bat emango diogu.

systemd-networkd-ra aldatzen

Barne hartzen ditugu systemd-networkd:

systemctl enable systemd-networkd

Desgaitu uneko sareko zerbitzuak.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • Network Manager-itxaron-online sistemak sare baten presentziaren araberako beste zerbitzu batzuk abiarazten jarraitu aurretik sare-konexio baten zain dagoen zerbitzu bat da. Systemd-networkd analogikora aldatzen ari garenean desgaitzen ari gara.

Gaitu dezagun berehala:

systemctl enable systemd-networkd-wait-online

Konfiguratu hari gabeko sareko interfazea

Sortu systemd-networkd konfigurazio-fitxategi bat hari gabeko sare-interfazerako /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • izena zure haririk gabeko interfazearen izena da. Identifikatu komandoarekin ip a.
  • IPForward - sareko interfaze batean paketeak birbideratzea ahalbidetzen duen zuzentaraua.
  • Helbidea hari gabeko interfazeari IP helbidea esleitzeaz arduratzen da. Estatikoki zehazten dugu zuzentarau baliokidearekin DHCP=yes, systemd-networkd-ek atebide lehenetsi bat sortzen du sisteman. Ondoren, trafiko guztia jatorrizko atebidetik igaroko da, eta ez etorkizuneko interfaze birtualetik beste azpisare batean. Uneko atebide lehenetsia egiaztatu dezakezu komandoarekin ip r

Sortu ibilbide estatiko bat urruneko SOCKS zerbitzariarentzat

Zure SOCKS zerbitzaria ez bada lokala, urrunekoa baizik, bide estatiko bat sortu behar duzu horretarako. Horretarako, gehitu atal bat Route ondorengo edukiarekin sortu duzun hari gabeko interfazearen konfigurazio fitxategiaren amaierara arte:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway β€” hau da atebide lehenetsia edo jatorrizko sarbide-puntuaren helbidea.
  • Destination β€” SOCKS zerbitzariaren helbidea.

Konfiguratu wpa_supplicant systemd-networkd-erako

systemd-networkd-ek wpa_supplicant erabiltzen du sarbide seguru batera konektatzeko. Haririk gabeko interfazea "goratzen" saiatzean, systemd-networkd-ek zerbitzua abiarazten du wpa_supplicant@имяNon izena haririk gabeko interfazearen izena da. Puntu honen aurretik systemd-networkd erabili ez baduzu, ziurrenik zerbitzu hau zure sisteman falta da.

Beraz, sortu komandoarekin:

systemctl enable wpa_supplicant@wlp6s0

erabili nuen wlp6s0 bere haririk gabeko interfazearen izena bezala. Zure izena ezberdina izan daiteke. Komandoarekin ezagutu dezakezu ip l.

Orain sortutako zerbitzua wpa_supplicant@wlp6s0 Hari gabeko interfazea "altxatzen denean" abiaraziko da, baina, aldi berean, sarbide-puntuaren SSID eta pasahitzaren ezarpenak bilatuko ditu fitxategian. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Hori dela eta, erabilgarritasuna erabiliz sortu behar duzu wpa_passphrase.

Horretarako, exekutatu komandoa:

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

non SSID zure sarbide-puntuaren izena da, pasahitza pasahitza da eta wlp6s0 β€” zure haririk gabeko interfazearen izena.

Hasieratu tun2socks-en interfaze birtuala

Sortu fitxategi bat sisteman interfaze birtual berri bat hasieratzeko/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • izena hasieratzen denean systemd-networkd-ek etorkizuneko interfaze birtualari esleituko dion izena da.
  • Child interfaze birtual mota bat da. tun2socks zerbitzuaren izenetik, asma dezakezu bezalako interfaze bat erabiltzen duela tun.
  • netdev fitxategien luzapena da systemd-networkd Sare birtualeko interfazeak hasieratzeko erabiltzen du. Interfaze hauen helbidea eta sareko beste ezarpen batzuk hemen zehazten dira .sarea-fitxategiak.

Sortu honelako fitxategi bat /etc/systemd/network/25-tun2socks.network eduki honekin:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name β€” zehaztu duzun interfaze birtualaren izena netdev-fitxategia.
  • Address β€” Interfaze birtualeri esleituko zaion IP helbidea. tun2socks zerbitzuan zehaztu duzun helbidearen sare berean egon behar du
  • Gateway β€” "Routerraren" IP helbidea tun2galtzerdiak, systemd zerbitzua sortzean zehaztu zenuena.

Beraz, interfazea tun2galtzerdiak helbidea du 172.16.1.2, eta zerbitzua tun2galtzerdiak - 172.16.1.1, hau da, interfaze birtualaren konexio guztien atea da.

Konfiguratu sarbide-puntu birtual bat

Instalatu menpekotasunak:

apt install util-linux procps hostapd iw haveged

Deskargatu biltegia sortu_ap zure autora:

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

Joan zure makinako biltegiaren karpetara:

cd create_ap

Instalatu sisteman:

make install

Zure sisteman konfigurazio bat agertuko da /etc/create_ap.conf. Hona hemen edizio aukera nagusiak:

  • GATEWAY=10.0.0.1 β€” Hobe da azpisare erreserbatutako bereizi bat egitea.
  • NO_DNS=1 - desgaitu, parametro hau systemd-networkd interfaze birtualak kudeatuko baitu.
  • NO_DNSMASQ=1 - itzali arrazoi beragatik.
  • WIFI_IFACE=wlp6s0 β€” Haririk gabeko interfaze eramangarria.
  • INTERNET_IFACE=tun2socks - tun2socksentzat sortutako interfaze birtuala.
  • SSID=hostapd β€” sarbide birtualaren izena.
  • PASSPHRASE=12345678 - pasahitza.

Ez ahaztu zerbitzua gaitzea:

systemctl enable create_ap

Gaitu DHCP zerbitzaria systemd-networkd-en

bulegoan create_ap sisteman interfaze birtual bat hasieratzen du ap0. Teorian, dnsmasq interfaze honetan zintzilikatzen da, baina zergatik instalatu zerbitzu gehigarriak systemd-networkd-ek DHCP zerbitzari bat badu?

Gaitzeko, puntu birtualaren sareko ezarpenak definituko ditugu. Horretarako, sortu fitxategi bat /etc/systemd/network/25-ap0.network eduki honekin:

[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

create_ap zerbitzuak interfaze birtuala hasieratu ondoren ap0, systemd-networkd-ek automatikoki IP helbide bat esleituko dio eta DHCP zerbitzaria gaitu.

Kateak EmitDNS=yes ΠΈ DNS=10.0.0.1 transmititu DNS zerbitzariaren ezarpenak sarbide-puntura konektatutako gailuetara.

DNS zerbitzari lokal bat erabiltzeko asmorik ez baduzu - nire kasuan dnscrypt-proxy da - instala dezakezu DNS=10.0.0.1 Π² DNS=192.168.1.1Non 192.168.1.1 β€” zure jatorrizko atebidearen helbidea. Ondoren, zure ostalariaren eta sare lokalaren DNS eskaerak zifratu gabe geratuko dira hornitzailearen zerbitzarien bidez.

EmitNTP=yes ΠΈ NTP=192.168.1.1 transferitu NTP ezarpenak.

Berdin gertatzen da lerroarekin NTP=10.0.0.1.

Instalatu eta konfiguratu NTP zerbitzaria

Instalatu sisteman:

apt install ntp

Editatu konfigurazioa /etc/ntp.conf. Komentatu igerileku estandarren helbideak:

#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

Gehitu zerbitzari publikoaren helbideak, adibidez Google Public NTP:

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

Eman zerbitzarirako sarbidea zure sareko bezeroei:

restrict 10.0.0.0 mask 255.255.255.0

Gaitu zure sarera igortzea:

broadcast 10.0.0.255

Azkenik, gehitu zerbitzari horien helbideak bideratze-taula estatikora. Horretarako, ireki haririk gabeko interfazearen konfigurazio fitxategia /etc/systemd/network/25-wlp6s0.network eta gehitu atalaren amaieran 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

Utilitatea erabiliz zure NTP zerbitzarien helbideak aurki ditzakezu host honela:

host time1.google.com

Instalatu dnscrypt-proxy, kendu iragarkiak eta ezkutatu DNS trafikoa zure hornitzailetik

apt install dnscrypt-proxy

Ostalari eta sare lokaleko DNS kontsultak hornitzeko, editatu socketa /lib/systemd/system/dnscrypt-proxy.socket. Aldatu lerro hauek:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Berriro hasi systemd:

systemctl daemon-reload

Editatu konfigurazioa /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Dnscrypt-proxy konexioak tun2socks bidez bideratzeko, gehitu behean:

force_tcp = true

Editatu konfigurazioa /etc/resolv.conf, DNS zerbitzariari ostalariari esaten diona.

nameserver 127.0.0.1
nameserver 192.168.1.1

Lehen lerroak dnscrypt-proxy erabiltzea ahalbidetzen du, bigarren lerroak jatorrizko atebidea erabiltzen du, dnscrypt-proxy zerbitzaria erabilgarri ez badago.

Bukatu da!

Berrabiarazi edo gelditu sareko zerbitzuak exekutatzen:

systemctl stop networking NetworkManager NetworkManager-wait-online

Eta berrabiarazi beharrezko guztiak:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Berrabiarazi edo berrabiarazi ondoren, ostalariaren eta LAN gailuak SOCKSera bideratzen dituen bigarren sarbide puntu bat izango duzu.

Hau da irteeraren itxura ip a ordenagailu eramangarri arrunta:

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

Baten ondorioz,

  1. Hornitzaileak zure SOCKS zerbitzarirako enkriptatutako konexioa soilik ikusten du, hau da, ez du ezer ikusten.
  2. Hala ere, zure NTP eskaerak ikusten ditu, hori saihesteko, kendu NTP zerbitzarientzako ibilbide estatikoak. Hala ere, ez dago ziur zure SOCKS zerbitzariak NTP protokoloa onartzen duenik.

Makulua Debain 10ean ikusi zuten

Sare-zerbitzua kontsolatik berrabiarazten saiatzen bazara, huts egingo du errore batekin. Hau da, interfaze birtual baten moduan zati bat tun2socks zerbitzuari lotuta dagoelako, hau da, erabiltzen da. Sareko zerbitzua berrabiarazteko, lehenik tun2socks zerbitzua gelditu behar duzu. Baina, nire ustez, amaierara arte irakurtzen baduzu, hau ez da zuretzako arazorik!

Erreferentziak

  1. Bideratze estatikoa Linux-en - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks Β· ambrop72/badvpn Wiki Β· GitHub
  4. oblique/create_ap: script honek NATed edo Bridged WiFi sarbide puntu bat sortzen du.
  5. dnscrypt-proxy 2 β€” DNS proxy malgua, enkriptatutako DNS protokoloak onartzen dituena.

Iturria: www.habr.com