Kami menerjemahkan jaringan rumah ke DoH, atau klik lain pada hidung pemfilteran

Setelah pengumuman yang relatif baru oleh Mozilla tentang peluncuran dukungan untuk DNS-over-HTTPS (DoH) dalam produksi di jaringan, perselisihan berlanjut apakah ini jahat atau baik. Menurut pendapat saya, posisi "jahat" didasarkan terutama pada kenyataan bahwa pada saat yang sama memanipulasi permintaan DNS Anda, bahkan untuk tujuan yang bermanfaat bagi Anda, akan sulit, jadi untuk saat ini saya tetap dalam posisi "baik."
gambar


Di Federasi Rusia, operator telekomunikasi, yang ditempatkan dalam kondisi sangat ketat oleh undang-undang kami, dipaksa untuk membangun sistem multi-level yang canggih untuk memblokir akses ke konten yang dilarang oleh Roskomnadzor di Federasi Rusia, di salah satu level di mana intersepsi DNS kurang lebih berhasil. Menggunakan DoH akan memungkinkan Anda untuk melewati tingkat ini, yang bersama dengan penggunaan VPN dapat membuat hidup Anda sedikit lebih mudah. Harap perhatikan bahwa solusi itu sendiri tidak dapat menyelamatkan Anda dari pemblokiran, karena hampir tidak ada penyedia di Rusia yang hanya mengandalkan penyaringan melalui DNS. Anda memerlukan beberapa opsi lain untuk mengatasi pemblokiran, misalnya, VPN, salah satu yang dijelaskan dalam artikel saya sebelumnya.


Ini paradoks, tetapi dalam panoptikon saat ini, operator telekomunikasi tidak mengancam Anda untuk memotong kuncinya (menggunakan alat khusus untuk ini), jadi jika Anda takut melukainya dengan cara ini, ketakutan ini sia-sia.


Tetapi beralih ke browser khusus untuk memotong intersepsi DNS bukanlah cara kami. Cara kami adalah mentransfer semua perangkat di jaringan rumah Anda ke DoH, dengan cepat, efisien, dan tanpa tenaga kerja yang tidak perlu.


Penafian


Karena tidak terlalu sah untuk mempublikasikan metode melewati akses ke informasi yang dilarang di wilayah Federasi Rusia, tujuan artikel ini adalah untuk berbicara tentang metode yang memungkinkan Anda untuk mengotomatiskan akses ke sumber daya yang diizinkan di wilayah Federasi Rusia, tetapi karena tindakan seseorang yang tidak dapat diakses secara langsung melalui penyedia Anda. Dan akses ke sumber daya lain yang diperoleh sebagai akibat dari tindakan dari artikel tersebut merupakan efek samping yang tidak menguntungkan dan tujuan artikel tersebut sama sekali tidak berarti.


TL; DR


Kami sedang menyebarkan server DNS berbasis Pi-Hole kami sendiri menggunakan Cloudflare DoH untuk kueri ke dunia. Tujuannya adalah untuk mengenkripsi semua permintaan DNS dan memotong penyaringan operator melalui intersepsi DNS dengan cara ini. Bonus yang bermanfaat adalah memfilter iklan.


Tidak ada sihir yang terbuka, instruksi langkah demi langkah yang sederhana bagi mereka yang tidak ingin memahami semua seluk beluk itu sendiri.


Apa yang kamu butuhkan untuk ini?


  1. Percayai Cloudflare. Ini sebenarnya adalah poin yang sangat penting, karena dalam implementasi yang dijelaskan semua permintaan DNS Anda diproses oleh layanan Cloudflare. Jika Anda tidak percaya padanya, Anda harus menerapkan solusi lain (dan ini sedikit lebih rumit dari yang dijelaskan, tetapi artikel ini tidak dimaksudkan untuk menjadi).
  2. Untuk dapat mendukung server Linux yang terus berjalan di jaringan rumah Anda yang akan menangani permintaan DNS perangkat Anda. Persyaratan Pi-Hole adalah dari RAM 512M (namun, saya tidak memeriksa pekerjaan dengan volume yang lebih kecil). Jika router atau NAS Anda mampu menggunakan mesin virtual - ini adalah pilihan yang sangat baik, jika Raspberry Pi atau komputer mikro lainnya di ARM terletak di suatu tempat di rak - tidak kalah bagusnya, jika pertanian virtual di ESXi berdengung di mezzanine di koridor - apa yang saya katakan, Anda dan Anda tahu segalanya sendiri. Jika Anda tidak memiliki semua ini, solusi termuda, seperti Orange Pi Zero, dapat ditemukan di pasar sekunder untuk unit ratusan rubel atau dibawa dari Ali untuk plus atau minus uang yang sama. Tetapi pilihan platform jauh di luar cakupan artikel ini, jadi kami yakin Anda memiliki sesuatu. Namun, pertanyaan tentang hal ini dapat ditanyakan dalam komentar.
  3. Anda harus terbiasa dengan Linux dan jaringan. Atau setidaknya ingin mendapat ide seperti itu. Karena saya belum siap untuk merangkul besarnya saat ini, Anda harus mempelajari beberapa momen yang tidak dapat dipahami untuk Anda sendiri. Namun, tentu saja, saya akan menjawab pertanyaan spesifik dalam komentar dan tidak mungkin menjadi satu-satunya yang menjawab, jadi jangan ragu untuk bertanya.

