Сохтани роутер дар SOCKS дар ноутбук бо Debian 10

Дар тӯли як сол (ё ду) ман интишори ин мақоларо бо сабаби асосӣ ба таъхир андохтам - ман аллакай ду мақоларо нашр карда будам, ки дар онҳо раванди сохтани роутер дар SOCKS аз ноутбуки хеле оддӣ бо Debian тавсиф карда будам.

Аммо, аз он вақт инҷониб версияи устувори Debian ба Buster нав карда шуд, шумораи кофии одамон ба таври хусусӣ бо ман тамос гирифта, дар танзимот кӯмак пурсиданд, ки ин маънои онро дорад, ки мақолаҳои қаблии ман мукаммал нестанд. Хуб, ман худам тахмин мезанам, ки усулҳои дар онҳо зикршуда тамоми нозукиҳои танзими Linux-ро барои масир дар SOCKS пурра ошкор намекунанд. Илова бар ин, онҳо барои Debian Stretch навишта шудаанд ва пас аз навсозӣ ба Buster, дар системаи systemd init, ман тағироти хурдро дар ҳамкории хидматҳо мушоҳида кардам. Ва дар худи мақолаҳо, ман systemd-networkd-ро истифода накардаам, гарчанде ки он барои конфигуратсияҳои мураккаби шабака беҳтарин мувофиқ аст.

Илова ба тағйироти дар боло зикршуда, хидматҳои зерин ба конфигуратсияи ман илова карда шуданд: хостапд - хидмат барои виртуализатсияи нуқтаи дастрасӣ, данд барои ҳамоҳангсозии вақти муштариёни шабакаи маҳаллӣ, dnscrypt-прокси барои рамзгузории пайвастшавӣ тавассути DNS ва ғайрифаъол кардани таблиғ дар муштариёни шабакаи маҳаллӣ ва инчунин, тавре ки ман қаблан зикр кардам, systemd-networkd барои танзими интерфейсҳои шабакавӣ.

Дар ин ҷо диаграммаи блоки оддии сохтори дохилии чунин роутер оварда шудааст.

Сохтани роутер дар SOCKS дар ноутбук бо Debian 10

Пас, биёед ба шумо хотиррасон кунам, ки ҳадафҳои ин силсила мақолаҳо чист:

  1. Ҳама пайвастҳои ОС-ро ба SOCKS, инчунин пайвастҳоро аз ҳама дастгоҳҳо дар як шабака бо ноутбук равона кунед.
  2. Ноутбук дар ҳолати ман бояд комилан мобилӣ боқӣ монад. Яъне, додани имкони истифодаи муҳити мизи корӣ ва баста нашудан ба макони ҷисмонӣ.
  3. Нуқтаи охирин пайвастшавӣ ва масирро танҳо тавассути интерфейси бесими дарунсохт дар назар дорад.
  4. Хуб, ва албатта, эҷоди як дастури ҳамаҷониба, инчунин таҳлили технологияҳои дахлдор ба беҳтарин дониши хоксоронаи ман.

Дар ин мақола чӣ баррасӣ хоҳад шуд:

  1. рафтан — репозиторийҳои лоиҳаро зеркашӣ кунед ҷӯроби тун2барои масири трафики TCP ба SOCKS лозим аст ва эҷод_ap — скрипт барои автоматикунонии танзими нуқтаи дастрасии виртуалӣ бо истифода аз хостапд.
  2. ҷӯроби тун2 — сохтан ва насб кардани хидмати systemd дар система.
  3. systemd-networkd — конфигуратсияи интерфейсҳои бесим ва виртуалӣ, ҷадвалҳои масиркунии статикӣ ва масиркунии бастаҳо.
  4. эҷод_ap — хидмати systemd-ро дар система насб кунед, нуқтаи дастрасии виртуалиро танзим ва оғоз кунед.

