Bati yon routeur nan SOCKS sou yon laptop ak Debian 10

Pou yon ane antye (oswa de) mwen sispann pibliye atik sa a pou rezon prensipal la - mwen te deja pibliye de atik kote mwen dekri pwosesis la nan kreye yon routeur nan SOCKS soti nan yon laptop trè òdinè ak Debian.

Sepandan, depi lè sa a vèsyon ki estab nan Debian te mete ajou nan Buster, yon kantite ase moun te kontakte mwen an prive pou mande èd ak konfigirasyon an, ki vle di ke atik anvan mwen yo pa konplè. Oke, mwen menm mwen te devine ke metòd yo dekri nan yo pa totalman revele tout sibtilite ki genyen nan mete Linux pou routage nan SOCKS. Anplis de sa, yo ekri pou Debian Stretch, epi apre yo fin amelyore Buster, nan sistèm init systemd la, mwen remake ti chanjman nan entèraksyon sèvis yo. Ak nan atik yo tèt yo, mwen pa t 'sèvi ak systemd-networkd, byenke li pi byen adapte pou konfigirasyon rezo konplèks.

Anplis de chanjman ki anwo yo, sèvis sa yo te ajoute nan konfigirasyon mwen an: hostapd - sèvis pou virtualisation pwen aksè, ntp pou senkronize lè kliyan rezo lokal yo, dnscrypt-proxy ankripte koneksyon atravè DNS ak enfim piblisite sou kliyan rezo lokal yo, epi tou, jan mwen mansyone pi bonè, systemd-networkd pou konfigirasyon rezo interfaces.

Isit la se yon senp dyagram blòk nan estrikti entèn nan yon routeur konsa.

Bati yon routeur nan SOCKS sou yon laptop ak Debian 10

Kidonk, kite m fè w sonje ki objektif seri atik sa a ye:

  1. Wout tout koneksyon OS yo nan SOCKS, osi byen ke koneksyon ki soti nan tout aparèy sou rezo a menm ak laptop la.
  2. Laptop nan ka mwen an ta dwe rete konplètman mobil. Sa vle di, bay opòtinite pou yo sèvi ak anviwònman an Desktop epi yo pa dwe mare nan yon kote fizik.
  3. Dènye pwen an implique koneksyon ak routage sèlman atravè koòdone san fil bati-an.
  4. Oke, ak nan kou, kreyasyon an nan yon gid konplè, osi byen ke yon analiz de teknoloji ki enpòtan nan pi bon nan konesans modès mwen an.

Ki sa ki pral kouvri nan atik sa a:

  1. ale — telechaje depo pwojè yo tun2socksoblije wout trafik TCP nan SOCKS, ak kreye_ap — yon script pou otomatize konfigirasyon yon pwen aksè vityèl lè l sèvi avèk hostapd.
  2. tun2socks — konstwi ak enstale sèvis systemd sou sistèm nan.
  3. systemd-networkd — konfigirasyon entèfas san fil ak vityèl, tab routage estatik ak redireksyon pake.
  4. kreye_ap — enstale sèvis systemd sou sistèm nan, konfigirasyon epi lanse yon pwen aksè vityèl.

Etap opsyonèl:

  • ntp — enstale ak konfigirasyon yon sèvè pou senkronize tan sou kliyan pwen aksè vityèl.
  • dnscrypt-proxy — nou pral ankripte demann DNS, mennen yo nan SOCKS epi enfim domèn piblisite pou rezo lokal la.

Pou kisa tout bagay sa a ye?

Sa a se youn nan fason yo sekirize koneksyon TCP sou yon rezo lokal. Avantaj prensipal la se ke tout koneksyon yo fèt nan SOCKS, sof si yo bati yon wout estatik pou yo atravè pòtay orijinal la. Sa vle di ke ou pa bezwen presize paramèt sèvè SOCKS pou pwogram endividyèl oswa kliyan sou rezo lokal la - yo tout ale nan SOCKS pa default, paske li se pòtay default jiskaske nou endike otreman.