Sumber data


Alamat IPv4 server kami di jaringan rumah adalah 192.168.1.10 dan ditetapkan sebagai statis.


Pengaturan di Linux dilakukan dari root (mis., Sebelum memulai konfigurasi, kami menjalankan sudo su - command).


Secara singkat - logika solusi


  1. Instal dan konfigurasikan Pi-Hole
  2. Instal dan konfigurasikan cloudflared
  3. Konfigurasikan router rumah Anda
  4. Kami memecahkan masalah

Sebenarnya keputusan


1. Pasang dan konfigurasikan Pi-Hole


Pi-Hole adalah platform rumah terkenal yang dirancang terutama untuk memerangi iklan dengan memblokir permintaan domain dari daftar yang diperbarui secara terpusat. Bukannya itu komponen yang diperlukan dari solusi, tetapi jika Anda mulai mengumpulkan DNS rumah, itu menjadi sulit untuk dihentikan. Tapi serius - Pi-Hole mungkin tidak sempurna, tetapi menghilangkan sejumlah besar sakit kepala dari orang yang perlu "bekerja".


Untuk menginstal Pi-Hole pada server Linux yang sudah berjalan, kita hanya perlu menjalankan satu perintah:


curl -sSL https://install.pi-hole.net | bash 

Dan kemudian skrip yang berjalan akan memandu Anda melalui langkah-langkah instalasi.


Saat ini ketika dia bertanya kepada Anda tentang pilihan Penyedia DNS Hulu, Anda dapat memilih, karena pada langkah berikutnya kami masih akan mengubahnya. Semua parameter lain dapat dengan aman dibiarkan secara default.


Pada akhir instalasi, skrip akan menunjukkan kepada Anda kata sandi yang dihasilkan secara acak dari antarmuka web, yang akan berguna bagi Anda untuk menulis.


Jika terjadi kesalahan selama instalasi, Anda dapat menggunakan metode alternatif yang dijelaskan di sini .


2. Pasang dan konfigurasikan cloudflared


Untuk beralih ke DNS melalui HTTPS, kami menggunakan solusi standar dari Cloudflare. Daemon cloudflared awalnya dibuat untuk mengangkat terowongan Argo dari sisi pelanggan, memungkinkan Anda untuk mempublikasikan server web Anda ke Cloudflare CDN, bahkan jika itu di-host pada alamat IP pribadi di belakang NAT. Tetapi properti yang sangat berguna dari daemon ini adalah kerjanya sebagai proxy DoH, dan kami menggunakan properti ini di sini.


Di sini, untuk instalasi, kita perlu melakukan sedikit usaha, tetapi juga tidak ada yang rumit.


Kami memilih dan mengunduh penginstal untuk platform kami.


 # For amd64 Debian/Ubuntu cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.deb apt-get install ./cloudflared-stable-linux-amd64.deb cloudflared -v # For amd64 CentOS/RHEL/Fedora cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.rpm yum install ./cloudflared-stable-linux-amd64.rpm cloudflared -v # For ARM cd /tmp wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz tar -xvzf cloudflared-stable-linux-arm.tgz cp ./cloudflared /usr/local/bin chmod +x /usr/local/bin/cloudflared cloudflared -v 

Setelah menjalankan perintah terakhir, kita harus mendapatkan output yang mirip dengan yang berikut:


 cloudflared version 2019.9.0 (built 2019-09-06-0333 UTC) 

Jika Anda memilikinya (tentu saja, versi dan nomor build mungkin berbeda), maka selamat, instalasi berhasil. Sekarang terserah Anda untuk mengonfigurasi.


