Ngawangun router dina SOCKS dina laptop sareng Debian 10

Sapanjang taun (atanapi dua) kuring ditunda nyebarkeun tulisan ieu kusabab alesan utama - kuring parantos nyebarkeun dua tulisan dimana kuring ngajelaskeun prosés nyiptakeun router dina SOCKS tina laptop anu biasa sareng Debian.

Nanging, ti saprak éta vérsi stabil Debian parantos diénggalan ka Buster, sajumlah cekap jalma ngahubungi kuring sacara pribadi naroskeun bantosan kana pangaturan, anu hartosna tulisan kuring sateuacana henteu tuntas. Nya, kuring sorangan ngaduga yén metodeu anu digariskeun dina éta henteu sapinuhna ngungkabkeun sagala kerumitan nyetél Linux pikeun routing di SOCKS. Salaku tambahan, aranjeunna ditulis pikeun Debian Stretch, sareng saatos ningkatkeun ka Buster, dina sistem init systemd, kuring perhatikeun parobahan leutik dina interaksi jasa. Sareng dina tulisan sorangan, kuring henteu nganggo systemd-networkd, sanaos éta paling cocog pikeun konfigurasi jaringan kompléks.

Salian parobahan di luhur, jasa di handap ieu ditambahkeun kana konfigurasi kuring: hostapd - jasa pikeun virtualisasi titik aksés, ntp pikeun nyingkronkeun waktos klien jaringan lokal, dnscrypt-proxy pikeun énkripsi sambungan via DNS sareng nganonaktipkeun pariwara dina klien jaringan lokal, sareng ogé, sakumaha anu kuring disebutkeun tadi, systemd-jaringand pikeun ngonpigurasikeun interfaces jaringan.

Di handap ieu diagram blok basajan tina struktur internal router sapertos.

Ngawangun router dina SOCKS dina laptop sareng Debian 10

Janten, hayu atuh ngingetkeun anjeun naon tujuan tina séri tulisan ieu:

  1. Rutekeun sadaya sambungan OS ka SOCKS, kitu ogé sambungan tina sadaya alat dina jaringan anu sami sareng laptop.
  2. Laptop dina hal kuring kedah tetep lengkep mobile. Nyaéta, pikeun masihan kasempetan pikeun ngagunakeun lingkungan desktop sareng henteu kabeungkeut kana lokasi fisik.
  3. Titik anu terakhir nunjukkeun sambungan sareng rute ngan ukur ngalangkungan antarbeungeut nirkabel anu diwangun.
  4. Nya, sareng tangtosna, nyiptakeun pituduh anu komprehensif, ogé analisa téknologi anu relevan pikeun anu pangsaéna tina pangaweruh sederhana kuring.

Naon anu bakal dibahas dina tulisan ieu:

  1. séwang - download repositories proyék kaos kaki tun2diperlukeun jalur lalulintas TCP mun SOCKS, jeung create_ap — naskah pikeun ngajadikeun otomatis setelan titik aksés virtual ngagunakeun hostapd.
  2. kaos kaki tun2 - ngawangun sareng pasang jasa systemd dina sistem.
  3. systemd-jaringand - Konpigurasikeun interfaces nirkabel sarta virtual, tabel routing statik sarta pakét redirection.
  4. create_ap - masang layanan systemd dina sistem, ngonpigurasikeun sareng ngajalankeun titik aksés virtual.

léngkah pilihan:

  • ntp - masang sareng ngonpigurasikeun server pikeun nyinkronkeun waktos dina klien titik aksés virtual.
  • dnscrypt-proxy - kami bakal énkripsi pamundut DNS, rute ka SOCKS sareng nganonaktipkeun domain iklan pikeun jaringan lokal.

Keur naon ieu sadayana?

Ieu salah sahiji cara pikeun ngamankeun sambungan TCP dina jaringan lokal. Kauntungan utama nyaéta yén sadaya sambungan anu dilakukeun dina SOCKS, iwal hiji jalur statik diwangun pikeun aranjeunna ngaliwatan gateway aslina. Ieu ngandung harti yén anjeun teu kudu nangtukeun setélan server SOCKS boh program individu atawa klien dina jaringan lokal - aranjeunna sadayana buka SOCKS sacara standar, saprak éta gateway standar dugi kami nunjukkeun disebutkeun.

