Reitittimen rakentaminen SOCKSissa kannettavalle tietokoneelle Debian 10:llä

Koko vuoden (tai kahdeksi) lykkäsin tämän artikkelin julkaisemista pääasiallisesta syystä - olin jo julkaissut kaksi artikkelia, joissa kuvailin reitittimen luomista SOCKSissa hyvin tavallisesta kannettavasta Debianin kanssa.

Kuitenkin sen jälkeen Debianin vakaa versio on päivitetty Busteriin, riittävä määrä ihmisiä on ottanut minuun yhteyttä ja pyytänyt apua asennuksessa, mikä tarkoittaa, että aiemmat artikkelini eivät ole tyhjentäviä. No, arvelin itsekin, että niissä kuvatut menetelmät eivät täysin paljasta kaikkia Linuxin reitityksen määrittämistä SOCKSissa. Lisäksi ne on kirjoitettu Debian Stretchille ja Busteriin päivityksen jälkeen systemd init -järjestelmässä huomasin pieniä muutoksia palveluiden vuorovaikutuksessa. Ja itse artikkeleissa en käyttänyt systemd-networkd:tä, vaikka se sopii parhaiten monimutkaisiin verkkokokoonpanoihin.

Yllä olevien muutosten lisäksi määritykseeni lisättiin seuraavat palvelut: hostapd - tukiaseman virtualisointipalvelu, ntp synkronoida paikallisverkon asiakkaiden aika, dnscrypt-välityspalvelin yhteyksien salaamiseen DNS:n kautta ja mainonnan poistamiseen paikallisverkon asiakkaista, ja myös, kuten aiemmin mainitsin, systemd-networkd verkkoliitäntöjen määrittämiseen.

Tässä on yksinkertainen lohkokaavio tällaisen reitittimen sisäisestä rakenteesta.

Reitittimen rakentaminen SOCKSissa kannettavalle tietokoneelle Debian 10:llä

Muistutan siis, mitkä ovat tämän artikkelisarjan tavoitteet:

  1. Reititä kaikki käyttöjärjestelmäyhteydet SOCKSiin sekä yhteydet kaikista laitteista samassa verkossa kuin kannettava tietokone.
  2. Minun tapauksessani kannettavan tietokoneen pitäisi pysyä täysin mobiilina. Eli antaa mahdollisuus käyttää työpöytäympäristöä eikä olla sidottu fyysiseen sijaintiin.
  3. Viimeinen kohta tarkoittaa yhteyttä ja reititystä vain sisäänrakennetun langattoman liitännän kautta.
  4. No, ja tietysti kattavan oppaan luominen sekä asiaankuuluvien teknologioiden analyysi vaatimattoman tietämykseni mukaan.

Mitä tässä artikkelissa käsitellään:

  1. mennä — Lataa projektivarastot tun2sukattarvitaan TCP-liikenteen reitittämiseen SOCKSiin ja luoda_ap — komentosarja virtuaalisen tukiaseman asennuksen automatisoimiseksi hostapd.
  2. tun2sukat — rakentaa ja asentaa systemd-palvelu järjestelmään.
  3. systemd-networkd — määritä langattomat ja virtuaaliset rajapinnat, staattiset reititystaulukot ja pakettien uudelleenohjaus.
  4. luoda_ap — asenna systemd-palvelu järjestelmään, määritä ja käynnistä virtuaalinen tukiasema.

Valinnaiset vaiheet:

  • ntp — Asenna ja konfiguroi palvelin ajan synkronoimiseksi virtuaalisissa tukiasemaasiakkaissa.
  • dnscrypt-välityspalvelin - salaamme DNS-pyynnöt, reititämme ne SOCKS-palveluun ja poistamme paikallisverkon mainosalueet käytöstä.

Miksi tämä kaikki?

Tämä on yksi tavoista suojata TCP-yhteydet paikallisessa verkossa. Suurin etu on, että kaikki yhteydet tehdään SOCKSissa, ellei niille rakenneta staattista reittiä alkuperäisen yhdyskäytävän kautta. Tämä tarkoittaa, että sinun ei tarvitse määrittää SOCKS-palvelinasetuksia yksittäisille ohjelmille tai paikallisen verkon asiakkaille - ne kaikki menevät oletusarvoisesti SOCKS:iin, koska se on oletusyhdyskäytävä, kunnes ilmoitamme toisin.

