Pagtukod og router sa SOCKS sa Debian 10 laptop

Sulod sa usa ka tuig (o duha) gihunong nako ang pagmantala sa kini nga artikulo tungod sa panguna nga hinungdan - nakagawas na ako sa duha nga mga artikulo diin gihulagway nako ang proseso sa paghimo usa ka router sa SOCKS gikan sa usa ka ordinaryo nga laptop nga adunay Debian.

Bisan pa, sukad niadto ang lig-on nga bersyon sa Debian na-update sa Buster, igo nga gidaghanon sa mga tawo ang nakontak kanako nga pribado nga nangayo alang sa tabang sa pag-setup, nga nagpasabut nga ang akong mga miaging artikulo dili kompleto. Aw, ako mismo nakatag-an nga ang mga pamaagi nga gilatid niini dili hingpit nga nagpadayag sa tanan nga mga kakuti sa pag-set up sa Linux alang sa pag-ruta sa SOCKS. Dugang pa, kini gisulat alang sa Debian Stretch, ug human sa pag-upgrade sa Buster, sa systemd init system, nakamatikod ko og gagmay nga mga kausaban sa interaksyon sa mga serbisyo. Ug sa mga artikulo mismo, wala ako mogamit systemd-networkd, bisan kung kini labing angay alang sa komplikado nga mga pag-configure sa network.

Dugang pa sa mga pagbag-o sa ibabaw, ang mga mosunud nga serbisyo gidugang sa akong pag-configure: hostapd - serbisyo alang sa access point virtualization, ntp aron i-synchronize ang oras sa mga kliyente sa lokal nga network, dnscrypt-proxy sa pag-encrypt sa mga koneksyon pinaagi sa DNS ug pag-disable sa advertising sa mga kliyente sa lokal nga network, ug usab, sama sa akong gihisgutan sa sayo pa, systemd-networkd alang sa pag-configure sa mga interface sa network.

Ania ang pinakasimple nga block diagram sa internal nga istruktura sa maong router.

Pagtukod og router sa SOCKS sa Debian 10 laptop

Busa, pahinumdoman ko ikaw kon unsa ang mga tumong niining serye sa mga artikulo:

  1. Iruta ang tanang koneksyon sa OS ngadto sa SOCKS, ingon man ang mga koneksyon gikan sa tanang device sa samang network sa laptop.
  2. Ang laptop sa akong kaso kinahanglan nga magpabilin nga hingpit nga mobile. Nga mao, sa paghatag sa oportunidad sa paggamit sa desktop palibot ug dili gihigot sa usa ka pisikal nga lokasyon.
  3. Ang katapusan nga punto nagpasabot sa koneksyon ug routing lamang pinaagi sa built-in wireless interface.
  4. Aw, ug siyempre, ang paghimo sa usa ka komprehensibo nga giya, ingon man usa ka pagtuki sa mga may kalabutan nga teknolohiya sa labing kaayo sa akong kasarangan nga kahibalo.

Unsa ang hisgotan niini nga artikulo:

  1. git - pag-download sa mga repositoryo sa proyekto tun2medyasgikinahanglan aron maruta ang trapiko sa TCP ngadto sa SOCKS, ug paghimo_ap - usa ka script aron ma-automate ang pag-configure sa usa ka virtual access point nga gigamit hostapd.
  2. tun2medyas - paghimo ug pag-install sa systemd nga serbisyo sa sistema.
  3. systemd-networkd - i-configure ang wireless ug virtual nga mga interface, static nga mga routing table ug packet redirection.
  4. paghimo_ap β€” i-install ang systemd nga serbisyo sa sistema, i-configure ug ilunsad ang usa ka virtual access point.

Opsyonal nga mga lakang:

  • ntp β€” i-install ug i-configure ang usa ka server aron ma-synchronize ang oras sa mga kliyente sa virtual access point.
  • dnscrypt-proxy β€” I-encrypt namo ang mga hangyo sa DNS, i-ruta kini sa SOCKS ug i-disable ang mga domain sa advertising para sa lokal nga network.

Para sa unsa kining tanan?

Kini usa sa mga paagi aron maorganisar ang pagpanalipod sa mga koneksyon sa TCP sa usa ka lokal nga network. Ang nag-unang bentaha mao nga ang tanan nga mga koneksyon gihimo sa SOCKS, gawas kung ang usa ka static nga ruta gitukod alang kanila pinaagi sa orihinal nga ganghaan. Nagpasabot kini nga dili nimo kinahanglan nga ipiho ang mga setting sa server sa SOCKS alang sa indibidwal nga mga programa o kliyente sa lokal nga network - silang tanan moadto sa SOCKS nga default, tungod kay kini ang default nga ganghaan hangtod nga ipakita namon kung dili.