Esansyèlman nou ajoute yon dezyèm routeur chifreman kòm yon laptop devan routeur orijinal la epi sèvi ak koneksyon Entènèt routeur orijinal la pou demann SOCKS ki deja ankripte laptop la, ki an vire wout ak chifre demann soti nan kliyan LAN.

Soti nan pwen de vi founisè a, nou toujou ap konekte ak yon sèl sèvè ak trafik chiffres.

An konsekans, tout aparèy yo konekte ak pwen aksè vityèl laptop la.

Enstale tun2socks sou sistèm lan

Osi lontan ke machin ou a gen entènèt, telechaje tout zouti ki nesesè yo.

apt update
apt install git make cmake

Telechaje pake badvpn la

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

Yon katab ap parèt sou sistèm ou an badvpn. Kreye yon katab separe pou bati a

mkdir badvpn-build

Ale nan li

cd badvpn-build

Kolekte tun2socks

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

Enstale sou sistèm lan

make install
  • Paramèt -DBUILD_NOTHING_BY_DEFAULT=1 enfim bati tout eleman nan repozitwa badvpn la.
  • -DBUILD_TUN2SOCKS=1 gen ladan yon eleman nan asanble a tun2socks.
  • make install — pral enstale binè tun2socks sou sistèm ou a nan /usr/local/bin/badvpn-tun2socks.

Enstale sèvis tun2socks nan systemd

Kreye yon fichye /etc/systemd/system/tun2socks.service ak kontni sa a:

[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 - pran non koòdone vityèl ke nou inisyalize ak systemd-networkd.
  • --netif-ipaddr — adrès rezo "routeur" tun2socks ki konekte koòdone vityèl la. Li pi bon fè li separe rezève subnet.
  • --socks-server-addr - aksepte priz (адрес:порт sèvè SOCKS).

Si sèvè SOCKS ou a mande otantifikasyon, ou ka presize paramèt yo --username и --password.

Apre sa, anrejistre sèvis la

systemctl daemon-reload

Epi vire l

systemctl enable tun2socks

Anvan ou kòmanse sèvis la, nou pral bay li ak yon koòdone rezo vityèl.

Chanje nan systemd-networkd

Nou genyen ladan yo systemd-networkd:

systemctl enable systemd-networkd

Enfim sèvis rezo aktyèl yo.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-tann-sou entènèt se yon sèvis ki tann yon koneksyon rezo k ap travay anvan systemd kontinye kòmanse lòt sèvis ki depann de prezans yon rezo. Nou ap enfim li pandan n ap chanje nan analòg systemd-networkd.

Ann pèmèt li touswit:

systemctl enable systemd-networkd-wait-online

Mete kanpe koòdone rezo san fil la

Kreye yon fichye konfigirasyon systemd-networkd pou koòdone rezo san fil la /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • Non se non koòdone san fil ou a. Idantifye li ak kòmandman an ip a.
  • IPForward - yon direktiv ki pèmèt redireksyon pake sou yon koòdone rezo.
  • adrès responsab pou bay yon adrès IP nan koòdone san fil la. Nou presize li statikman paske ak direktiv la ekivalan DHCP=yes, systemd-networkd kreye yon pòtay default sou sistèm nan. Lè sa a, tout trafik pral pase nan pòtay orijinal la, epi yo pa atravè koòdone nan lavni vityèl sou yon sous-rezo diferan. Ou ka tcheke pòtay aktyèl la default ak lòd la ip r

Kreye yon wout estatik pou sèvè SOCKS aleka

Si sèvè SOCKS ou a pa lokal, men aleka, Lè sa a, ou bezwen kreye yon wout estatik pou li. Pou fè sa, ajoute yon seksyon Route jiska fen fichye konfigirasyon koòdone san fil ou te kreye ak kontni sa a:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — sa a se pòtay default oswa adrès pwen aksè orijinal ou a.
  • Destination — Adrès sèvè SOCKS.

Konfigure wpa_supplicant pou systemd-networkd

systemd-networkd itilize wpa_supplicant pou konekte avèk yon pwen aksè an sekirite. Lè w ap eseye "leve" koòdone san fil la, systemd-networkd kòmanse sèvis la wpa_supplicant@имяkote Non se non koòdone san fil la. Si ou pa te itilize systemd-networkd anvan pwen sa a, Lè sa a, sèvis sa a se pwobableman manke nan sistèm ou an.

Se konsa, kreye li ak lòd la:

systemctl enable wpa_supplicant@wlp6s0

Mwen te itilize wlp6s0 kòm non an nan koòdone san fil li yo. Non ou ka diferan. Ou ka rekonèt li ak kòmandman an ip l.

Koulye a, sèvis la kreye wpa_supplicant@wlp6s0 pral lanse lè koòdone san fil "leve", sepandan, li, nan vire, pral gade pou SSID ak modpas anviwònman pwen aksè a nan dosye a. /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Se poutèt sa, ou bezwen kreye li lè l sèvi avèk sèvis piblik la wpa_passphrase.

Pou fè sa, kouri lòd la:

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

kote Ssid se non pwen aksè ou, modpas se modpas la, epi wlp6s0 — non koòdone san fil ou a.

Inisyalize koòdone vityèl la pou tun2socks

Kreye yon fichye pou inisyalize yon nouvo koòdone vityèl nan sistèm nan/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Non se non ke systemd-networkd pral bay koòdone vityèl nan lavni lè li inisyalize.
  • Pitit se yon kalite koòdone vityèl. Soti nan non an nan sèvis la tun2socks, ou ka devine ke li sèvi ak yon koòdone tankou tun.
  • netdev se ekstansyon de fichiers sa systemd-networkd Itilize pou inisyalize entèfas rezo vityèl. Adrès ak lòt paramèt rezo pou interfaces sa yo espesifye nan .rezo-fichye.

Kreye yon dosye tankou sa a /etc/systemd/network/25-tun2socks.network ak kontni sa a:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — non koòdone vityèl ou espesifye nan netdev-dosye.
  • Address — Adrès IP ki pral asiyen nan koòdone vityèl la. Dwe sou menm rezo a ak adrès ou espesifye nan sèvis tun2socks la
  • Gateway - adrès IP "routeur" la tun2socks, ke ou espesifye lè w ap kreye sèvis systemd la.

Se konsa, koòdone la tun2socks gen yon adrès 172.16.1.2, ak sèvis la tun2socks - 172.16.1.1, se sa ki, li se pòtay la pou tout koneksyon ki soti nan koòdone vityèl la.

Mete kanpe yon pwen aksè vityèl

Enstale depandans:

apt install util-linux procps hostapd iw haveged

Telechaje repozitwa a kreye_ap nan machin ou:

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

Ale nan katab depo sou machin ou an:

cd create_ap

Enstale sou sistèm lan:

make install

Yon konfigirasyon ap parèt sou sistèm ou an /etc/create_ap.conf. Men opsyon koreksyon prensipal yo:

  • GATEWAY=10.0.0.1 - li pi bon pou fè li yon sou-rezè rezève apa.
  • NO_DNS=1 - enfim, paske paramèt sa a pral jere pa koòdone vityèl systemd-networkd.
  • NO_DNSMASQ=1 - fèmen li pou menm rezon an.
  • WIFI_IFACE=wlp6s0 - koòdone san fil laptop.
  • INTERNET_IFACE=tun2socks - yon koòdone vityèl kreye pou tun2socks.
  • SSID=hostapd — non pwen aksè vityèl la.
  • PASSPHRASE=12345678 - modpas.

Pa bliye aktive sèvis la:

systemctl enable create_ap

Pèmèt sèvè DHCP nan systemd-networkd

Sèvis create_ap inisyalize yon koòdone vityèl nan sistèm nan Ap0. Nan teyori, dnsmasq pandye sou koòdone sa a, men poukisa enstale sèvis siplemantè si systemd-networkd gen yon sèvè DHCP entegre?

Pou pèmèt li, nou pral defini anviwònman rezo yo pou pwen vityèl la. Pou fè sa, kreye yon dosye /etc/systemd/network/25-ap0.network ak kontni sa a:

[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

Apre sèvis create_ap la inisyalize koòdone vityèl la ap0, systemd-networkd pral otomatikman bay li yon adrès IP epi pèmèt sèvè DHCP la.

Fisèl EmitDNS=yes и DNS=10.0.0.1 transmèt anviwònman sèvè DNS nan aparèy ki konekte ak pwen aksè a.

Si ou pa planifye pou itilize yon sèvè DNS lokal - nan ka mwen an se dnscrypt-proxy - ou ka enstale DNS=10.0.0.1 в DNS=192.168.1.1kote 192.168.1.1 — adrès pòtay orijinal ou a. Lè sa a, demann DNS pou lame w la ak rezo lokal yo pral dekode atravè sèvè founisè a.

EmitNTP=yes и NTP=192.168.1.1 transfere paramèt NTP yo.

Menm bagay la tou ale pou liy lan NTP=10.0.0.1.

Enstale ak konfigirasyon sèvè NTP

Enstale sou sistèm lan:

apt install ntp

Edit konfigirasyon an /etc/ntp.conf. Kòmante adrès pisin estanda yo:

#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

Ajoute adrès sèvè piblik yo, pa egzanp Google Public NTP:

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

Bay kliyan sou rezo ou aksè a sèvè a:

restrict 10.0.0.0 mask 255.255.255.0

Pèmèt emisyon sou rezo ou a:

broadcast 10.0.0.255

Finalman, ajoute adrès serveurs sa yo nan tab routage estatik la. Pou fè sa, louvri dosye a konfigirasyon koòdone san fil /etc/systemd/network/25-wlp6s0.network epi ajoute nan fen seksyon an 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

Ou ka jwenn adrès yo nan serveurs NTP ou yo lè l sèvi avèk sèvis piblik la host jan sa a:

host time1.google.com

Enstale dnscrypt-proxy, retire anons epi kache trafik DNS nan founisè w la

apt install dnscrypt-proxy

Pou sèvi demann DNS lame ak rezo lokal yo, modifye priz la /lib/systemd/system/dnscrypt-proxy.socket. Chanje liy sa yo:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Rekòmanse systemd:

systemctl daemon-reload

Edit konfigirasyon an /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Pou wout koneksyon dnscrypt-proxy atravè tun2socks, ajoute anba a:

force_tcp = true

Edit konfigirasyon an /etc/resolv.conf, ki di sèvè a dns lame a.

nameserver 127.0.0.1
nameserver 192.168.1.1

Premye liy lan pèmèt itilize dnscrypt-proxy, dezyèm liy lan sèvi ak pòtay orijinal la nan ka sèvè dnscrypt-proxy la pa disponib.

Fè!

Rdemare oswa sispann kouri sèvis rezo:

systemctl stop networking NetworkManager NetworkManager-wait-online

Epi rekòmanse tout sa ki nesesè:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Apre yon rdemare oswa rekòmanse, ou pral gen yon dezyèm pwen aksè ki wout lame a ak aparèy LAN nan SOCKS.

Sa a se sa pwodiksyon an sanble ip a laptop regilye:

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

Nan fen an

  1. Founisè a sèlman wè koneksyon an chiffres ak sèvè SOCKS ou a, ki vle di yo pa wè anyen.
  2. Men, li wè demann NTP ou yo, yo anpeche sa a, retire wout estatik pou serveurs NTP. Sepandan, li pa sèten ke sèvè SOCKS ou a pèmèt pwotokòl NTP la.

Beki takte sou Debain 10

Si ou eseye rekòmanse sèvis rezo a soti nan konsole a, li pral echwe ak yon erè. Sa a se akòz lefèt ke yon pati nan li nan fòm lan nan yon koòdone vityèl se mare nan sèvis la tun2socks, ki vle di li se itilize. Pou rekòmanse sèvis rezo a, ou dwe premye sispann sèvis tun2socks la. Men, mwen panse, si ou li jiska la fen, sa a se definitivman pa yon pwoblèm pou ou!

Referans

  1. Wout estatik sou Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Script sa a kreye yon Pwen Aksè WiFi NATed oswa Bridged.
  5. dnscrypt-proxy 2 — Yon prokurasyon DNS fleksib, ak sipò pou pwotokòl DNS chiffres.

Sous: www.habr.com