Buku panduan ini memberi aplikasi yang menyedari proksi akses kepada laluan WireGuard sedia ada tanpa menerbitkan port proksi pada pelayan VPN atau di internet. Daemon SOCKS menyediakan antara muka aplikasi, WireGuard menyediakan laluan IP yang telah diluluskan, dan kedua-duanya tidak mengesahkan pengguna bagi pihak anda. Setiap langkah di bawah menghasilkan sesuatu yang boleh anda periksa, dan setiap satu mempunyai gulung balik: hentikan instans, buang peraturan atau buang tetapan proksi aplikasi. Tiada apa-apa di sini mengubah laluan lalai hos.

Contoh menganggap Dante 1.4.x dipasang sebagai instans khusus yang diurus di stesen kerja Linux yang dipercayai, dengan akaun perkhidmatan dan konfigurasi log dari pakej ditinggalkan di tempatnya. Stesen kerja memiliki 10.77.0.2 pada antara muka WireGuardnya, mencapai 10.60.0.20:443 melalui terowong itu, dan nama sebenar perkhidmatan ialah app.corp.example.

Langkah 1: ikat pendengar pada loopback sahaja

Letakkan bahagian rangkaian, kaedah dan peraturan ke dalam konfigurasi aktif instans, menggantikan alamat contoh. Semua tetapan pelayan berada sebelum blok peraturan:

internal: 127.0.0.1 port = 1080
external: 10.77.0.2
external.protocol: ipv4
clientmethod: none
socksmethod: none

client pass {
    from: 127.0.0.1/32 to: 127.0.0.1/32
}

socks pass {
    from: 127.0.0.1/32 to: 10.60.0.20/32 port = 443
    command: connect
    protocol: tcp
}

Ini ialah serpihan, bukan pengganti tetapan pengguna dan log pakej. Pilih port tempatan yang tidak digunakan dan sahkan bahawa instans khusus ini tiada pendengar lain, tiada peraturan laluan yang lebih luas dan tiada entri rangkaian huluan yang akan mengubah kontrak. Jika konfigurasi terdahulu meninggalkan socks pass tanpa kekangan destinasi, buangnya sebelum menguji apa-apa.

Gulung balik untuk langkah ini ialah menghentikan instans; fail konfigurasi boleh kekal pada cakera semasa anda memulihkannya.

Langkah 2: tulis dua peraturan, bukan satu

Rujukan konfigurasi Dante memberi kedua-dua jenis peraturan tugas yang berbeza. Peraturan klien membenarkan sambungan ke pendengar loopback, dan destinasinya ialah alamat pendengar itu sendiri. Peraturan SOCKS membenarkan sambungan seterusnya yang diminta ke hos dan port yang diluluskan. Permintaan yang tidak sepadan disekat secara lalai, sebab itulah peraturan yang hilang kelihatan sama seperti laluan yang rosak.

Perhatikan apa yang sengaja tidak dilakukan oleh konfigurasi ini: ia tidak meminta kata laluan SOCKS. Itu sesuai untuk hos tempatan yang dipercayai, dan ia bukan pengesahan pengguna. Mana-mana proses lain pada mesin itu juga boleh menggunakan loopback. Kekalkan pengesahan aplikasi jauh itu sendiri, dan jangan guna semula bentuk tanpa pengesahan ini untuk pengguna tempatan yang tidak dipercayai atau pendengar yang menghadap LAN.

Langkah 3: sahkan laluan dari sumber yang betul

external memilih alamat sumber keluar; ia tidak memasang laluan WireGuard. Carian baca sahaja untuk sumber dan destinasi contoh:

ip -4 route get 10.60.0.20 from 10.77.0.2

Jalankan itu dalam ruang nama rangkaian sebenar Dante, bukan dalam mana-mana cangkerang yang kebetulan terbuka. Laluan, pemilihan rakan WireGuard, kebenaran di sebelah jauh dan laluan pulang semuanya mesti sepadan dengan alamat sumber itu. Carian yang berjaya perlu dan tidak mencukupi, kerana ia tidak menyatakan apa-apa tentang sama ada hujung jauh menerima permintaan itu.

Tahan keinginan untuk menambah laluan lalai supaya carian berjaya. Port proksi hanya wujud pada stesen kerja ini; menukar laluan lalai hos untuk menciptanya menterbalikkan seluruh reka bentuk.

Langkah 4: uji dengan identiti yang dimaksudkan

Selepas pemilik mengesahkan konfigurasi yang dipasang dan memulakan instans melalui pengurus perkhidmatannya, satu permintaan ilustratif ialah:

curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/

Dengan socks5h, Dante melakukan penyelesaian destinasi, tetapi Dante berjalan pada stesen kerja ini, jadi tetapan itu tidak menghantar DNS ke hujung jauh terowong dengan sendirinya. Penyelesai yang diluluskan yang digunakan Dante mesti memulangkan alamat yang dibenarkan untuk nama itu. Senarai tanpa proksi yang kosong menghalang pengecualian warisan daripada memintas SOCKS secara senyap.

Kekalkan pengesahan nama hos dan sijil HTTPS dalam ujian, kemudian periksa pendengar sebenar dan sahkan kedua-dua bahagian kontrak: permintaan yang dibenarkan berjaya dan destinasi yang dikecualikan gagal. Sahkan juga bahawa arahan pemajuan yang tidak disokong kekal ditolak, kerana serpihan ini membenarkan arahan SOCKS CONNECT melalui TCP dan tiada apa yang menyerupai terowong UDP umum atau seluruh peranti.

Langkah 5: tentukan apa yang berlaku apabila terowong jatuh

Uji kehilangan terowong dan mula semula instans sebelum anda memanggilnya pengeluaran. Penyelia yang memulakan Dante selepas WireGuard tidak mencipta penghalaan fail-closed, dan tidak mencipta DNS fail-closed juga; kedua-duanya mesti dikuatkuasakan melalui pemilik rangkaian. Perhatikan apa yang dilakukan aplikasi apabila terowong mati: ralat bersih ialah hasil yang baik, kejatuhan senyap ke penyelesai awam bukan.

Selaraskan kemas kini jika alamat terowong yang terikat berubah, kerana external dipaku padanya. Apabila susunan ini tidak lagi diperlukan, hentikan instans ini dan tetapan proksi aplikasi bersama-sama, dan serahkan laluan WireGuard kepada sesiapa yang memilikinya.

Artikel berkaitan