Adeiladu llwybrydd yn SOCKS ar liniadur gyda Debian 10

Am flwyddyn gyfan (neu ddwy) fe wnes i ohirio cyhoeddi'r erthygl hon am y prif reswm - roeddwn eisoes wedi cyhoeddi dwy erthygl lle disgrifiais y broses o greu llwybrydd yn SOCKS o liniadur cyffredin iawn gyda Debian.

Fodd bynnag, ers hynny mae'r fersiwn sefydlog o Debian wedi'i diweddaru i Buster, mae nifer ddigonol o bobl wedi cysylltu â mi yn breifat yn gofyn am help gyda'r setup, sy'n golygu nad yw fy erthyglau blaenorol yn gynhwysfawr. Wel, fe wnes i fy hun ddyfalu nad yw'r dulliau a amlinellir ynddynt yn datgelu'n llawn yr holl gymhlethdodau o sefydlu Linux ar gyfer llwybro yn SOCKS. Yn ogystal, maent wedi'u hysgrifennu ar gyfer Debian Stretch, ac ar ôl uwchraddio i Buster, yn y system init systemd, sylwais ar newidiadau bach yn y rhyngweithio rhwng gwasanaethau. Ac yn yr erthyglau eu hunain, ni ddefnyddiais systemd-networkd, er ei fod yn fwyaf addas ar gyfer cyfluniadau rhwydwaith cymhleth.

Yn ogystal â'r newidiadau uchod, ychwanegwyd y gwasanaethau canlynol at fy nghyfluniad: hostapd - gwasanaeth ar gyfer rhithwiroli pwynt mynediad, ntp i gydamseru amser cleientiaid rhwydwaith lleol, dnscrypt-procsi i amgryptio cysylltiadau trwy DNS ac analluogi hysbysebu ar gleientiaid rhwydwaith lleol, a hefyd, fel y soniais yn gynharach, systemd-rhwydwaith ar gyfer ffurfweddu rhyngwynebau rhwydwaith.

Dyma ddiagram bloc syml o strwythur mewnol llwybrydd o'r fath.

Adeiladu llwybrydd yn SOCKS ar liniadur gyda Debian 10

Felly, gadewch imi eich atgoffa beth yw nodau'r gyfres hon o erthyglau:

  1. Llwybro pob cysylltiad OS i SOCKS, yn ogystal â chysylltiadau o bob dyfais ar yr un rhwydwaith â'r gliniadur.
  2. Dylai'r gliniadur yn fy achos i aros yn gwbl symudol. Hynny yw, i roi'r cyfle i ddefnyddio'r amgylchedd bwrdd gwaith a pheidio â bod yn gysylltiedig â lleoliad ffisegol.
  3. Mae'r pwynt olaf yn awgrymu cysylltiad a llwybro trwy'r rhyngwyneb diwifr adeiledig yn unig.
  4. Wel, ac wrth gwrs, creu canllaw cynhwysfawr, yn ogystal â dadansoddiad o'r technolegau perthnasol hyd eithaf fy ngwybodaeth gymedrol.

Beth fydd yn cael sylw yn yr erthygl hon:

  1. git — lawrlwytho storfeydd prosiect tun2sanauofynnol i gyfeirio traffig TCP i SOCKS, a creu_ap — sgript i awtomeiddio gosodiad pwynt mynediad rhithwir gan ddefnyddio hostapd.
  2. tun2sanau — adeiladu a gosod y gwasanaeth systemd ar y system.
  3. systemd-rhwydwaith — ffurfweddu rhyngwynebau di-wifr a rhithwir, tablau llwybro statig ac ailgyfeirio pecynnau.
  4. creu_ap — gosod y gwasanaeth systemd ar y system, ffurfweddu a lansio pwynt mynediad rhithwir.

Camau dewisol:

  • ntp — gosod a ffurfweddu gweinydd i gydamseru amser ar gleientiaid pwynt mynediad rhithwir.
  • dnscrypt-procsi — byddwn yn amgryptio ceisiadau DNS, yn eu cyfeirio at SOCKS ac yn analluogi parthau hysbysebu ar gyfer y rhwydwaith lleol.