Sa tinuud nagdugang kami usa ka ikaduha nga pag-encrypt nga router ingon usa ka laptop sa atubangan sa orihinal nga router ug gigamit ang koneksyon sa Internet sa orihinal nga router alang sa na-encrypt na nga mga hangyo sa SOCKS sa laptop, nga sa baylo nag-ruta ug nag-encrypt sa mga hangyo gikan sa mga kliyente sa LAN.

Gikan sa punto sa pagtan-aw sa provider, kami kanunay nga konektado sa usa ka server nga adunay naka-encrypt nga trapiko.

Tungod niini, ang tanan nga mga aparato konektado sa virtual access point sa laptop.

I-install ang tun2socks sa sistema

Hangtud nga adunay internet sa imong makina, i-download ang tanan nga kinahanglan nga mga himan.

apt update
apt install git make cmake

I-download ang badvpn package

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

Usa ka folder ang makita sa imong sistema badvpn. Paghimo usa ka lahi nga folder sa pagtukod

mkdir badvpn-build

Lakaw ngadto niini

cd badvpn-build

Pagkolekta tun2socks

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

Pag-instalar sa sistema

make install
  • Parameter -DBUILD_NOTHING_BY_DEFAULT=1 gi-disable ang pagtukod sa tanan nga mga sangkap sa repository sa badvpn.
  • -DBUILD_TUN2SOCKS=1 naglakip sa usa ka component sa asembliya tun2medyas.
  • make install - i-install ang tun2socks binary sa imong sistema sa /usr/local/bin/badvpn-tun2socks.

I-install ang serbisyo sa tun2socks sa systemd

Paghimo og file /etc/systemd/system/tun2socks.service uban sa mosunod nga sulod:

[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 - nagkuha sa ngalan sa virtual interface nga atong gisugdan sa systemd-networkd.
  • --netif-ipaddr β€” ang adres sa network sa tun2socks nga β€œrouter” diin konektado ang virtual interface. Mas maayo nga himuon kini nga lahi gitagana nga subnet.
  • --socks-server-addr - modawat ug socket (адрСс:ΠΏΠΎΡ€Ρ‚ Mga server sa SOCKS).

Kung ang imong SOCKS server nanginahanglan pag-authenticate, mahimo nimong ipiho ang mga kapilian --username ΠΈ --password.

Sunod, irehistro ang serbisyo

systemctl daemon-reload

Ug i-on kini

systemctl enable tun2socks

Sa wala pa magsugod ang serbisyo, hatagan namon kini usa ka virtual nga interface sa network.

Pagbalhin sa systemd-networkd

Padayon systemd-networkd:

systemctl enable systemd-networkd

I-disable ang kasamtangang serbisyo sa network.

systemctl disable networking NetworkManager NetworkManager-wait-online
  • NetworkManager-maghulat-online usa ka serbisyo nga naghulat alang sa usa ka nagtrabaho nga koneksyon sa network sa wala pa ang systemd magpadayon sa pagsugod sa ubang mga serbisyo nga nagdepende sa presensya sa usa ka network. Gi-disable namo kini samtang mibalhin kami sa systemd-networkd analogue.

Himoon nato kini dayon:

systemctl enable systemd-networkd-wait-online

I-set up ang wireless network interface

Paghimo ug systemd-networkd configuration file para sa wireless network interface /etc/systemd/network/25-wlp6s0.network.

[Match]
Name=wlp6s0

[Network]
Address=192.168.1.2/24
IPForward=yes
  • ngalan mao ang ngalan sa imong wireless interface. Ilha kini sa sugo ip a.
  • IP Sa unahan - usa ka direktiba nga makahimo sa packet redirection sa usa ka network interface.
  • Address maoy responsable sa paghatag ug IP address sa wireless interface. Gipunting namon kini nga static tungod kay adunay katumbas nga direktiba DHCP=yes, systemd-networkd nagmugna ug default gateway sa sistema. Unya ang tanang trapiko moagi sa orihinal nga ganghaan, ug dili pinaagi sa umaabot nga virtual interface sa laing subnet. Mahimo nimong susihon ang kasamtangan nga default gateway gamit ang command ip r

Paghimo og static nga ruta para sa remote SOCKS server

Kung ang imong SOCKS server dili lokal, apan hilit, nan kinahanglan ka nga maghimo usa ka static nga ruta alang niini. Aron mahimo kini, pagdugang usa ka seksyon Route hangtod sa katapusan sa wireless interface configuration file nga imong gibuhat uban sa mosunod nga sulod:

[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
  • Gateway mao ang default gateway o ang adres sa imong orihinal nga access point.
  • Destination - Address sa server sa SOCKS.

I-set up ang wpa_supplicant para sa systemd-networkd

Ang systemd-networkd naggamit sa wpa_supplicant aron makonektar sa usa ka luwas nga access point. Kung gisulayan ang "pagdala" sa usa ka wireless interface, ang systemd-networkd nagsugod sa usa ka serbisyo wpa_supplicant@имяdiin имя mao ang ngalan sa wireless interface. Kung wala nimo gigamit ang systemd-networkd sa wala pa kini nga punto, nan kini nga serbisyo lagmit nawala sa imong sistema.

Busa paghimo niini gamit ang sugo:

systemctl enable wpa_supplicant@wlp6s0

akong gigamit wlp6s0 ingon ang ngalan sa wireless interface niini. Mahimong lahi ang imong ngalan. Mahimo nimong mailhan kini pinaagi sa mando ip l.

Karon ang gibuhat nga serbisyo wpa_supplicant@wlp6s0 ilunsad kung ang wireless interface "gipataas", bisan pa, kini, sa baylo, mangita alang sa mga setting sa SSID ug password sa access point sa file /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Busa, kinahanglan nimo nga buhaton kini gamit ang utility wpa_passphrase.

Aron mahimo kini, pagdagan ang mando:

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

diin SSID mao ang ngalan sa imong access point, ang password mao ang password, ug wlp6s0 mao ang ngalan sa imong wireless interface.

Pagsugod ug virtual interface para sa tun2socks

Paghimo og file aron masugdan ang bag-ong virtual interface sa sistema/etc/systemd/network/25-tun2socks.netdev

[NetDev]
Name=tun2socks
Kind=tun
  • ngalan mao ang ngalan nga i-assign sa systemd-networkd sa umaabot nga virtual interface kung kini gisugdan.
  • matang usa ka matang sa virtual interface. Gikan sa ngalan sa serbisyo sa tun2socks, makatag-an ka nga kini naggamit sa usa ka interface sama tun.
  • netdev mao ang extension sa mga file nga systemd-networkd Gigamit sa pagsugod sa virtual nga mga interface sa network. Ang adres ug uban pang mga setting sa network alang niini nga mga interface gitakda sa .network- mga file.

Paghimo usa ka file nga sama niini /etc/systemd/network/25-tun2socks.network uban sa mosunod nga sulod:

[Match]
Name=tun2socks

[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
  • Name β€” ang ngalan sa virtual interface nga imong gipiho netdev- file.
  • Address β€” IP address nga itudlo sa virtual interface. Kinahanglan nga naa sa parehas nga network sa adres nga imong gitakda sa serbisyo sa tun2socks
  • Gateway - IP address sa "router" tun2medyas, nga imong gipiho sa paghimo sa systemd nga serbisyo.

Busa ang interface tun2medyas naay adres 172.16.1.2, ug ang serbisyo tun2medyas - 172.16.1.1, kana mao, kini ang ganghaan alang sa tanan nga mga koneksyon gikan sa virtual interface.

Paghimo usa ka virtual nga hotspot

I-install ang mga dependency:

apt install util-linux procps hostapd iw haveged

I-download ang repositoryo paghimo_ap sa imong sakyanan:

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

Pagdala ngadto sa repository folder sa imong makina:

cd create_ap

Pag-instalar sa sistema:

make install

config makita sa imong sistema /etc/create_ap.conf. Ania ang nag-unang mga kapilian sa pag-edit:

  • GATEWAY=10.0.0.1 - mas maayo nga himuon kini nga lahi nga gireserba nga subnet.
  • NO_DNS=1 - disable, tungod kay kini nga parameter pagadumalaon sa systemd-networkd virtual interface.
  • NO_DNSMASQ=1 - i-off sa parehas nga hinungdan.
  • WIFI_IFACE=wlp6s0 - laptop wireless interface.
  • INTERNET_IFACE=tun2socks usa ka virtual nga interface nga gihimo para sa tun2socks.
  • SSID=hostapd β€” ngalan sa virtual access point.
  • PASSPHRASE=12345678 - password.

Ayaw kalimot sa pagpagana sa serbisyo:

systemctl enable create_ap

I-enable ang DHCP server sa systemd-networkd

Pag-alagad create_ap Nagsugod sa usa ka virtual nga interface sa sistema ap0. Sa teorya, ang dnsmasq nagbitay sa kini nga interface, apan ngano nga mag-install ug dugang nga mga serbisyo kung ang systemd-networkd adunay usa ka built-in nga DHCP server?

Aron mahimo kini, among ipasabut ang mga setting sa network alang sa virtual nga punto. Aron mahimo kini, paghimo usa ka file /etc/systemd/network/25-ap0.network uban sa mosunod nga sulod:

[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

Human ang create_ap nga serbisyo magsugod sa virtual interface ap0, ang systemd-networkd awtomatik nga maghatag ug IP address niini ug makapahimo sa DHCP server.

Mga kuwerdas EmitDNS=yes ΠΈ DNS=10.0.0.1 ipadala ang mga setting sa DNS server ngadto sa mga device nga konektado sa access point.

Kung wala ka nagplano nga mogamit usa ka lokal nga DNS server - sa akong kaso kini dnscrypt-proxy - mahimo nimong i-install DNS=10.0.0.1 Π² DNS=192.168.1.1diin 192.168.1.1 mao ang adres sa imong orihinal nga ganghaan. Unya ang mga hangyo sa DNS alang sa imong host ug lokal nga network dili ma-encrypt pinaagi sa mga server sa provider.

EmitNTP=yes ΠΈ NTP=192.168.1.1 pagbalhin sa mga setting sa NTP.

Ingon usab niini ang linya NTP=10.0.0.1.

I-install ug i-configure ang NTP server

Pag-instalar sa sistema:

apt install ntp

I-edit ang config /etc/ntp.conf. Ikomento ang mga adres sa standard pool:

#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

Idugang ang mga adres sa publiko nga server, pananglitan sa Google Public NTP:

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

Paghatag ug access sa server sa mga kliyente gikan sa imong network:

restrict 10.0.0.0 mask 255.255.255.0

I-enable ang pagsibya sa imong network:

broadcast 10.0.0.255

Sa katapusan, idugang ang mga adres niini nga mga server sa static nga routing table. Aron mahimo kini, ablihi ang wireless interface configuration file /etc/systemd/network/25-wlp6s0.network ug idugang sa katapusan sa seksyon 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

Mahimo nimong mahibal-an ang mga adres sa imong NTP server gamit ang utility host ingon sa mosunod:

host time1.google.com

I-install ang dnscrypt-proxy, kuhaa ang mga ad ug itago ang trapiko sa DNS gikan sa imong provider

apt install dnscrypt-proxy

Sa pag-alagad sa DNS nga mga pangutana sa host ug lokal nga network, usba ang socket /lib/systemd/system/dnscrypt-proxy.socket. Usba ang mosunod nga mga linya:

ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53

I-restart systemd:

systemctl daemon-reload

I-edit ang config /etc/dnscrypt-proxy/dnscrypt-proxy.toml:

server_names = ['adguard-dns']

Aron maruta ang mga koneksyon sa dnscrypt-proxy pinaagi sa tun2socks idugang ang mosunod:

force_tcp = true

I-edit ang config /etc/resolv.conf, nga nagsulti sa DNS server sa host.

nameserver 127.0.0.1
nameserver 192.168.1.1

Ang una nga linya makahimo sa paggamit sa dnscrypt-proxy, ang ikaduha nga linya naggamit sa orihinal nga ganghaan kung ang dnscrypt-proxy server dili magamit.

Nahimo na!

Pag-reboot o paghunong sa pagpadagan sa mga serbisyo sa network:

systemctl stop networking NetworkManager NetworkManager-wait-online

Ug i-restart ang tanan nga gikinahanglan:

systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntp

Human sa pag-reboot o pag-restart, aduna kay ikaduhang access point nga nag-ruta sa host ug LAN device ngadto sa SOCKS.

Ang output ingon niini ip a regular nga laptop:

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

Ingon sa usa ka resulta,

  1. Makita ra sa provider ang naka-encrypt nga koneksyon sa imong SOCKS server, nga nagpasabot nga wala silay nakita.
  2. Ug bisan pa nakita niini ang imong mga hangyo sa NTP, aron mapugngan kini, kuhaa ang mga static nga ruta alang sa mga server sa NTP. Bisan pa, dili sigurado nga ang imong SOCKS server nagtugot sa NTP protocol.

Ang crutch nakit-an sa Debain 10

Kung sulayan nimo nga i-restart ang serbisyo sa network gikan sa console, kini mapakyas sa usa ka sayup. Kini tungod sa kamatuoran nga ang bahin niini sa porma sa usa ka virtual nga interface gihigot sa serbisyo sa tun2socks, nga nagpasabot nga kini gigamit. Aron ma-restart ang serbisyo sa network, kinahanglan nimo nga hunongon una ang serbisyo sa tun2socks. Apan, sa akong hunahuna, kung magbasa ka hangtod sa katapusan, siguradong dili kini problema alang kanimo!

mga pakisayran

  1. Static Routing sa Linux - IBM
  2. systemd-networkd.service - Freedesktop.org
  3. Tun2socks Β· ambrop72/badvpn Wiki Β· GitHub
  4. oblique/create_ap: Kini nga script nagmugna og NATed o Bridged WiFi Access Point.
  5. dnscrypt-proxy 2 β€” Usa ka flexible DNS proxy, nga adunay suporta alang sa naka-encrypt nga mga protocol sa DNS.

Source: www.habr.com