A’ togail router ann an SOCKS air laptop le Debian 10

Airson bliadhna (no dhà) chuir mi dheth a bhith a 'foillseachadh an artaigil seo airson a' phrìomh adhbhar - bha mi mu thràth air dà artaigil fhoillseachadh anns an tug mi cunntas air a 'phròiseas airson a bhith a' cruthachadh router ann an SOCKS bho laptop gu math àbhaisteach le Debian.

Ach, bhon uairsin chaidh an dreach seasmhach de Debian ùrachadh gu Buster, tha àireamh gu leòr de dhaoine air fios a chuir thugam gu prìobhaideach ag iarraidh cuideachadh leis an stèidheachadh, a tha a’ ciallachadh nach eil na h-artaigilean a bh ’agam roimhe coileanta. Uill, bha mi fhìn a’ smaoineachadh nach eil na dòighean a tha air am mìneachadh annta a’ nochdadh gu h-iomlan a h-uile duilgheadas a thaobh a bhith a’ stèidheachadh Linux airson a dhol ann an SOCKS. A bharrachd air an sin, tha iad air an sgrìobhadh airson Debian Stretch, agus an dèidh ùrachadh gu Buster, anns an t-siostam init systemd, mhothaich mi atharrachaidhean beaga ann an eadar-obrachadh sheirbheisean. Agus anns na h-artaigilean fhèin, cha do chleachd mi systemd-networkd, ged a tha e nas freagarraiche airson rèiteachadh lìonra iom-fhillte.

A bharrachd air na h-atharrachaidhean gu h-àrd, chaidh na seirbheisean a leanas a chur ris an rèiteachadh agam: hostapd - seirbheis airson virtualization puing ruigsinneachd, ntp gus ùine luchd-dèiligidh lìonra ionadail a shioncronachadh, dnscrypt-proxy gus ceanglaichean a chrioptachadh tro DNS agus sanasachd a chuir dheth air teachdaichean lìonra ionadail, agus cuideachd, mar a thuirt mi na bu thràithe, siostam-lìonra airson eadar-aghaidh lìonra a rèiteachadh.

Seo diagram bloca sìmplidh de structar a-staigh an router sin.

A’ togail router ann an SOCKS air laptop le Debian 10

Mar sin, leig dhomh do chuimhneachadh dè na h-amasan a th’ aig an t-sreath artaigilean seo:

  1. Slighe a h-uile ceangal OS gu SOCKS, a bharrachd air ceanglaichean bho gach inneal air an aon lìonra ris an laptop.
  2. Bu chòir don laptop sa chùis agam fuireach gu tur gluasadach. Is e sin, gus an cothrom a thoirt seachad an àrainneachd deasg a chleachdadh agus gun a bhith ceangailte ri àite fiosaigeach.
  3. Tha a’ phuing mu dheireadh a’ ciallachadh ceangal agus slighe a-mhàin tron ​​eadar-aghaidh gun uèir togte.
  4. Uill, agus gu dearbh, cruthachadh iùl coileanta, a bharrachd air mion-sgrùdadh air na teicneòlasan buntainneach cho fad ‘s as aithne dhomh.

Dè a thèid a chòmhdach san artaigil seo:

  1. git - luchdaich sìos stòran pròiseict tun2 stocainneana dhìth gus trafaic TCP a stiùireadh gu SOCKS, agus cruthaich_ap - sgriobt gus suidheachadh puing ruigsinneachd brìgheil a dhèanamh fèin-ghluasadach a’ cleachdadh hostapd.
  2. tun2 stocainnean - tog agus stàlaich an t-seirbheis systemd air an t-siostam.
  3. siostam-lìonra - rèiteachadh eadar-aghaidh gun uèir agus brìgheil, bùird slighe statach agus ath-stiùireadh pacaid.
  4. cruthaich_ap - stàlaich an t-seirbheis systemd air an t-siostam, rèiteachadh agus cuir air bhog àite inntrigidh brìgheil.