Buat pengguna untuk layanan:


 useradd -s /usr/sbin/nologin -r -M cloudflared 

Buat file konfigurasi layanan / etc / default / cloudflared:


 # Commandline args for cloudflared CLOUDFLARED_OPTS=--port 5053 --upstream https://1.1.1.1/dns-query --upstream https://1.0.0.1/dns-query 

Dan kami memberikan hak kepada pengguna yang baru dibuat untuk itu dan ke file yang dapat dieksekusi:


 chown cloudflared:cloudflared /etc/default/cloudflared chown cloudflared:cloudflared /usr/local/bin/cloudflared 

Selanjutnya, buat file /lib/systemd/system/cloudflared.service, yang akan memberi kita kesempatan untuk mengintegrasikan layanan ke dalam systemd:


 [Unit] Description=cloudflared DNS over HTTPS proxy After=syslog.target network-online.target [Service] Type=simple User=cloudflared EnvironmentFile=/etc/default/cloudflared ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target 

Kami mengaktifkan layanan dan menjalankannya:


 systemctl enable cloudflared systemctl start cloudflared systemctl status cloudflared 

Jika semuanya berhasil, Anda akan melihat bahwa layanan ini dalam keadaan aktif (berjalan).


Anda dapat memeriksa pengoperasian layanan, misalnya dengan perintah dig:


 dig @127.0.0.1 -p 5053 google.com 

Di bagian jawaban dari jawaban, Anda akan melihat alamat IP yang diterima layanan Anda untuk google.com melalui DoH, sesuatu seperti:


 google.com. 217 IN A 172.217.6.142 

Tetap hanya menghubungkan layanan ke Pi-Hole. Untuk melakukan ini, Anda pergi ke antarmuka web Pi-Hole (kata sandi yang direkam pada tahap pertama berguna bagi Anda), buka Pengaturan - item menu DNS dan membuatnya terlihat seperti ini:


Tangkapan layar konfigurasi pi-hole


Hal utama adalah mengisi bidang Kustom dengan entri 127.0.0.1 # 5053 dan meninggalkan daw di atasnya, menghapusnya dari yang lain. Setelah itu, jangan lupa gulir ke bawah halaman dan klik Simpan.


Jika Anda lupa menulis kata sandi - tidak apa-apa, buka server melalui ssh dan jalankan perintah pihole -a -p , itu akan memungkinkan Anda untuk mengatur kata sandi baru. Nah, secara umum, lihat kunci-kunci tim pihole , ada banyak hal menarik. Misalnya, pembaruan sistem dilakukan dengan satu perintah pihole -up .


3. Atur router rumah Anda


Tentu saja, saya tidak bisa menutup seluruh ragam router dengan teks ini. Tetapi untuk sebagian besar router rumah, poin-poin berikut ini benar:


1) Anda dapat mengatur server DNS khusus untuk router di pengaturan antarmuka WAN, bahkan jika alamat IP diperoleh secara dinamis dari penyedia


2) Router mengeluarkan alamatnya ke klien internal sebagai DNS dan meneruskan permintaan mereka ke server yang ditentukan dalam pengaturan WAN


Karenanya, dalam hal ini, perlu dan memadai bagi kami untuk mendaftarkan alamat Pi-Hole kami sebagai server DNS dalam pengaturan antarmuka WAN pada router rumah. Adalah penting bahwa itu adalah satu-satunya server DNS dalam pengaturan, jika ada yang ditentukan - router akan menyeimbangkan permintaan di antara mereka sesuai dengan satu-satunya prinsip yang diketahui, dan situasi ini sangat tidak nyaman untuk masalah debugging pada jaringan.


Jika tiba-tiba terjadi kesalahan dan layanan berhenti berfungsi, cukup untuk mengubah pengaturan di atas ke alamat server DNS penyedia Anda atau, misalnya, 8.8.8.8, dan baru kemudian mulai memahami.


Jika router Anda lebih cerdas dan, misalnya, memiliki kemampuan untuk menentukan di DHCP alamat mana yang akan didistribusikan ke klien sebagai server DNS, Anda dapat menempuh jalur alternatif dan mengonfigurasi distribusi alamat Pi-Hole ke klien secara langsung. Ini akan sedikit membongkar router, tetapi akan mempersulit rollback di atas dari menggunakan layanan.


Jika sesuatu tidak berhasil - tanyakan di komentar, kami akan menemukan solusinya.