Қадамҳои ихтиёрӣ:

  • данд — серверро барои ҳамоҳангсозии вақт дар мизоҷони нуқтаи дастрасии виртуалӣ насб ва танзим кунед.
  • dnscrypt-прокси — мо дархостҳои DNS-ро рамзгузорӣ мекунем, онҳоро ба SOCKS равона мекунем ва доменҳои таблиғотиро барои шабакаи маҳаллӣ хомӯш мекунем.

Чаро ҳамаи ин?

Ин яке аз роҳҳои таъмини пайвастҳои TCP дар шабакаи маҳаллӣ мебошад. Бартарии асосӣ дар он аст, ки ҳама пайвастҳо дар SOCKS анҷом дода мешаванд, ба шарте ки барои онҳо тавассути дарвозаи аслӣ масири статикӣ сохта нашавад. Ин маънои онро дорад, ки ба шумо лозим нест, ки танзимоти сервери SOCKS -ро барои барномаҳои инфиродӣ ё муштариёни шабакаи маҳаллӣ муайян кунед - ҳамаашон ба таври нобаёнӣ ба SOCKS мераванд, зеро он шлюзи пешфарз аст, то даме ки мо тартиби дигареро нишон надиҳем.

Аслан мо роутери дуюми рамзгузориро ҳамчун ноутбук дар назди роутери аслӣ илова мекунем ва пайвасти интернетии роутерро барои дархостҳои аллакай рамзгузоришудаи SOCKS-и ноутбук истифода мебарем, ки дар навбати худ дархостҳои муштариёни LAN-ро масир ва рамзгузорӣ мекунад.

Аз нуқтаи назари провайдер, мо пайваста ба як сервер бо трафики рамзгузоришуда пайвастем.

Мувофиқи он, ҳамаи дастгоҳҳо ба нуқтаи дастрасии виртуалии ноутбук пайваст карда шудаанд.

Дар система tun2socks насб кунед

То он даме, ки мошини шумо интернет дорад, ҳама асбобҳои заруриро зеркашӣ кунед.

apt update
apt install git make cmake

Бастаи badvpn-ро зеркашӣ кунед

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

Дар системаи шумо папка пайдо мешавад badvpn. Барои сохтмон папкаи алоҳида эҷод кунед

mkdir badvpn-build

Ба он равед

cd badvpn-build

Ҷамъоварӣ кунед tun2socks

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

Дар система насб кунед

make install
  • Параметр -DBUILD_NOTHING_BY_DEFAULT=1 сохтани тамоми ҷузъҳои анбори badvpn-ро ғайрифаъол мекунад.
  • -DBUILD_TUN2SOCKS=1 ҷузъи таркибиро дар бар мегирад ҷӯроби тун2.
  • make install — дар системаи шумо бинарии tun2socks насб мекунад /usr/local/bin/badvpn-tun2socks.

Хизматрасонии tun2socks -ро дар systemd насб кунед

Файл эҷод кунед /etc/systemd/system/tun2socks.service бо мазмуни зерин:

[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 - номи интерфейси виртуалиро мегирад, ки мо онро бо systemd-networkd оғоз мекунем.
  • --netif-ipaddr — суроғаи шабакаи tun2socks “роутер”, ки интерфейси виртуалӣ ба он пайваст аст. Беҳтар аст, ки онро ҷудо кунед зершабакаи ҳифзшуда.
  • --socks-server-addr - розеткаро қабул мекунад (адрес:порт серверҳои SOCKS).

Агар сервери SOCKS-и шумо аутентификатсияро талаб кунад, шумо метавонед параметрҳоро муайян кунед --username и --password.

Баъдан, хидматро ба қайд гиред

systemctl daemon-reload

Ва онро фаъол созед

systemctl enable tun2socks

Пеш аз оғози хидмат, мо онро бо интерфейси шабакаи виртуалӣ таъмин мекунем.

Гузариш ба systemd-networkd

Мо дохил мекунем systemd-networkd:

systemctl enable systemd-networkd

Хидматҳои ҷории шабакаро хомӯш кунед.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-интизори-онлайн хадамотест, ки пеш аз он ки systemd оғоз кардани хидматҳои дигареро, ки аз мавҷудияти шабака вобаста аст, идома диҳад, пайвасти кори шабакаро интизор аст. Вақте ки мо ба аналоги systemd-networkd мегузарем, мо онро ғайрифаъол мекунем.

Биёед онро фавран фаъол созем:

systemctl enable systemd-networkd-wait-online

Интерфейси шабакаи бесимро насб кунед

Барои интерфейси шабакаи бесим файли конфигуратсияи systemd-networkd эҷод кунед /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • ном номи интерфейси бесими шумост. Онро бо фармон муайян кунед ip a.
  • IPForward - директивае, ки ба интерфейси шабака интиқоли бастаҳоро имкон медиҳад.
  • Нишонӣ барои таъини суроғаи IP ба интерфейси бесим масъул аст. Мо онро ба таври статикӣ муайян мекунем, зеро бо дастури баробар DHCP=yes, systemd-networkd дар система шлюзи пешфарзро эҷод мекунад. Он гоҳ тамоми трафик тавассути дарвозаи аслӣ мегузарад, на тавассути интерфейси виртуалии оянда дар зершабакаи дигар. Шумо метавонед шлюзи ҷории пешфарзро бо фармон санҷед ip r

Барои сервери дурдасти SOCKS масири статикӣ эҷод кунед

Агар сервери SOCKS-и шумо маҳаллӣ набошад, балки дурдаст бошад, пас шумо бояд барои он масири статикӣ эҷод кунед. Барои ин, як бахш илова кунед Route то охири файли конфигуратсияи интерфейси бесим, ки шумо бо мундариҷаи зерин сохтаед:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway — ин дарвозаи пешфарз ё суроғаи нуқтаи дастрасии аслии шумост.
  • Destination — Суроғаи сервери SOCKS.

wpa_supplicant барои systemd-networkd танзим кунед

systemd-networkd барои пайваст шудан ба нуқтаи дастрасии бехатар wpa_supplicant -ро истифода мебарад. Ҳангоми кӯшиши "баланд бардоштани" интерфейси бесим, systemd-networkd хидматро оғоз мекунад wpa_supplicant@имяки дар ном номи интерфейси бесим аст. Агар шумо то ин лаҳза systemd-networkd-ро истифода накарда бошед, пас эҳтимолан ин хидмат дар системаи шумо мавҷуд нест.

Пас онро бо фармон эҷод кунед:

systemctl enable wpa_supplicant@wlp6s0

истифода бурдам wlp6s0 ҳамчун номи интерфейси бесими он. Номи шумо метавонад гуногун бошад. Шумо метавонед онро бо фармон эътироф кунед ip l.

Ҳоло хидмати сохташуда wpa_supplicant@wlp6s0 вақте ки интерфейси бесим "бардошта шудааст" оғоз мешавад, аммо он дар навбати худ танзимоти SSID ва пароли нуқтаи дастрасиро дар файл ҷустуҷӯ мекунад /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Аз ин рӯ, шумо бояд онро бо истифода аз утилита эҷод кунед wpa_passphrase.

Барои ин, фармонро иҷро кунед:

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

ки SSID номи нуқтаи дастрасии шумост, парол парол аст ва wlp6s0 — номи интерфейси бесими шумо.

Интерфейси виртуалиро барои tun2socks оғоз кунед

Барои оғоз кардани интерфейси нави виртуалӣ дар система файл эҷод кунед/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • ном номест, ки systemd-networkd ба интерфейси виртуалии оянда ҳангоми оғозёбӣ таъин мекунад.
  • навъ як намуди интерфейси виртуалӣ мебошад. Аз номи хидмати tun2socks, шумо метавонед тахмин кунед, ки он интерфейсеро истифода мебарад tun.
  • нетдев васеъшавии файлҳо мебошад, ки systemd-networkd Барои оғоз кардани интерфейсҳои шабакаи виртуалӣ истифода мебарад. Суроға ва танзимоти дигари шабака барои ин интерфейсҳо дар .шабака-файлҳо.

Чунин файл эҷод кунед /etc/systemd/network/25-tun2socks.network бо мазмуни зерин:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name — номи интерфейси виртуалӣ, ки шумо дар он нишон додаед нетдев-файл.
  • Address — Суроғаи IP, ки ба интерфейси виртуалӣ таъин карда мешавад. Бояд дар ҳамон шабака бо суроғае, ки шумо дар хидмати tun2socks нишон додаед, бошад
  • Gateway — суроғаи IP-и "роутер" ҷӯроби тун2, ки шумо ҳангоми эҷоди хидмати systemd муайян кардаед.

Ҳамин тавр, интерфейс ҷӯроби тун2 адрес дорад 172.16.1.2, ва хизматрасонӣ ҷӯроби тун2 - 172.16.1.1, яъне он дарвозаи ҳамаи пайвастҳо аз интерфейси виртуалӣ мебошад.

Нуқтаи дастрасии виртуалӣ насб кунед

Вобастагӣ насб кунед:

apt install util-linux procps hostapd iw haveged

Анборро зеркашӣ кунед create_ap ба мошини шумо:

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

Ба ҷузвдони анбори мошини худ равед:

cd create_ap

Дар система насб кунед:

make install

Дар системаи шумо конфигуратсия пайдо мешавад /etc/create_ap.conf. Инҳоянд вариантҳои асосии таҳрир:

  • GATEWAY=10.0.0.1 — беҳтар аст, ки онро зершабакаи алоҳида ҳифз карда шавад.
  • NO_DNS=1 - хомӯш кунед, зеро ин параметр тавассути интерфейси виртуалии systemd-networkd идора карда мешавад.
  • NO_DNSMASQ=1 - бо ҳамин сабаб хомӯш кунед.
  • WIFI_IFACE=wlp6s0 — интерфейси бесими ноутбук.
  • INTERNET_IFACE=tun2socks - интерфейси виртуалӣ барои tun2socks сохта шудааст.
  • SSID=hostapd — номи нуқтаи дастрасии виртуалӣ.
  • PASSPHRASE=12345678 - парол.

Фаромӯш накунед, ки хидматро фаъол созед:

systemctl enable create_ap

Сервери DHCP-ро дар systemd-networkd фаъол созед

Хизмат create_ap интерфейси виртуалиро дар система оғоз мекунад ap0. Дар назария, dnsmasq дар ин интерфейс овезон аст, аммо чаро хидматҳои иловагӣ насб кардан лозим аст, агар systemd-networkd дорои сервери дарунсохтаи DHCP бошад?

Барои фаъол кардани он, мо танзимоти шабакаро барои нуқтаи виртуалӣ муайян мекунем. Барои ин, файл эҷод кунед /etc/systemd/network/25-ap0.network бо мазмуни зерин:

[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

Пас аз он ки хидмати create_ap интерфейси виртуалиро оғоз мекунад ap0, systemd-networkd ба таври худкор ба он суроғаи IP таъин мекунад ва сервери DHCP-ро фаъол мекунад.

Сатрҳо EmitDNS=yes и DNS=10.0.0.1 танзимоти сервери DNS-ро ба дастгоҳҳои ба нуқтаи дастрасӣ пайвастшуда интиқол диҳед.

Агар шумо нақшаи истифодаи сервери маҳаллии DNS-ро надошта бошед - дар ҳолати ман он dnscrypt-proxy аст - шумо метавонед насб кунед DNS=10.0.0.1 в DNS=192.168.1.1ки дар 192.168.1.1 — суроғаи дарвозаи аслии шумо. Сипас дархостҳои DNS барои мизбон ва шабакаи маҳаллии шумо тавассути серверҳои провайдер рамзкунонида намешаванд.

EmitNTP=yes и NTP=192.168.1.1 интиқоли танзимоти NTP.

Айнан ҳамин чиз барои хат меравад NTP=10.0.0.1.

Сервери NTP-ро насб ва танзим кунед

Дар система насб кунед:

apt install ntp

Конфигуратсияро таҳрир кунед /etc/ntp.conf. Суроғаҳои ҳавзҳои стандартиро шарҳ диҳед:

#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

Илова кардани суроғаҳои сервери ҷамъиятӣ, масалан Google Public NTP:

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

Ба муштариён дар шабакаи шумо дастрасӣ ба серверро таъмин кунед:

restrict 10.0.0.0 mask 255.255.255.0

Пахшро ба шабакаи худ фаъол созед:

broadcast 10.0.0.255

Дар ниҳоят, суроғаҳои ин серверҳоро ба ҷадвали масири статикӣ илова кунед. Барои ин, файли конфигуратсияи интерфейси бесимиро кушоед /etc/systemd/network/25-wlp6s0.network ва ба охири бахш илова кунед 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

Шумо метавонед бо истифода аз утилита суроғаҳои серверҳои NTP-и худро пайдо кунед host чунин аст:

host time1.google.com

dnscrypt-proxy насб кунед, таблиғҳоро нест кунед ва трафики DNS-ро аз провайдери худ пинҳон кунед

apt install dnscrypt-proxy

Барои хидматрасонӣ ба хост ва дархостҳои шабакаи маҳаллӣ DNS, розеткаро таҳрир кунед /lib/systemd/system/dnscrypt-proxy.socket. Сатрҳои зеринро тағир диҳед:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

Оғози дубора systemd:

systemctl daemon-reload

Конфигуратсияро таҳрир кунед /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Барои масири пайвастҳои dnscrypt-proxy тавассути tun2socks, дар зер илова кунед:

force_tcp = true

Конфигуратсияро таҳрир кунед /etc/resolv.conf, ки сервери DNS-ро ба мизбон мегӯяд.

nameserver 127.0.0.1
nameserver 192.168.1.1

Сатри аввал истифодаи dnscrypt-proxy-ро имкон медиҳад, хати дуюм шлюзи аслиро дар сурати мавҷуд набудани сервери dnscrypt-proxy истифода мебарад.

Муҳокима!

Хидматҳои шабакаро аз нав оғоз кунед ё қатъ кунед:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ва ҳама заруриро аз нав оғоз кунед:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Пас аз бозоғозӣ ё бозоғозӣ, шумо нуқтаи дастрасии дуюм хоҳед дошт, ки ҳост ва дастгоҳҳои LAN-ро ба SOCKS равона мекунад.

Чунин аст, ки баромад ба назар мерасад ip a ноутбуки муқаррарӣ:

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

Дар натиҷа,

  1. Провайдер танҳо пайвасти рамзгузоришударо ба сервери SOCKS-и шумо мебинад, яъне онҳо ҳеҷ чизро намебинанд.
  2. Ва аммо он дархостҳои NTP-и шуморо мебинад, барои пешгирӣ кардани ин, хатсайрҳои статикиро барои серверҳои NTP хориҷ кунед. Аммо, мутмаин нест, ки сервери SOCKS-и шумо ба протоколи NTP иҷозат медиҳад.

Crutch дар Debain 10 пайдо шуд

Агар шумо кӯшиш кунед, ки хидмати шабакаро аз консол бозоғоз намоед, он бо хатогӣ ноком мешавад. Ин ба он вобаста аст, ки як қисми он дар шакли интерфейси виртуалӣ ба хидмати tun2socks баста шудааст, ки маънои онро дорад, ки он истифода мешавад. Барои аз нав оғоз кардани хидмати шабака, шумо бояд аввал хидмати tun2socks-ро қатъ кунед. Аммо, ман фикр мекунам, ки агар шумо то охир хонед, ин бешубҳа барои шумо мушкиле нест!

мурожиат

  1. Масири статикӣ дар Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks · ambrop72/badvpn Wiki · GitHub
  4. oblique/create_ap: Ин скрипт нуқтаи дастрасии NATed ё Bridged WiFi эҷод мекунад.
  5. dnscrypt-proxy 2 - Прокси DNS фасеҳ бо дастгирии протоколҳои рамзгузоришудаи DNS.

Манбаъ: will.com