Intina kami nambihan router énkripsi kadua salaku laptop di payuneun router asli sareng nganggo sambungan internét router asli pikeun pamundut SOCKS anu parantos énkripsi laptop, anu dina gilirannana rute sareng énkripsi pamundut ti klien LAN.

Tina sudut pandang panyadia, kami terus nyambung ka hiji server kalayan lalu lintas énkripsi.

Sasuai, sadaya alat disambungkeun ka titik aksés virtual laptop urang.

Pasang tun2socks dina sistem

Salami mesin anjeun gaduh internét, unduh sadaya alat anu diperyogikeun.

apt update
apt install git make cmake

Unduh paket badvpn

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

Polder bakal muncul dina sistem anjeun badvpn. Jieun folder misah pikeun ngawangun

mkdir badvpn-build

Pindah ka dinya

cd badvpn-build

Ngumpulkeun tun2socks

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

Pasang dina sistem

make install
  • parameter -DBUILD_NOTHING_BY_DEFAULT=1 nganonaktipkeun ngawangun sadaya komponén gudang badvpn.
  • -DBUILD_TUN2SOCKS=1 ngawengku komponén dina rakitan kaos kaki tun2.
  • make install - bakal masang binér tun2socks dina sistem anjeun di /usr/local/bin/badvpn-tun2socks.

Pasang jasa tun2socks dina systemd

Jieun file /etc/systemd/system/tun2socks.service kalawan eusi handap:

[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 - nyokot nami panganteur maya nu urang initialize kalawan systemd-networkd.
  • --netif-ipaddr - alamat jaringan tina tun2socks "router" nu panganteur virtual disambungkeun. Éta langkung saé pikeun misahkeunana subnet ditangtayungan.
  • --socks-server-addr - nampi stop kontak (адрес:порт server SOCKS).

Lamun server SOCKS Anjeun merlukeun auténtikasi, Anjeun bisa nangtukeun parameter --username и --password.

Salajengna, ngadaptar jasa

systemctl daemon-reload

Sareng hurungkeun

systemctl enable tun2socks

Sateuacan ngamimitian jasa, kami bakal nyayogikeun antarmuka jaringan virtual.

Pindah ka systemd-networkd

Kami kalebet systemd-networkd:

systemctl enable systemd-networkd

Nonaktipkeun jasa jaringan ayeuna.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-antos-online mangrupakeun ladenan nu ngantosan sambungan jaringan jalan samemeh systemd terus ngamimitian ladenan sejenna nu gumantung kana ayana jaringan. Kami nganonaktipkeun éta nalika urang ngalih ka analog systemd-networkd.

Hayu urang aktipkeun langsung:

systemctl enable systemd-networkd-wait-online

Setel panganteur jaringan nirkabel

Jieun file konfigurasi systemd-networkd pikeun panganteur jaringan nirkabel /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • nami nyaeta nami panganteur nirkabel Anjeun. Identipikasi eta kalawan paréntah ip a.
  • IPForward - diréktif anu ngamungkinkeun pakét alihan dina panganteur jaringan.
  • alamat tanggung jawab napelkeun alamat IP ka panganteur nirkabel. Urang tangtukeun eta statik sabab kalawan diréktif sarua DHCP=yes, systemd-networkd nyiptakeun gateway standar dina sistem. Lajeng sadayana lalulintas bakal ngaliwatan gateway aslina, teu ngaliwatan panganteur maya hareup dina subnet béda. Anjeun tiasa pariksa gateway standar ayeuna kalayan paréntah ip r

Jieun rute statik pikeun server SOCKS jauh

Upami server SOCKS anjeun henteu lokal, tapi jauh, maka anjeun kedah nyiptakeun rute statik pikeun éta. Jang ngalampahkeun ieu, tambahkeun bagian Route nepi ka ahir file konfigurasi interface nirkabel Anjeun dijieun jeung eusi handap:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — ieu mangrupikeun gerbang standar atanapi alamat titik aksés asli anjeun.
  • Destination - Alamat server SOCKS.

Konpigurasikeun wpa_supplicant pikeun systemd-networkd

systemd-networkd nganggo wpa_supplicant pikeun nyambung ka titik aksés anu aman. Nalika nyobian "ngangkat" antarbeungeut nirkabel, systemd-networkd ngamimitian jasa wpa_supplicant@имяdimana nami nyaeta nami panganteur nirkabel. Upami anjeun teu acan nganggo systemd-networkd sateuacan titik ieu, maka jasa ieu sigana leungit dina sistem anjeun.

Janten jieun ku paréntah:

systemctl enable wpa_supplicant@wlp6s0

Kuring dipaké wlp6s0 salaku nami panganteur nirkabel na. Ngaran anjeun bisa jadi béda. Anjeun tiasa ngakuan eta kalawan paréntah ip l.

Ayeuna jasa dijieun wpa_supplicant@wlp6s0 bakal diluncurkeun nalika antarbeungeut nirkabel "diangkat", kumaha ogé, éta bakal milarian setélan SSID sareng kecap akses titik aksés dina file. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Ku alatan éta, anjeun kedah nyiptakeunana nganggo utilitas wpa_passphrase.

Jang ngalampahkeun ieu, ngajalankeun paréntah:

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

di mana SSID nyaeta nami titik aksés Anjeun, sandi nyaeta sandi, jeung wlp6s0 — nami antarmuka nirkabel anjeun.

Initialize panganteur maya pikeun tun2socks

Jieun file pikeun initialize panganteur virtual anyar dina sistem/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • nami nyaeta nami anu systemd-networkd bakal napelkeun ka panganteur maya hareup nalika eta geus initialized.
  • hade mangrupakeun tipe panganteur virtual. Tina nami jasa tun2socks, anjeun tiasa nebak yén éta ngagunakeun antarmuka sapertos tun.
  • netdev nyaeta ekstensi file anu systemd-networkd Mangpaat pikeun initialize interfaces jaringan virtual. Alamat sareng setélan jaringan sanés pikeun antarmuka ieu dijelaskeun dina .jaringan-berkas.

Jieun file kawas kieu /etc/systemd/network/25-tun2socks.network kalawan eusi handap:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — nami antarbeungeut virtual anu anjeun tunjukkeun netdev- file.
  • Address - Alamat IP anu bakal ditugaskeun ka antarmuka virtual. Kedah aya dina jaringan anu sami sareng alamat anu anjeun jelaskeun dina jasa tun2socks
  • Gateway - Alamat IP tina "router" kaos kaki tun2, anu anjeun tangtoskeun nalika nyiptakeun jasa systemd.

Jadi panganteur kaos kaki tun2 boga alamat 172.16.1.2, sareng jasa kaos kaki tun2 - 172.16.1.1, nyaeta, eta teh gateway pikeun sakabéh sambungan tina panganteur virtual.

Nyetél titik aksés virtual

Pasang dependensi:

apt install util-linux procps hostapd iw haveged

Unduh gudang create_ap kana mobil anjeun:

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

Pindah ka folder gudang dina mesin anjeun:

cd create_ap

Pasang dina sistem:

make install

A config bakal muncul dina sistem Anjeun /etc/create_ap.conf. Ieu pilihan éditan utama:

  • GATEWAY=10.0.0.1 - éta hadé pikeun nyieun subnet ditangtayungan misah.
  • NO_DNS=1 - nganonaktipkeun, sabab parameter ieu bakal diurus ku interface virtual systemd-networkd.
  • NO_DNSMASQ=1 - mareuman pikeun alesan anu sarua.
  • WIFI_IFACE=wlp6s0 - panganteur nirkabel laptop.
  • INTERNET_IFACE=tun2socks - panganteur maya dijieun pikeun tun2socks.
  • SSID=hostapd - ngaran titik aksés virtual.
  • PASSPHRASE=12345678 - sandi.

Tong hilap ngaktifkeun jasa:

systemctl enable create_ap

Aktipkeun server DHCP dina systemd-networkd

Palayanan create_ap initializes panganteur virtual dina sistem ap0. Dina tiori, dnsmasq ngagantung dina panganteur ieu, tapi naha install jasa tambahan lamun systemd-networkd ngandung hiji diwangun-di server DHCP?

Pikeun ngaktifkeunana, urang bakal nangtukeun setélan jaringan pikeun titik virtual. Jang ngalampahkeun ieu, jieun file /etc/systemd/network/25-ap0.network kalawan eusi handap:

[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

Saatos jasa create_ap initializes panganteur virtual ap0, systemd-networkd bakal otomatis masihan alamat IP sareng ngaktipkeun server DHCP.

Senar EmitDNS=yes и DNS=10.0.0.1 ngirimkeun setelan pangladén DNS ka alat nu disambungkeun ka titik aksés.

Upami anjeun henteu ngarencanakeun ngagunakeun pangladén DNS lokal - bisi kuring nyaéta dnscrypt-proxy - anjeun tiasa pasang DNS=10.0.0.1 в DNS=192.168.1.1dimana 192.168.1.1 - alamat gateway aslina anjeun. Lajeng requests DNS pikeun host anjeun sarta jaringan lokal bakal balik unencrypted ngaliwatan server panyadia urang.

EmitNTP=yes и NTP=192.168.1.1 mindahkeun setélan NTP.

Sami lumaku pikeun garis NTP=10.0.0.1.

Masang sareng ngonpigurasikeun server NTP

Pasang dina sistem:

apt install ntp

Édit config /etc/ntp.conf. Koméntar alamat kolam renang standar:

#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

Tambahkeun alamat pangladén umum, contona Google Public NTP:

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

Nyadiakeun aksés ka server ka klien dina jaringan anjeun:

restrict 10.0.0.0 mask 255.255.255.0

Aktipkeun siaran ka jaringan anjeun:

broadcast 10.0.0.255

Tungtungna, tambahkeun alamat tina server ieu kana tabel routing statik. Jang ngalampahkeun ieu, buka file konfigurasi interface nirkabel /etc/systemd/network/25-wlp6s0.network jeung tambahkeun ka tungtung bagian 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

Anjeun tiasa mendakan alamat pangladén NTP anjeun nganggo utilitas host saperti kieu:

host time1.google.com

Pasang dnscrypt-proxy, cabut iklan sareng nyumputkeun lalu lintas DNS ti panyadia anjeun

apt install dnscrypt-proxy

Pikeun ngalayanan patarosan DNS host sareng jaringan lokal, édit stop kontak /lib/systemd/system/dnscrypt-proxy.socket. Robah garis handap:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Uihan deui systemd:

systemctl daemon-reload

Édit config /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Pikeun rute sambungan dnscrypt-proxy ngaliwatan tun2socks, tambahkeun di handap:

force_tcp = true

Édit config /etc/resolv.conf, nu ngabejaan server DNS ka host.

nameserver 127.0.0.1
nameserver 192.168.1.1

Baris kahiji ngamungkinkeun pamakéan dnscrypt-proxy, baris kadua ngagunakeun gateway aslina bisi server dnscrypt-proxy teu sadia.

Réngsé!

Reboot atanapi eureun ngajalankeun jasa jaringan:

systemctl stop networking NetworkManager NetworkManager-wait-online

Sareng balikan deui sadayana anu diperyogikeun:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Saatos reboot atanapi balikan deui, anjeun bakal gaduh titik aksés kadua anu rute host sareng alat LAN ka SOCKS.

Ieu naon kaluaran kasampak kawas ip a laptop biasa:

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

Dina ahir

  1. Panyadia ngan ukur ningali sambungan énkripsi kana server SOCKS anjeun, anu hartosna aranjeunna henteu ningali nanaon.
  2. Sareng éta ningali pamundut NTP anjeun, pikeun nyegah ieu, hapus rute statik pikeun server NTP. Nanging, éta henteu pasti yén server SOCKS anjeun ngamungkinkeun protokol NTP.

Kruk katingal dina Debain 10

Upami anjeun nyobian ngabalikan deui jasa jaringan tina konsol, éta bakal gagal sareng kasalahan. Ieu alatan kanyataan yén bagian tina eta dina bentuk panganteur maya dihijikeun ka layanan tun2socks, nu hartina dipaké. Pikeun ngabalikan deui jasa jaringan, anjeun kedah ngeureunkeun heula jasa tun2socks. Tapi, Jigana, lamun maca nepi ka ahir, ieu pasti teu jadi masalah pikeun anjeun!

rujukan

  1. Routing statik dina Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Aksara ieu nyiptakeun NATed atanapi Bridged WiFi Access Point.
  5. dnscrypt-proxy 2 - Proksi DNS anu fleksibel, kalayan dukungan pikeun protokol DNS énkripsi.

sumber: www.habr.com