Selama setahun (atau dua) saya menangguhkan penerbitan artikel ini atas sebab utama - saya telah menerbitkan dua artikel di mana saya menerangkan proses mencipta penghala dalam SOCKS daripada komputer riba yang sangat biasa dengan Debian.
Walau bagaimanapun, sejak itu versi stabil Debian Saya telah menaik taraf kepada Buster, dan beberapa orang menghubungi saya secara peribadi untuk meminta bantuan dengan persediaan, bermakna artikel saya sebelum ini tidak lengkap. Saya sudah mengesyaki bahawa kaedah yang diterangkan di dalamnya tidak merangkumi sepenuhnya semua butiran persediaan. Linux untuk penghalaan dalam SOCKS. Selain itu, ia ditulis untuk Debian Regangkan, dan selepas menaik taraf kepada Buster, saya perasan beberapa perubahan kecil dalam cara perkhidmatan berinteraksi dengan sistem init systemd. Saya juga tidak menggunakan systemd-networkd dalam artikel itu sendiri, walaupun ia paling sesuai untuk konfigurasi rangkaian yang kompleks.
Sebagai tambahan kepada perubahan di atas, perkhidmatan berikut telah ditambahkan pada konfigurasi saya: hostapd - perkhidmatan untuk virtualisasi titik akses, ntp untuk menyegerakkan masa pelanggan rangkaian tempatan, dnscrypt-proxy untuk menyulitkan sambungan melalui DNS dan melumpuhkan pengiklanan pada pelanggan rangkaian tempatan, dan juga, seperti yang saya nyatakan sebelum ini, systemd-networkd untuk mengkonfigurasi antara muka rangkaian.
Berikut ialah gambarajah blok mudah struktur dalaman penghala tersebut.