Beth yw pwrpas hwn i gyd?

Dyma un o'r ffyrdd o sicrhau cysylltiadau TCP ar rwydwaith lleol. Y brif fantais yw bod pob cysylltiad yn cael ei wneud yn SOCKS, oni bai bod llwybr sefydlog yn cael ei adeiladu ar eu cyfer trwy'r porth gwreiddiol. Mae hyn yn golygu nad oes angen i chi nodi gosodiadau gweinydd SOCKS ar gyfer naill ai rhaglenni unigol neu gleientiaid ar y rhwydwaith lleol - maen nhw i gyd yn mynd i SOCKS yn ddiofyn, gan mai dyma'r porth rhagosodedig nes i ni nodi fel arall.

Yn y bôn rydym yn ychwanegu ail lwybrydd amgryptio fel gliniadur o flaen y llwybrydd gwreiddiol ac yn defnyddio cysylltiad Rhyngrwyd y llwybrydd gwreiddiol ar gyfer ceisiadau SOCKS y gliniadur sydd eisoes wedi'u hamgryptio, sydd yn ei dro yn llwybro ac yn amgryptio ceisiadau gan gleientiaid LAN.

O safbwynt y darparwr, rydym yn gyson yn gysylltiedig ag un gweinydd gyda thraffig wedi'i amgryptio.

Yn unol â hynny, mae pob dyfais wedi'i gysylltu â phwynt mynediad rhithwir y gliniadur.

Gosod tun2socks ar y system

Cyn belled â bod gan eich peiriant rhyngrwyd, lawrlwythwch yr holl offer angenrheidiol.

apt update
apt install git make cmake

Lawrlwythwch y pecyn badvpn

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

Bydd ffolder yn ymddangos ar eich system badvpn. Creu ffolder ar wahân ar gyfer yr adeilad

mkdir badvpn-build

Ewch iddo

cd badvpn-build

Casglu tun2socks

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

Gosod ar y system

make install
  • Paramedr -DBUILD_NOTHING_BY_DEFAULT=1 yn analluogi adeiladu holl gydrannau'r ystorfa badvpn.
  • -DBUILD_TUN2SOCKS=1 yn cynnwys cydran yn y cynulliad tun2sanau.
  • make install — yn gosod y deuaidd tun2socks ar eich system yn /usr/local/bin/badvpn-tun2socks.

Gosodwch y gwasanaeth tun2socks yn systemd

Creu ffeil /etc/systemd/system/tun2socks.service gyda'r cynnwys canlynol:

[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 - yn cymryd enw'r rhyngwyneb rhithwir rydyn ni'n ei gychwyn â systemd-networkd.
  • --netif-ipaddr — cyfeiriad rhwydwaith y “llwybrydd” tun2socks y mae'r rhyngwyneb rhithwir wedi'i gysylltu ag ef. Mae'n well ei wneud ar wahân is-rwydwaith neilltuedig.
  • --socks-server-addr - yn derbyn soced (адрес:порт gweinyddwyr SOCKS).

Os oes angen dilysu eich gweinydd SOCKS, gallwch chi nodi'r paramedrau --username и --password.

Nesaf, cofrestrwch y gwasanaeth

systemctl daemon-reload

A'i droi ymlaen

systemctl enable tun2socks

Cyn dechrau'r gwasanaeth, byddwn yn darparu rhyngwyneb rhwydwaith rhithwir iddo.

Newid i systemd-networkd

Rydym yn cynnwys systemd-networkd:

systemctl enable systemd-networkd

Analluogi gwasanaethau rhwydwaith cyfredol.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-aros-ar-lein yn wasanaeth sy'n aros am gysylltiad rhwydwaith gweithredol cyn i systemd barhau i gychwyn gwasanaethau eraill sy'n dibynnu ar bresenoldeb rhwydwaith. Rydym yn ei analluogi wrth i ni newid i'r analog rhwydwaith systemd.

Gadewch i ni ei alluogi ar unwaith:

systemctl enable systemd-networkd-wait-online

Sefydlu'r rhyngwyneb rhwydwaith diwifr

Creu ffeil ffurfweddu systemd-rhwydwaith ar gyfer y rhyngwyneb rhwydwaith diwifr /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • Enw yw enw eich rhyngwyneb diwifr. Ei adnabod gyda'r gorchymyn ip a.
  • IPForward - cyfarwyddeb sy'n galluogi ailgyfeirio pecynnau ar ryngwyneb rhwydwaith.
  • cyfeiriad yn gyfrifol am aseinio cyfeiriad IP i'r rhyngwyneb diwifr. Rydym yn ei nodi'n statig oherwydd gyda'r gyfarwyddeb gyfatebol DHCP=yes, systemd-networkd yn creu porth rhagosodedig ar y system. Yna bydd yr holl draffig yn mynd trwy'r porth gwreiddiol, ac nid trwy'r rhyngwyneb rhithwir yn y dyfodol ar is-rwydwaith gwahanol. Gallwch wirio'r porth rhagosodedig cyfredol gyda'r gorchymyn ip r

Creu llwybr statig ar gyfer y gweinydd SOCKS o bell

Os nad yw eich gweinydd SOCKS yn lleol, ond yn anghysbell, yna mae angen i chi greu llwybr sefydlog ar ei gyfer. I wneud hyn, ychwanegwch adran Route i ddiwedd y ffeil ffurfweddu rhyngwyneb diwifr a grëwyd gennych gyda'r cynnwys canlynol:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — dyma'r porth rhagosodedig neu gyfeiriad eich pwynt mynediad gwreiddiol.
  • Destination — Cyfeiriad gweinydd SOCKS.

Ffurfweddu wpa_supplicant ar gyfer systemd-networkd

Mae systemd-networkd yn defnyddio wpa_supplicant i gysylltu â phwynt mynediad diogel. Wrth geisio "codi" y rhyngwyneb diwifr, mae systemd-networkd yn cychwyn y gwasanaeth wpa_supplicant@имяlle Enw yw enw'r rhyngwyneb diwifr. Os nad ydych wedi defnyddio systemd-networkd cyn y pwynt hwn, yna mae'n debyg bod y gwasanaeth hwn ar goll ar eich system.

Felly crewch ef gyda'r gorchymyn:

systemctl enable wpa_supplicant@wlp6s0

Defnyddiais i wlp6s0 fel enw ei ryngwyneb diwifr. Gall eich enw fod yn wahanol. Gallwch ei adnabod gyda'r gorchymyn ip l.

Nawr y gwasanaeth a grëwyd wpa_supplicant@wlp6s0 yn cael ei lansio pan fydd y rhyngwyneb diwifr yn cael ei “godi”, fodd bynnag, bydd, yn ei dro, yn edrych am y gosodiadau SSID a chyfrinair y pwynt mynediad yn y ffeil /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Felly, mae angen i chi ei greu gan ddefnyddio'r cyfleustodau wpa_passphrase.

I wneud hyn, rhedeg y gorchymyn:

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

lle SSID yw enw eich pwynt mynediad, cyfrinair yw'r cyfrinair, a wlp6s0 - enw eich rhyngwyneb diwifr.

Cychwyn y rhyngwyneb rhithwir ar gyfer tun2socks

Creu ffeil i gychwyn rhyngwyneb rhithwir newydd yn y system/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Enw yw'r enw y bydd systemd-networkd yn ei aseinio i'r rhyngwyneb rhithwir yn y dyfodol pan gaiff ei gychwyn.
  • Plant yn fath o ryngwyneb rhithwir. O enw'r gwasanaeth tun2socks, gallwch chi ddyfalu ei fod yn defnyddio rhyngwyneb fel tun.
  • netdev yw'r estyniad o ffeiliau sy'n systemd-networkd Yn defnyddio i gychwyn rhyngwynebau rhwydwaith rhithwir. Mae'r cyfeiriad a gosodiadau rhwydwaith eraill ar gyfer y rhyngwynebau hyn wedi'u nodi yn .netwaith-ffeiliau.

Creu ffeil fel hyn /etc/systemd/network/25-tun2socks.network gyda'r cynnwys canlynol:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — enw'r rhyngwyneb rhithwir a nodwyd gennych netdev-ffeil.
  • Address — Cyfeiriad IP a fydd yn cael ei neilltuo i'r rhyngwyneb rhithwir. Rhaid iddo fod ar yr un rhwydwaith â'r cyfeiriad a nodwyd gennych yn y gwasanaeth tun2socks
  • Gateway — Cyfeiriad IP y “llwybrydd” tun2sanau, a nodwyd gennych wrth greu'r gwasanaeth systemd.

Felly y rhyngwyneb tun2sanau mae ganddo gyfeiriad 172.16.1.2, a'r gwasanaeth tun2sanau - 172.16.1.1, hynny yw, dyma'r porth ar gyfer pob cysylltiad o'r rhyngwyneb rhithwir.

Sefydlu pwynt mynediad rhithwir

Gosod dibyniaethau:

apt install util-linux procps hostapd iw haveged

Lawrlwythwch yr ystorfa creu_ap i'ch car:

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

Ewch i'r ffolder ystorfa ar eich peiriant:

cd create_ap

Gosod ar y system:

make install

Bydd ffurfwedd yn ymddangos ar eich system /etc/create_ap.conf. Dyma'r prif opsiynau golygu:

  • GATEWAY=10.0.0.1 - mae'n well ei wneud yn is-rwydwaith neilltuedig ar wahân.
  • NO_DNS=1 - analluogi, gan y bydd y paramedr hwn yn cael ei reoli gan y rhyngwyneb rhithwir systemd-network.
  • NO_DNSMASQ=1 - trowch ef i ffwrdd am yr un rheswm.
  • WIFI_IFACE=wlp6s0 - rhyngwyneb diwifr gliniadur.
  • INTERNET_IFACE=tun2socks - rhyngwyneb rhithwir wedi'i greu ar gyfer tun2socks.
  • SSID=hostapd — enw'r pwynt mynediad rhithwir.
  • PASSPHRASE=12345678 - cyfrinair.

Peidiwch ag anghofio galluogi'r gwasanaeth:

systemctl enable create_ap

Galluogi gweinydd DHCP mewn systemd-networkd

Gwasanaeth create_ap yn cychwyn rhyngwyneb rhithwir yn y system ap0. Mewn theori, mae dnsmasq yn hongian ar y rhyngwyneb hwn, ond pam gosod gwasanaethau ychwanegol os yw systemd-networkd yn cynnwys gweinydd DHCP adeiledig?

Er mwyn ei alluogi, byddwn yn diffinio'r gosodiadau rhwydwaith ar gyfer y pwynt rhithwir. I wneud hyn, crëwch ffeil /etc/systemd/network/25-ap0.network gyda'r cynnwys canlynol:

[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

Ar ôl i'r gwasanaeth create_ap gychwyn y rhyngwyneb rhithwir ap0, bydd systemd-networkd yn aseinio cyfeiriad IP yn awtomatig iddo ac yn galluogi'r gweinydd DHCP.

Llinellau EmitDNS=yes и DNS=10.0.0.1 trosglwyddo gosodiadau gweinydd DNS i ddyfeisiau sy'n gysylltiedig â'r pwynt mynediad.

Os nad ydych yn bwriadu defnyddio gweinydd DNS lleol - yn fy achos i mae'n dnscrypt-proxy - gallwch chi osod DNS=10.0.0.1 в DNS=192.168.1.1lle 192.168.1.1 — cyfeiriad eich porth gwreiddiol. Yna bydd ceisiadau DNS am eich gwesteiwr a'ch rhwydwaith lleol yn mynd heb eu hamgryptio trwy weinyddion y darparwr.

EmitNTP=yes и NTP=192.168.1.1 trosglwyddo gosodiadau NTP.

Mae'r un peth yn wir am y llinell NTP=10.0.0.1.

Gosod a ffurfweddu gweinydd NTP

Gosod ar y system:

apt install ntp

Golygu'r ffurfwedd /etc/ntp.conf. Rhowch sylwadau ar gyfeiriadau pyllau safonol:

#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

Ychwanegu cyfeiriadau gweinydd cyhoeddus, er enghraifft Google Public NTP:

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

Rhowch fynediad i'r gweinydd i gleientiaid ar eich rhwydwaith:

restrict 10.0.0.0 mask 255.255.255.0

Galluogi darlledu i'ch rhwydwaith:

broadcast 10.0.0.255

Yn olaf, ychwanegwch gyfeiriadau'r gweinyddion hyn at y tabl llwybro statig. I wneud hyn, agorwch y ffeil ffurfweddu rhyngwyneb diwifr /etc/systemd/network/25-wlp6s0.network ac ychwanegu at ddiwedd yr adran 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

Gallwch ddarganfod cyfeiriadau eich gweinyddwyr NTP gan ddefnyddio'r cyfleustodau host fel a ganlyn:

host time1.google.com

Gosod dnscrypt-proxy, dileu hysbysebion a chuddio traffig DNS oddi wrth eich darparwr

apt install dnscrypt-proxy

I wasanaethu ymholiadau gwesteiwr a rhwydwaith lleol DNS, golygwch y soced /lib/systemd/system/dnscrypt-proxy.socket. Newidiwch y llinellau canlynol:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Ail-ddechrau systemd:

systemctl daemon-reload

Golygu'r ffurfwedd /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

I lwybro cysylltiadau dnscrypt-proxy trwy tun2socks, ychwanegwch isod:

force_tcp = true

Golygu'r ffurfwedd /etc/resolv.conf, sy'n dweud wrth y gweinydd DNS i'r gwesteiwr.

nameserver 127.0.0.1
nameserver 192.168.1.1

Mae'r llinell gyntaf yn galluogi defnyddio dnscrypt-proxy, mae'r ail linell yn defnyddio'r porth gwreiddiol rhag ofn na fydd y gweinydd dnscrypt-proxy ar gael.

Wedi'i wneud!

Ailgychwyn neu stopio rhedeg gwasanaethau rhwydwaith:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ac ailgychwyn popeth sy'n angenrheidiol:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Ar ôl ailgychwyn neu ailgychwyn, bydd gennych ail bwynt mynediad sy'n llwybro'r dyfeisiau gwesteiwr a LAN i SOCKS.

Dyma sut olwg sydd ar yr allbwn ip a gliniadur arferol:

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

O ganlyniad,

  1. Dim ond y cysylltiad wedi'i amgryptio i'ch gweinydd SOCKS y mae'r darparwr yn ei weld, sy'n golygu nad yw'n gweld dim.
  2. Ac eto mae'n gweld eich ceisiadau NTP, i atal hyn, dileu llwybrau statig ar gyfer gweinyddwyr NTP. Fodd bynnag, nid yw'n sicr a yw eich gweinydd SOCKS yn caniatáu'r protocol NTP.

Crutch a welwyd ar Debain 10

Os ceisiwch ailgychwyn y gwasanaeth rhwydwaith o'r consol, bydd yn methu â gwall. Mae hyn oherwydd y ffaith bod rhan ohono ar ffurf rhyngwyneb rhithwir yn gysylltiedig â'r gwasanaeth tun2socks, sy'n golygu ei fod yn cael ei ddefnyddio. I ailgychwyn y gwasanaeth rhwydwaith, yn gyntaf rhaid i chi atal y gwasanaeth tun2socks. Ond, dwi'n meddwl, os ydych chi'n darllen hyd y diwedd, yn bendant nid yw hyn yn broblem i chi!

cyfeiriadau

  1. Llwybro statig ar Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Mae'r sgript hon yn creu Pwynt Mynediad WiFi NAT neu Bridged.
  5. dnscrypt-proxy 2 - Dirprwy DNS hyblyg, gyda chefnogaeth ar gyfer protocolau DNS wedi'u hamgryptio.

Ffynhonnell: hab.com