Ceumannan roghainneil:

  • ntp - stàlaich agus rèitich frithealaiche gus ùine a shioncronachadh air teachdaichean puing ruigsinneachd brìgheil.
  • dnscrypt-proxy - crioptaichidh sinn iarrtasan DNS, slighe iad gu SOCKS agus cuiridh sinn à comas raointean sanasachd airson an lìonraidh ionadail.

Carson a tha seo uile?

Is e seo aon de na dòighean air ceanglaichean TCP a dhèanamh tèarainte air lìonra ionadail. Is e am prìomh bhuannachd gu bheil a h-uile ceangal air a dhèanamh ann an SOCKS, mura tèid slighe statach a thogail dhaibh tron ​​​​gheata tùsail. Tha seo a’ ciallachadh nach fheum thu roghainnean frithealaiche SOCKS a shònrachadh airson an dàrna cuid prògraman fa-leth no teachdaichean air an lìonra ionadail - bidh iad uile a’ dol gu SOCKS gu bunaiteach, oir is e seo an geata bunaiteach gus an innis sinn a chaochladh.

Gu bunaiteach bidh sinn a’ cur dàrna router crioptachaidh mar laptop air beulaibh an router tùsail agus a’ cleachdadh ceangal eadar-lìn an router tùsail airson iarrtasan SOCKS a chaidh a chrioptachadh mar-thà aig an laptop, a bhios an uair sin a’ slighean agus a’ cuairteachadh iarrtasan bho luchd-dèiligidh LAN.

Bho shealladh an t-solaraiche, tha sinn an-còmhnaidh ceangailte ri aon fhrithealaiche le trafaic crioptaichte.

Mar sin, tha a h-uile inneal ceangailte ri àite inntrigidh brìgheil an laptop.

Stàlaich tun2socks air an t-siostam

Cho fad ‘s a tha eadar-lìn aig an inneal agad, luchdaich sìos na h-innealan riatanach uile.

apt update
apt install git make cmake

Luchdaich a-nuas badvpn pack

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

Nochdaidh pasgan air an t-siostam agad badvpn. Cruthaich pasgan fa leth airson an togail

mkdir badvpn-build

Rach thuige

cd badvpn-build

Cruinnich tun2socks

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

Stàladh air an t-siostam

make install
  • Parameter -DBUILD_NOTHING_BY_DEFAULT=1 a’ cur casg air togail a h-uile pàirt den stòr badvpn.
  • -DBUILD_TUN2SOCKS=1 gabhail a-steach pàirt anns a’ cho-chruinneachadh tun2 stocainnean.
  • make install - stàlaidhidh tu am binary tun2socks air an t-siostam agad aig /usr/local/bin/badvpn-tun2socks.

Stàlaich an t-seirbheis tun2socks ann an systemd

Cruthaich faidhle /etc/systemd/system/tun2socks.service leis an t-susbaint a leanas:

[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 - a’ gabhail ainm an eadar-aghaidh brìgheil a thòisicheas sinn le systemd-networkd.
  • --netif-ipaddr - seòladh lìonra an “router” tun2socks ris a bheil an eadar-aghaidh brìgheil ceangailte. Tha e nas fheàrr a dhèanamh air leth subnet glèidhte.
  • --socks-server-addr - a’ gabhail ri socaid (адрес:порт frithealaichean SOCKS).

Ma tha feum aig an t-seirbheisiche SOCKS agad air dearbhadh, faodaidh tu na paramadairean a shònrachadh --username и --password.

An ath rud, clàraich an t-seirbheis

systemctl daemon-reload

Agus tionndaidh air

systemctl enable tun2socks

Mus tòisich sinn air an t-seirbheis, bheir sinn seachad eadar-aghaidh lìonra mas-fhìor dha.

Ag atharrachadh gu systemd-networkd

Tionndaidh air systemd-networkd:

systemctl enable systemd-networkd

Cuir dheth seirbheisean lìonra gnàthach.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-feitheamh-air-loidhne na sheirbheis a tha a’ feitheamh ri ceangal lìonra obrach mus lean systemd air adhart a’ tòiseachadh air seirbheisean eile a tha an urra ri làthaireachd lìonra. Tha sinn ga chuir dheth agus sinn ag atharrachadh chun analog systemd-networkd.

Leig leinn a chomasachadh sa bhad:

systemctl enable systemd-networkd-wait-online

Stèidhich an eadar-aghaidh lìonra gun uèir

Cruthaich faidhle rèiteachaidh systemd-network airson an eadar-aghaidh lìonra gun uèir /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • Ainm is e ainm an eadar-aghaidh gun uèir agad. Comharraich e leis an àithne ip a.
  • IPF air adhart - stiùireadh a leigeas le ath-stiùireadh pacaid air eadar-aghaidh lìonra.
  • seòladh an urra ri seòladh IP a shònrachadh don eadar-aghaidh gun uèir. Bidh sinn ga shònrachadh gu statach air sgàth leis an stiùireadh co-ionann DHCP=yes, systemd-networkd a' cruthachadh geata bunaiteach air an t-siostam. An uairsin thèid a h-uile trafaic tron ​​​​gheata tùsail, agus chan ann tron ​​​​eadar-aghaidh brìgheil san àm ri teachd air subnet eile. Faodaidh tu sgrùdadh a dhèanamh air a’ gheata àbhaisteach gnàthach leis an àithne ip r

Cruthaich slighe statach airson an fhrithealaiche SOCKS iomallach

Mura h-eil am frithealaiche SOCKS agad ionadail, ach iomallach, feumaidh tu slighe statach a chruthachadh air a shon. Gus seo a dhèanamh, cuir earrann ris Route gu deireadh an fhaidhle rèiteachaidh eadar-aghaidh gun uèir a chruthaich thu leis an t-susbaint a leanas:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway - is e seo an geata bunaiteach no seòladh an àite inntrigidh tùsail agad.
  • Destination - Seòladh frithealaiche SOCKS.

Dèan rèiteachadh wpa_supplicant airson systemd-networkd

Bidh systemd-networkd a’ cleachdadh wpa_supplicant gus ceangal ri àite inntrigidh tèarainte. Nuair a bhios tu a 'feuchainn ris an eadar-aghaidh gun uèir "àrdachadh", bidh systemd-networkd a' tòiseachadh na seirbheis wpa_supplicant@имяcàite ainm is e ainm an eadar-aghaidh gun uèir. Mura h-eil thu air systemd-networkd a chleachdadh ron àm seo, is dòcha gu bheil an t-seirbheis seo a dhìth air an t-siostam agad.

Mar sin cruthaich e leis an òrdugh:

systemctl enable wpa_supplicant@wlp6s0

Chleachd mi wlp6s0 mar ainm an eadar-aghaidh gun uèir aige. Faodaidh d’ ainm a bhith eadar-dhealaichte. Faodaidh tu aithneachadh leis an àithne ip l.

A-nis an t-seirbheis a chaidh a chruthachadh wpa_supplicant@wlp6s0 thèid a chuir air bhog nuair a thèid an eadar-aghaidh gun uèir “àrdachadh”, ge-tà, seallaidh e, an uair sin, airson roghainnean SSID agus facal-faire an àite inntrigidh san fhaidhle /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Mar sin, feumaidh tu a chruthachadh a 'cleachdadh an utility wpa_passphrase.

Gus seo a dhèanamh, ruith an àithne:

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

far a bheil SSID is e ainm an àite inntrigidh agad, is e facal-faire am facal-faire, agus wlp6s0 - ainm an eadar-aghaidh gun uèir agad.

Tòisich an eadar-aghaidh brìgheil airson tun2socks

Cruthaich faidhle gus eadar-aghaidh brìgheil ùr a thòiseachadh san t-siostam/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • Ainm an t-ainm a shònraicheas systemd-networkd don eadar-aghaidh brìgheil san àm ri teachd nuair a thèid a thòiseachadh.
  • Kind tha e na sheòrsa de eadar-aghaidh brìgheil. Bho ainm na seirbheis tun2socks, faodaidh tu tomhas gu bheil e a’ cleachdadh eadar-aghaidh mar tun.
  • lìonradh is e leudachadh nam faidhlichean a tha systemd-networkd A’ cleachdadh gus eadar-aghaidh lìonra mas-fhìor a thòiseachadh. Tha an seòladh agus suidheachaidhean lìonra eile airson na h-eadar-aghaidh sin air an sònrachadh ann an .lìonra- faidhlichean.

Cruthaich faidhle mar seo /etc/systemd/network/25-tun2socks.network leis an t-susbaint a leanas:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name - ainm an eadar-aghaidh brìgheil a shònraich thu ann lìonradh-faidhle.
  • Address - Seòladh IP a thèid a shònrachadh don eadar-aghaidh brìgheil. Feumaidh a bhith air an aon lìonra ris an t-seòladh a shònraich thu san t-seirbheis tun2socks
  • Gateway - Seòladh IP an “router” tun2 stocainnean, a shònraich thu nuair a chruthaich thu an t-seirbheis systemd.

Mar sin an eadar-aghaidh tun2 stocainnean tha seòladh aige 172.16.1.2, agus an t-seirbhis tun2 stocainnean - 172.16.1.1, is e sin, is e an geata airson a h-uile ceangal bhon eadar-aghaidh brìgheil.

Stèidhich àite inntrigidh brìgheil

Stàlaich eisimeileachd:

apt install util-linux procps hostapd iw haveged

Luchdaich sìos an stòr cruthaich_ap dhan chàr agad:

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

Rach gu pasgan an stòrais air an inneal agad:

cd create_ap

Stàladh air an t-siostam:

make install

Nochdaidh config air an t-siostam agad /etc/create_ap.conf. Seo na prìomh roghainnean deasachaidh:

  • GATEWAY=10.0.0.1 - tha e nas fheàrr a dhèanamh na subnet glèidhte air leth.
  • NO_DNS=1 - cuir à comas, oir bidh am paramadair seo air a riaghladh leis an eadar-aghaidh brìgheil systemd-networkd.
  • NO_DNSMASQ=1 - cuir dheth e airson an aon adhbhar.
  • WIFI_IFACE=wlp6s0 - eadar-aghaidh gun uèir laptop.
  • INTERNET_IFACE=tun2socks - eadar-aghaidh brìgheil air a chruthachadh airson tun2socks.
  • SSID=hostapd - ainm a’ phuing ruigsinneachd brìgheil.
  • PASSPHRASE=12345678 - facal-faire.

Na dìochuimhnich an t-seirbheis a chomasachadh:

systemctl enable create_ap

Dèan comas air frithealaiche DHCP ann an systemd-networkd

Seirbheis create_ap a’ tòiseachadh eadar-aghaidh brìgheil san t-siostam ap0. Ann an teòiridh, tha dnsmasq an crochadh air an eadar-aghaidh seo, ach carson a stàlaicheas tu seirbheisean a bharrachd ma tha frithealaiche DHCP stèidhichte ann an systemd-networkd?

Gus a chomasachadh, mìnichidh sinn na roghainnean lìonra airson a’ phuing brìgheil. Gus seo a dhèanamh, cruthaich faidhle /etc/systemd/network/25-ap0.network leis an t-susbaint a leanas:

[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

Às deidh don t-seirbheis create_ap tòiseachadh air an eadar-aghaidh brìgheil ap0, sònraichidh systemd-networkd seòladh IP gu fèin-ghluasadach agus bheir e comas don fhrithealaiche DHCP.

Sreathan EmitDNS=yes и DNS=10.0.0.1 cuir a-mach roghainnean frithealaiche DNS gu innealan ceangailte ris an àite inntrigidh.

Mura h-eil thu an dùil frithealaiche DNS ionadail a chleachdadh - anns a’ chùis agam is e dnscrypt-proxy a th’ ann - faodaidh tu stàladh DNS=10.0.0.1 в DNS=192.168.1.1càite 192.168.1.1 - seòladh do gheata tùsail. An uairsin thèid iarrtasan DNS airson an aoigh agus an lìonra ionadail agad gun chrioptachadh tro luchd-frithealaidh an t-solaraiche.

EmitNTP=yes и NTP=192.168.1.1 gluasad roghainnean NTP.

Tha an aon rud a 'dol airson an loidhne NTP=10.0.0.1.

Stàlaich is rèitich frithealaiche NTP

Stàladh air an t-siostam:

apt install ntp

Deasaich an config /etc/ntp.conf. Thoir beachd air seòlaidhean amaran àbhaisteach:

#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

Cuir seòlaidhean frithealaiche poblach ris, mar eisimpleir Google Public NTP:

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

Thoir cothrom air an fhrithealaiche do luchd-dèiligidh air an lìonra agad:

restrict 10.0.0.0 mask 255.255.255.0

Dèan comas air craoladh don lìonra agad:

broadcast 10.0.0.255

Mu dheireadh, cuir seòlaidhean nan frithealaichean sin ris a’ chlàr slighe statach. Gus seo a dhèanamh, fosgail am faidhle rèiteachaidh eadar-aghaidh gun uèir /etc/systemd/network/25-wlp6s0.network agus cuir gu deireadh na h-earrainn 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

Gheibh thu a-mach seòlaidhean do luchd-frithealaidh NTP a’ cleachdadh a’ ghoireas host mar a leanas:

host time1.google.com

Stàlaich dnscrypt-proxy, thoir air falbh sanasan agus cuir am falach trafaic DNS bhon t-solaraiche agad

apt install dnscrypt-proxy

Gus ceistean DNS aoigheachd is lìonra ionadail a fhrithealadh, deasaich an t-socaid /lib/systemd/system/dnscrypt-proxy.socket. Atharraich na loidhnichean a leanas:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Ath-thòisich systemd:

systemctl daemon-reload

Deasaich an config /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Gus ceanglaichean dnscrypt-proxy a stiùireadh tro tun2socks, cuir gu h-ìosal:

force_tcp = true

Deasaich an config /etc/resolv.conf, a dh'innseas don fhrithealaiche DNS don òstair.

nameserver 127.0.0.1
nameserver 192.168.1.1

Tha a’ chiad loidhne a’ comasachadh cleachdadh dnscrypt-proxy, bidh an dàrna loidhne a’ cleachdadh a’ gheata thùsail air eagal ’s nach eil am frithealaiche dnscrypt-proxy ri fhaighinn.

Done!

Ath-thòisich no stad air ruith seirbheisean lìonraidh:

systemctl stop networking NetworkManager NetworkManager-wait-online

Agus ath-thòiseachadh a h-uile dad riatanach:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Às deidh ath-thòiseachadh no ath-thòiseachadh, bidh dàrna àite inntrigidh agad a bhios a’ ruith na h-innealan aoigheachd agus LAN gu SOCKS.

Seo mar a tha an toradh coltach ip a laptop àbhaisteach:

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

Mar thoradh air,

  1. Chan fhaic an solaraiche ach an ceangal crioptaichte ris an t-seirbheisiche SOCKS agad, a’ ciallachadh nach fhaic iad dad.
  2. Agus a dh’ aindeoin sin chì e na h-iarrtasan NTP agad, gus casg a chuir air seo, thoir air falbh slighean statach airson frithealaichean NTP. Ach, chan eil e cinnteach gu bheil am frithealaiche SOCKS agad a’ ceadachadh protocol NTP.

Crutch ri fhaicinn air Debain 10

Ma dh'fheuchas tu ris an t-seirbheis lìonra ath-thòiseachadh bhon chonsail, fàilligidh e le mearachd. Tha seo air sgàth gu bheil pàirt dheth ann an cruth eadar-aghaidh brìgheil ceangailte ris an t-seirbheis tun2socks, a tha a’ ciallachadh gu bheil e air a chleachdadh. Gus an t-seirbheis lìonra ath-thòiseachadh, feumaidh tu an t-seirbheis tun2socks a stad an toiseach. Ach, tha mi a’ smaoineachadh, ma leughas tu chun deireadh, gu cinnteach chan eil seo na dhuilgheadas dhut!

iomraidhean

  1. Slighe statach air Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Bidh an sgriobt seo a’ cruthachadh puing inntrigidh WiFi NATed no Bridged.
  5. dnscrypt-proxy 2 - Neach-ionaid sùbailte DNS, le taic airson protocolaidhean DNS crioptaichte.

Source: www.habr.com