Jadi, izinkan saya mengingatkan anda apakah matlamat siri artikel ini:
- Halakan semua sambungan OS ke SOCKS, serta sambungan daripada semua peranti pada rangkaian yang sama dengan komputer riba.
- Komputer riba dalam kes saya harus kekal mudah alih sepenuhnya. Iaitu, untuk memberi peluang untuk menggunakan persekitaran desktop dan tidak terikat dengan lokasi fizikal.
- Titik terakhir membayangkan sambungan dan penghalaan hanya melalui antara muka wayarles terbina dalam.
- Nah, dan sudah tentu, penciptaan panduan yang komprehensif, serta analisis teknologi yang berkaitan dengan pengetahuan sederhana saya yang terbaik.
Perkara yang akan dibincangkan dalam artikel ini:
- pergi — muat turun repositori projek tun2stocksdiperlukan untuk menghalakan trafik TCP ke SOCKS, dan buat_ap — skrip untuk mengautomasikan persediaan titik akses maya menggunakan hostapd.
- tun2stocks — membina dan memasang perkhidmatan systemd pada sistem.
- systemd-networkd — konfigurasikan antara muka wayarles dan maya, jadual penghalaan statik dan pengalihan semula paket.
- buat_ap — pasang perkhidmatan systemd pada sistem, konfigurasi dan lancarkan pusat akses maya.
Langkah pilihan:
- ntp — memasang dan mengkonfigurasi pelayan untuk menyegerakkan masa pada klien pusat akses maya.
- dnscrypt-proxy — kami akan menyulitkan permintaan DNS, menghalakannya ke SOCKS dan melumpuhkan domain pengiklanan untuk rangkaian tempatan.
Untuk apa semua ini?
Ini adalah salah satu cara untuk menjamin sambungan TCP pada rangkaian tempatan. Kelebihan utama adalah bahawa semua sambungan dibuat dalam SOCKS, melainkan laluan statik dibina untuk mereka melalui gerbang asal. Ini bermakna anda tidak perlu menentukan tetapan pelayan SOCKS sama ada untuk program individu atau klien pada rangkaian tempatan - semuanya pergi ke SOCKS secara lalai, kerana ia adalah get laluan lalai sehingga kami menyatakan sebaliknya.
Pada asasnya kami menambah penghala penyulitan kedua sebagai komputer riba di hadapan penghala asal dan menggunakan sambungan Internet penghala asal untuk permintaan SOCKS komputer riba yang telah disulitkan, yang seterusnya mengarahkan dan menyulitkan permintaan daripada pelanggan LAN.
Dari sudut pandangan pembekal, kami sentiasa disambungkan ke satu pelayan dengan trafik yang disulitkan.
Sehubungan itu, semua peranti disambungkan ke pusat akses maya komputer riba.
Pasang tun2socks pada sistem
Selagi mesin anda mempunyai internet, muat turun semua alatan yang diperlukan.
apt updateapt install git make cmakeMuat turun pakej badvpn
git clone https://github.com/ambrop72/badvpn
Folder akan muncul pada sistem anda badvpn. Buat folder berasingan untuk binaan
mkdir badvpn-build
Pergi ke sana
cd badvpn-build
Kumpul tun2socks
cmake ../badvpn -DBUILD_NOTHING_BY_DEFAULT=1 -DBUILD_TUN2SOCKS=1
Pasang pada sistem
make install
- Parameter
-DBUILD_NOTHING_BY_DEFAULT=1melumpuhkan binaan semua komponen repositori badvpn. - -
DBUILD_TUN2SOCKS=1termasuk komponen dalam pemasangan tun2stocks. make install— akan memasang binari tun2socks pada sistem anda di/usr/local/bin/badvpn-tun2socks.
Pasang perkhidmatan tun2socks dalam systemd
Buat fail /etc/systemd/system/tun2socks.service dengan kandungan berikut:
[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- mengambil nama antara muka maya yang kami mulakan dengan systemd-networkd.--netif-ipaddr— alamat rangkaian "penghala" tun2socks yang antara muka maya disambungkan. Lebih baik diasingkan .--socks-server-addr- menerima soket (адрес:портpelayan SOCKS).
Jika pelayan SOCKS anda memerlukan pengesahan, anda boleh menentukan parameter --username и --password.
Seterusnya, daftar perkhidmatan
systemctl daemon-reloadDan hidupkannya
systemctl enable tun2socksSebelum memulakan perkhidmatan, kami akan menyediakannya dengan antara muka rangkaian maya.
Beralih kepada systemd-networkd
Kami merangkumi systemd-networkd:
systemctl enable systemd-networkdLumpuhkan perkhidmatan rangkaian semasa.
systemctl disable networking NetworkManager NetworkManager-wait-online- NetworkManager-tunggu-dalam talian ialah perkhidmatan yang menunggu sambungan rangkaian berfungsi sebelum systemd terus memulakan perkhidmatan lain yang bergantung pada kehadiran rangkaian. Kami melumpuhkannya semasa kami beralih kepada analog systemd-networkd.
Mari dayakannya dengan segera:
systemctl enable systemd-networkd-wait-onlineSediakan antara muka rangkaian wayarles
Cipta fail konfigurasi systemd-networkd untuk antara muka rangkaian wayarles /etc/systemd/network/25-wlp6s0.network.
[Match]
Name=wlp6s0
[Network]
Address=192.168.1.2/24
IPForward=yes
- Nama ialah nama antara muka wayarles anda. Kenal pasti dengan arahan
ip a. - IPForward - arahan yang membolehkan pengalihan semula paket pada antara muka rangkaian.
- Alamat bertanggungjawab untuk memberikan alamat IP kepada antara muka wayarles. Kami menentukannya secara statik kerana dengan arahan yang setara
DHCP=yes, systemd-networkd mencipta get laluan lalai pada sistem. Kemudian semua trafik akan melalui gerbang asal, dan bukan melalui antara muka maya masa hadapan pada subnet yang berbeza. Anda boleh menyemak gerbang lalai semasa dengan arahanip r
Buat laluan statik untuk pelayan SOCKS jauh
Jika pelayan SOCKS anda bukan tempatan, tetapi jauh, maka anda perlu mencipta laluan statik untuknya. Untuk melakukan ini, tambah bahagian Route hingga akhir fail konfigurasi antara muka wayarles yang anda buat dengan kandungan berikut:
[Route]
Gateway=192.168.1.1
Destination=0.0.0.0
Gateway— ini ialah get laluan lalai atau alamat pusat akses asal anda.Destination— Alamat pelayan SOCKS.
Konfigurasikan wpa_supplicant untuk systemd-networkd
systemd-networkd menggunakan wpa_supplicant untuk menyambung ke pusat akses selamat. Apabila cuba "menaikkan" antara muka wayarles, systemd-networkd memulakan perkhidmatan wpa_supplicant@имяJika Nama ialah nama antara muka wayarles. Jika anda tidak menggunakan systemd-networkd sebelum ini, maka perkhidmatan ini mungkin tiada pada sistem anda.
Jadi buatnya dengan arahan:
systemctl enable wpa_supplicant@wlp6s0sudah biasa wlp6s0 sebagai nama antara muka wayarlesnya. Nama anda mungkin berbeza. Anda boleh mengenalinya dengan arahan ip l.
Kini perkhidmatan yang dibuat wpa_supplicant@wlp6s0 akan dilancarkan apabila antara muka wayarles "dinaikkan", bagaimanapun, ia, seterusnya, akan mencari tetapan SSID dan kata laluan titik akses dalam fail /etc/wpa_supplicant/wpa_supplicant-wlp6s0. Oleh itu, anda perlu menciptanya menggunakan utiliti wpa_passphrase.
Untuk melakukan ini, jalankan arahan:
wpa_passphrase SSID password>/etc/wpa_supplicant/wpa_supplicant-wlp6s0.confmana SSID ialah nama pusat akses anda, kata laluan ialah kata laluan, dan wlp6s0 — nama antara muka wayarles anda.
Mulakan antara muka maya untuk tun2socks
Cipta fail untuk memulakan antara muka maya baharu dalam sistem/etc/systemd/network/25-tun2socks.netdev
[NetDev]
Name=tun2socks
Kind=tun
- Nama ialah nama yang systemd-networkd akan berikan kepada antara muka maya masa hadapan apabila ia dimulakan.
- Kanak-kanak ialah sejenis antara muka maya. Berdasarkan nama perkhidmatan tun2socks, anda boleh meneka bahawa ia menggunakan antara muka seperti
tun. - netdev adalah lanjutan fail yang
systemd-networkdKegunaan untuk memulakan antara muka rangkaian maya. Alamat dan tetapan rangkaian lain untuk antara muka ini dinyatakan dalam .jaringan-fail.
Buat fail seperti ini /etc/systemd/network/25-tun2socks.network dengan kandungan berikut:
[Match]
Name=tun2socks
[Network]
Address=172.16.1.2/24
Gateway=172.16.1.1
Name— nama antara muka maya yang anda tentukan netdev-fail.Address— Alamat IP yang akan diberikan kepada antara muka maya. Mesti berada pada rangkaian yang sama dengan alamat yang anda nyatakan dalam perkhidmatan tun2socksGateway— Alamat IP "penghala" tun2stocks, yang anda tentukan semasa membuat perkhidmatan systemd.
Jadi antara muka tun2stocks mempunyai alamat 172.16.1.2, dan perkhidmatan tun2stocks - 172.16.1.1, iaitu, ia adalah pintu masuk untuk semua sambungan daripada antara muka maya.
Sediakan pusat akses maya
Pasang kebergantungan:
apt install util-linux procps hostapd iw havegedMuat turun repositori create_ap ke kereta anda:
git clone https://github.com/oblique/create_apPergi ke folder repositori pada mesin anda:
cd create_apPasang pada sistem:
make installKonfigurasi akan muncul pada sistem anda /etc/create_ap.conf. Berikut ialah pilihan penyuntingan utama:
GATEWAY=10.0.0.1— adalah lebih baik untuk menjadikannya subnet terpelihara yang berasingan.NO_DNS=1- lumpuhkan, kerana parameter ini akan diuruskan oleh antara muka maya systemd-networkd.NO_DNSMASQ=1- matikan ia atas sebab yang sama.WIFI_IFACE=wlp6s0— antara muka wayarles komputer riba.INTERNET_IFACE=tun2socks- antara muka maya yang dicipta untuk tun2socks.SSID=hostapd— nama pusat akses maya.PASSPHRASE=12345678- kata laluan.
Jangan lupa untuk mendayakan perkhidmatan:
systemctl enable create_apDayakan pelayan DHCP dalam systemd-networkd
Perkhidmatan create_ap memulakan antara muka maya dalam sistem ap0. Secara teorinya, dnsmasq bergantung pada antara muka ini, tetapi mengapa memasang perkhidmatan tambahan jika systemd-networkd mengandungi pelayan DHCP terbina dalam?
Untuk mendayakannya, kami akan menentukan tetapan rangkaian untuk titik maya. Untuk melakukan ini, buat fail /etc/systemd/network/25-ap0.network dengan kandungan berikut:
[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
Selepas perkhidmatan create_ap memulakan antara muka maya ap0, systemd-networkd secara automatik akan memberikannya alamat IP dan mendayakan pelayan DHCP.
rentetan EmitDNS=yes и DNS=10.0.0.1 hantar tetapan pelayan DNS ke peranti yang disambungkan ke pusat akses.
Jika anda tidak bercadang untuk menggunakan pelayan DNS tempatan - dalam kes saya ia adalah dnscrypt-proxy - anda boleh memasang DNS=10.0.0.1 в DNS=192.168.1.1Jika 192.168.1.1 — alamat pintu masuk asal anda. Kemudian permintaan DNS untuk hos dan rangkaian tempatan anda akan tidak disulitkan melalui pelayan pembekal.
EmitNTP=yes и NTP=192.168.1.1 pindahkan tetapan NTP.
Begitu juga dengan barisan NTP=10.0.0.1.
Pasang dan konfigurasikan pelayan NTP
Pasang pada sistem:
apt install ntp
Edit konfigurasi /etc/ntp.conf. Komen alamat kumpulan standard:
#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
Tambahkan alamat pelayan awam, contohnya Google Public NTP:
server time1.google.com ibrust
server time2.google.com ibrust
server time3.google.com ibrust
server time4.google.com ibrust
Berikan akses kepada pelayan kepada pelanggan pada rangkaian anda:
restrict 10.0.0.0 mask 255.255.255.0
Dayakan siaran ke rangkaian anda:
broadcast 10.0.0.255
Akhir sekali, tambahkan alamat pelayan ini pada jadual penghalaan statik. Untuk melakukan ini, buka fail konfigurasi antara muka wayarles /etc/systemd/network/25-wlp6s0.network dan tambah pada penghujung bahagian 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.12Anda boleh mengetahui alamat pelayan NTP anda menggunakan utiliti host seperti berikut:
host time1.google.comPasang dnscrypt-proxy, alih keluar iklan dan sembunyikan trafik DNS daripada pembekal anda
apt install dnscrypt-proxyUntuk menyampaikan pertanyaan DNS hos dan rangkaian tempatan, edit soket /lib/systemd/system/dnscrypt-proxy.socket. Tukar baris berikut:
ListenStream=0.0.0.0:53
ListenDatagram=0.0.0.0:53Mula semula systemd:
systemctl daemon-reloadEdit konfigurasi /etc/dnscrypt-proxy/dnscrypt-proxy.toml:
server_names = ['adguard-dns']
Untuk menghalakan sambungan dnscrypt-proxy melalui tun2socks, tambahkan di bawah:
force_tcp = true
Edit konfigurasi /etc/resolv.conf, yang memberitahu pelayan DNS kepada hos.
nameserver 127.0.0.1
nameserver 192.168.1.1Baris pertama membolehkan penggunaan dnscrypt-proxy, baris kedua menggunakan gateway asal sekiranya pelayan dnscrypt-proxy tidak tersedia.
Selesai!
But semula atau berhenti menjalankan perkhidmatan rangkaian:
systemctl stop networking NetworkManager NetworkManager-wait-onlineDan mulakan semula semua yang diperlukan:
systemctl restart systemd-networkd tun2socks create_ap dnscrypt-proxy ntpSelepas but semula atau mulakan semula, anda akan mempunyai titik akses kedua yang mengarahkan hos dan peranti LAN ke SOCKS.
Inilah rupa outputnya ip a komputer riba biasa:
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
Hasilnya,
- Pembekal hanya melihat sambungan yang disulitkan ke pelayan SOCKS anda, yang bermaksud mereka tidak melihat apa-apa.
- Namun ia melihat permintaan NTP anda, untuk mengelakkan ini, alih keluar laluan statik untuk pelayan NTP. Walau bagaimanapun, ia tidak pasti bahawa pelayan SOCKS anda membenarkan protokol NTP.
Tongkat dikesan pada Debain 10
Jika anda cuba memulakan semula perkhidmatan rangkaian daripada konsol, ia akan gagal dengan ralat. Ini disebabkan oleh fakta bahawa sebahagian daripadanya dalam bentuk antara muka maya terikat dengan perkhidmatan tun2socks, yang bermaksud ia digunakan. Untuk memulakan semula perkhidmatan rangkaian, anda mesti menghentikan perkhidmatan tun2socks terlebih dahulu. Tetapi, saya fikir, jika anda membaca sehingga habis, ini pastinya tidak menjadi masalah untuk anda!
rujukan
Sumber: www.habr.com