Pohjimmiltaan lisäämme toisen salaavan reitittimen kannettavaksi tietokoneeksi alkuperäisen reitittimen eteen ja käytämme alkuperäisen reitittimen Internet-yhteyttä kannettavan tietokoneen jo salattuihin SOCKS-pyyntöihin, jotka vuorostaan ​​reitittävät ja salaavat LAN-asiakkaiden pyynnöt.

Palveluntarjoajan näkökulmasta olemme jatkuvasti yhteydessä yhteen palvelimeen, jolla on salattu liikenne.

Vastaavasti kaikki laitteet on kytketty kannettavan tietokoneen virtuaaliseen tukiasemaan.

Asenna tun2socks järjestelmään

Lataa kaikki tarvittavat työkalut niin kauan kuin koneessasi on internetyhteys.

apt update
apt install git make cmake

Lataa badvpn-paketti

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

Järjestelmään tulee kansio badvpn. Luo rakennukselle erillinen kansio

mkdir badvpn-build

Mene siihen

cd badvpn-build

Kerätä tun2socks

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

Asenna järjestelmään

make install
  • Parametri -DBUILD_NOTHING_BY_DEFAULT=1 poistaa käytöstä kaikkien badvpn-arkiston komponenttien rakentamisen.
  • -DBUILD_TUN2SOCKS=1 sisältää komponentin kokoonpanossa tun2sukat.
  • make install — asentaa tun2socks-binaarin järjestelmääsi osoitteessa /usr/local/bin/badvpn-tun2socks.

Asenna tun2socks-palvelu systemd:hen

Luo tiedosto /etc/systemd/system/tun2socks.service seuraavalla sisällöllä:

[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 - ottaa sen virtuaalisen käyttöliittymän nimen, jonka alustamme systemd-networkd:llä.
  • --netif-ipaddr — sen tun2socks-"reitittimen" verkko-osoite, johon virtuaaliliitäntä on kytketty. On parempi tehdä se erikseen varattu aliverkko.
  • --socks-server-addr - hyväksyy pistorasia (адрес:порт SOCKS-palvelimet).

Jos SOCKS-palvelimesi vaatii todennusta, voit määrittää parametrit --username и --password.

Rekisteröi seuraavaksi palvelu

systemctl daemon-reload

Ja käynnistä se

systemctl enable tun2socks

Ennen palvelun käynnistämistä tarjoamme sille virtuaalisen verkkorajapinnan.

Vaihdetaan systemd-verkkoon

Sisällytämme systemd-networkd:

systemctl enable systemd-networkd

Poista nykyiset verkkopalvelut käytöstä.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-wait-online on palvelu, joka odottaa toimivaa verkkoyhteyttä ennen kuin systemd jatkaa muiden verkon olemassaolosta riippuvien palvelujen käynnistämistä. Poistamme sen käytöstä, kun siirrymme analogiseen systemd-networkd.

Otetaan se käyttöön heti:

systemctl enable systemd-networkd-wait-online

Aseta langaton verkkoliitäntä

Luo systemd-networkd-määritystiedosto langattomalle verkkoliittymälle /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • Nimi on langattoman käyttöliittymäsi nimi. Tunnista se komennolla ip a.
  • IPForward - direktiivi, joka mahdollistaa pakettien uudelleenohjauksen verkkorajapinnassa.
  • Osoite on vastuussa IP-osoitteen määrittämisestä langattomalle rajapinnalle. Määritämme sen staattisesti, koska vastaavalla direktiivillä DHCP=yes, systemd-networkd luo oletusyhdyskäytävän järjestelmään. Silloin kaikki liikenne kulkee alkuperäisen yhdyskäytävän kautta, ei tulevan virtuaalisen käyttöliittymän kautta eri aliverkossa. Voit tarkistaa nykyisen oletusyhdyskäytävän komennolla ip r

Luo staattinen reitti SOCKS-etäpalvelimelle

Jos SOCKS-palvelimesi ei ole paikallinen, vaan etäpalvelin, sinun on luotava sille staattinen reitti. Voit tehdä tämän lisäämällä osion Route luomasi langattoman liitännän määritystiedoston loppuun, jossa on seuraava sisältö:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — tämä on oletusyhdyskäytävä tai alkuperäisen tukiasemasi osoite.
  • Destination — SOCKS-palvelimen osoite.

Määritä wpa_supplicant järjestelmälle systemd-networkd

systemd-networkd käyttää wpa_supplicant-komentoa muodostaakseen yhteyden suojattuun tukiasemaan. Kun langatonta käyttöliittymää yritetään "nostaa", systemd-networkd käynnistää palvelun wpa_supplicant@имяMissä Nimi on langattoman liitännän nimi. Jos et ole käyttänyt systemd-networkd:tä ennen tätä kohtaa, tämä palvelu todennäköisesti puuttuu järjestelmästäsi.

Joten luo se komennolla:

systemctl enable wpa_supplicant@wlp6s0

käytin wlp6s0 langattoman käyttöliittymänsä nimenä. Nimesi voi olla erilainen. Sen tunnistaa komennolla ip l.

Nyt luotu palvelu wpa_supplicant@wlp6s0 käynnistyy, kun langaton rajapinta nostetaan, mutta se puolestaan ​​etsii tiedostosta tukiaseman SSID- ja salasanaasetukset /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Siksi sinun on luotava se apuohjelman avulla wpa_passphrase.

Voit tehdä tämän suorittamalla komennon:

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

missä SSID on tukiasemasi nimi, salasana on salasana ja wlp6s0 — langattoman liitännän nimi.

Alusta tun2socksin virtuaalinen käyttöliittymä

Luo tiedosto alustaaksesi uuden virtuaalisen käyttöliittymän järjestelmään/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Nimi on nimi, jonka systemd-networkd antaa tulevalle virtuaaliselle rajapinnalle, kun se alustetaan.
  • laji on eräänlainen virtuaalinen käyttöliittymä. Tun2socks-palvelun nimestä voit arvata, että se käyttää käyttöliittymää, kuten tun.
  • netdev on tiedostopääte, joka systemd-networkd Käytetään virtuaalisten verkkoliitäntöjen alustamiseen. Näiden liitäntöjen osoite ja muut verkkoasetukset on määritetty kohdassa .verkko-tiedostot.

Luo tällainen tiedosto /etc/systemd/network/25-tun2socks.network seuraavalla sisällöllä:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — määrittämäsi virtuaalisen käyttöliittymän nimi netdev-tiedosto.
  • Address — IP-osoite, joka määritetään virtuaaliselle rajapinnalle. Sen on oltava samassa verkossa kuin tun2socks-palvelussa määrittämäsi osoite
  • Gateway - "reitittimen" IP-osoite tun2sukat, jonka määritit systemd-palvelua luodessasi.

Käyttöliittymä siis tun2sukat on osoite 172.16.1.2, ja palvelu tun2sukat - 172.16.1.1, eli se on yhdyskäytävä kaikille virtuaaliliittymästä tuleville yhteyksille.

Aseta virtuaalinen tukiasema

Asenna riippuvuudet:

apt install util-linux procps hostapd iw haveged

Lataa arkisto luo_ap autoosi:

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

Siirry koneen arkistokansioon:

cd create_ap

Asenna järjestelmään:

make install

Järjestelmään tulee konfiguraatio /etc/create_ap.conf. Tässä ovat tärkeimmät muokkausvaihtoehdot:

  • GATEWAY=10.0.0.1 - on parempi tehdä siitä erillinen varattu aliverkko.
  • NO_DNS=1 - pois käytöstä, koska tätä parametria hallitsee systemd-networkd virtuaalinen käyttöliittymä.
  • NO_DNSMASQ=1 - Sammuta se samasta syystä.
  • WIFI_IFACE=wlp6s0 - kannettavan tietokoneen langaton käyttöliittymä.
  • INTERNET_IFACE=tun2socks - virtuaalinen käyttöliittymä, joka on luotu tun2socksille.
  • SSID=hostapd — virtuaalisen tukiaseman nimi.
  • PASSPHRASE=12345678 - Salasana.

Muista ottaa palvelu käyttöön:

systemctl enable create_ap

Ota DHCP-palvelin käyttöön systemd-networkd:ssä

toimisto create_ap alustaa järjestelmän virtuaalisen käyttöliittymän ap0. Teoriassa dnsmasq roikkuu tässä rajapinnassa, mutta miksi asentaa lisäpalveluita, jos systemd-networkd sisältää sisäänrakennetun DHCP-palvelimen?

Ottaaksemme sen käyttöön määritämme virtuaalipisteen verkkoasetukset. Voit tehdä tämän luomalla tiedoston /etc/systemd/network/25-ap0.network seuraavalla sisällöllä:

[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

Kun Create_ap-palvelu alustaa virtuaalisen käyttöliittymän ap0, systemd-networkd määrittää sille automaattisesti IP-osoitteen ja ottaa käyttöön DHCP-palvelimen.

linjat EmitDNS=yes и DNS=10.0.0.1 lähettää DNS-palvelimen asetukset tukiasemaan kytkettyihin laitteisiin.

Jos et aio käyttää paikallista DNS-palvelinta - minun tapauksessani se on dnscrypt-proxy - voit asentaa DNS=10.0.0.1 в DNS=192.168.1.1Missä 192.168.1.1 - alkuperäisen yhdyskäytäväsi osoite. Sitten isäntäsi ja paikallisverkkosi DNS-pyynnöt menevät salaamattomiksi palveluntarjoajan palvelimien kautta.

EmitNTP=yes и NTP=192.168.1.1 siirtää NTP-asetukset.

Sama pätee linjaan NTP=10.0.0.1.

Asenna ja määritä NTP-palvelin

Asenna järjestelmään:

apt install ntp

Muokkaa asetusta /etc/ntp.conf. Kommentoi standardipoolien osoitteet:

#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

Lisää julkisia palvelinosoitteita, esimerkiksi Googlen julkinen NTP:

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

Tarjoa pääsy palvelimeen verkossasi oleville asiakkaille:

restrict 10.0.0.0 mask 255.255.255.0

Ota lähetys käyttöön verkkoosi:

broadcast 10.0.0.255

Lisää lopuksi näiden palvelimien osoitteet staattiseen reititystaulukkoon. Voit tehdä tämän avaamalla langattoman liitännän määritystiedoston /etc/systemd/network/25-wlp6s0.network ja lisää osan loppuun 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

Voit selvittää NTP-palvelintesi osoitteet apuohjelman avulla host seuraavasti:

host time1.google.com

Asenna dnscrypt-proxy, poista mainoksia ja piilota DNS-liikenne palveluntarjoajaltasi

apt install dnscrypt-proxy

Muokkaa kantaa palvellaksesi isäntä- ja paikallisverkon DNS-kyselyitä /lib/systemd/system/dnscrypt-proxy.socket. Muuta seuraavat rivit:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Uudelleenkäynnistää systemd:

systemctl daemon-reload

Muokkaa asetusta /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Voit reitittää dnscrypt-välityspalvelinyhteydet tun2socksin kautta lisäämällä alla:

force_tcp = true

Muokkaa asetusta /etc/resolv.conf, joka kertoo DNS-palvelimen isännälle.

nameserver 127.0.0.1
nameserver 192.168.1.1

Ensimmäinen rivi mahdollistaa dnscrypt-proxyn käytön, toisella rivillä käytetään alkuperäistä yhdyskäytävää siltä varalta, että dnscrypt-välityspalvelin ei ole käytettävissä.

Valmis!

Käynnistä uudelleen tai lopeta verkkopalvelujen käyttö:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ja käynnistä kaikki tarvittava uudelleen:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Uudelleenkäynnistyksen tai uudelleenkäynnistyksen jälkeen sinulla on toinen tukiasema, joka reitittää isäntä- ja LAN-laitteet SOCKSiin.

Tuotos näyttää tältä ip a tavallinen kannettava tietokone:

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

Tämän seurauksena

  1. Palveluntarjoaja näkee vain salatun yhteyden SOCKS-palvelimeesi, mikä tarkoittaa, että he eivät näe mitään.
  2. Ja silti se näkee NTP-pyyntösi. Tämän estämiseksi poista staattiset reitit NTP-palvelimille. Ei kuitenkaan ole varmaa, että SOCKS-palvelimesi sallii NTP-protokollan.

Kaivosauva havaittiin Debain 10:ssä

Jos yrität käynnistää verkkopalvelun uudelleen konsolista, se epäonnistuu virheilmoituksella. Tämä johtuu siitä, että osa siitä virtuaalisen käyttöliittymän muodossa on sidottu tun2socks-palveluun, mikä tarkoittaa, että sitä käytetään. Voit käynnistää verkkopalvelun uudelleen pysäyttämällä tun2socks-palvelun. Mutta luulen, että jos luet loppuun, tämä ei todellakaan ole sinulle ongelma!

viittaukset

  1. Staattinen reititys Linuxissa - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Tämä komentosarja luo NATed- tai Bridged-WiFi-tukiaseman.
  5. dnscrypt-proxy 2 — Joustava DNS-välityspalvelin, joka tukee salattuja DNS-protokollia.

Lähde: will.com