4. Kami memecahkan masalah


Secara umum, setelah menyelesaikan poin di atas, semuanya harus baik-baik saja dengan Anda, tetapi ada nuansa yang kadang-kadang saya dan klien saya temui.


Setelah Anda mulai menggunakan Pi-Hole, Anda mungkin mengalami perasaan yang tidak biasa dari berkurangnya iklan di perangkat Anda (terutama ponsel). Jangan khawatir, ini yang Anda maksudkan. Juga, beberapa layanan mungkin berhenti bekerja dengan cara yang Anda kenal dan ini akan membutuhkan partisipasi Anda dalam pengaturan. Misalnya, situs web Aliexpress secara berkala mencoba mengarahkan Anda ke alamat best.aliexpress.com, yang ada dalam daftar iklan, dan ini memblokir semua akses ke Ali.


Mendeteksi masalah seperti itu cukup sederhana - jika Anda mencoba mengakses server yang diblokir, browser Anda akan menunjukkan kepada Anda kesalahan ERR_NAME_NOT_RESOLVED atau sejenisnya, dan pemeriksaan baris perintah melalui nslookup <nama server> akan mengembalikan 0,0.0.0.


Memecahkan masalah untuk server tertentu juga mudah - cukup tambahkan ke daftar putih. Untuk melakukan ini, buka http: //pi.hole/admin , login, pilih Daftar Putih di menu sebelah kiri dan tambahkan server yang kami butuhkan. Sebagai contoh, saya harus membuka, selain best.aliexpress.com yang disebutkan, s.click.aliexpress.com, serta sekelompok situs di domain miui.com agar layanan Xiaomi berfungsi. Anda mungkin perlu sesuatu sendiri. Tetapi melacak apa yang perlu dibuka tidak begitu sulit - di halaman utama Dashboard layanan dan di Query Logs Anda selalu dapat melihat permintaan domain mana yang diblokir dan menambahkannya ke daftar putih.


Itu juga secara teratur terjadi bahwa Pi-Hole diinstal pada server di mana beberapa jenis layanan web sudah berjalan. Dalam hal ini, Anda tidak akan mendapatkan akses ke antarmuka manajemen berbasis web. Cara mengatasi konflik semacam itu tergantung pada situasi spesifik, tetapi solusi utamanya adalah:


  1. Jika server web tidak digunakan, tetapi hanya berdiri secara default - temukan dan nonaktifkan
  2. Jika server web digunakan dan Anda tahu cara bekerja dengannya, tambahkan antarmuka web Pi-Hole sebagai sumber daya terpisah ke server web Anda.
  3. Anda juga dapat mendaratkan antarmuka web Pi-Hole pada port yang berbeda dengan mengoreksi parameter server.port di file /etc/lighttpd/lighttpd.conf. Tapi ini akan membutuhkan mengingat port mana server berjalan, jadi saya tidak menerima skema seperti itu.

Kesimpulan


Seperti yang dijanjikan, dia tidak menulis sesuatu yang baru. Bagi banyak pembaca, skema ini dapat dimengerti dan jelas, dan sudah diterapkan, atau tidak diimplementasikan sebagai tidak perlu. Banyak yang lain membangun sesuatu yang serupa dengan cara yang berbeda, menggunakan komponen yang sama atau lainnya. Saya sarankan Anda menganggap posting ini lebih seperti kosong untuk solusi Anda sendiri, jika Anda membutuhkannya. Tetapi, setelah menjalankannya sebagai instruksi langkah demi langkah, Anda sudah akan menerima layanan yang mencakup kebutuhan dasar Anda untuk memfilter iklan dan menggunakan DoH.


Secara tradisional, saya akan menjawab pertanyaan dan membantu dengan pengaturan.


Catatan PS dari GennPen - saat menggunakan DoH, Anda menjadi tergantung pada koneksi Internet Anda dan jika Anda kehabisan uang di akun Anda, Anda bahkan tidak akan bisa masuk ke akun pribadi penyedia Anda untuk membayar mereka. Oleh karena itu, untuk situs-situs tersebut dalam solusi ini, diinginkan untuk mendaftarkan entri statis di Pi-Hole - ini dapat dilakukan di konsol dengan perintah pihole -a -r atau hanya secara manual di file / etc / hosts. Sayangnya, alat ini tidak termasuk dalam antarmuka web untuk ini.

Source: https://habr.com/ru/post/id468621/


All Articles