Gateway menghosting halaman adminnya sendiri: alamat dalam atau publik
Layanan di gateway VPN itu sendiri memerlukan entri dalam yang dapat dijangkau terowongan. Publikasikan secara privat, lalu pastikan pendengar publik tidak masih terbuka.
Halaman admin menjawab dari ponsel di data seluler dan kehabisan waktu dari laptop yang tergabung ke VPN. Tidak ada yang rusak pada terowongan, karena permintaan tidak pernah masuk ke dalamnya. Nama host diselesaikan ke alamat publik gateway, dan alamat itu hanya dapat dijangkau dari luar terowongan yang ia akhiri. Memperbaikinya berarti memberi layanan entri privat, bukan memindahkan titik akhir luar.
Halaman dimuat dari luar dan bukan melalui terowongan
Dua permintaan berbeda sedang dibandingkan. Dari data seluler, peramban langsung mencapai alamat publik. Dari dalam terowongan, nama yang sama diselesaikan ke alamat publik yang sama, dan paket kini harus keluar melalui terowongan untuk mencapai alamat di sisi jauh terowongan itu sendiri. Nama sama, alamat sama, dua posisi yang sangat berbeda.
Rute tujuan memilih alamat, bukan port. Tidak ada yang di tabel perutean tahu bahwa port 443 untuk administrasi dan port 1194 adalah transport, jadi keduanya diperlakukan sebagai tujuan yang sama.
Itulah sebabnya halaman kadang berfungsi dan kadang tidak, tergantung nama dan jaringan yang dipakai klien. Ini masalah jalur, bukan masalah autentikasi. Kedua klien melakukan autentikasi dengan baik.
Jaga titik akhir luar tetap terjangkau
Profil terowongan penuh memerlukan rute pengecualian untuk titik akhir VPN, dan opsi redirect-gateway OpenVPN mendokumentasikan tepat itu: titik akhir jarak jauh mempertahankan rute melalui gateway yang sudah ada agar terowongan tidak merutekan ke dirinya sendiri. Hapus pengecualian itu dan transport terenkripsi mengikuti terowongan, yang mengakhiri sesi dalam lingkaran. Pengecualian itulah sebabnya alamat titik akhir tetap terjangkau dari dalam terowongan.
Konsekuensinya, alamat publik tetap terjangkau dari klien, dan itulah sebabnya permintaan peramban ke alamat itu dapat mengikuti pengecualian yang sama dan keluar tanpa masuk ke terowongan. Pengecualian itu menjalankan tugasnya, dan namanya yang menimbulkan kerusakan.
Baca keputusan rute, bukan daftar antarmuka, sebelum mengubah apa pun. Perintah di bawah mencetak keputusan, bukan inventaris. Jalankan dari klien yang gagal.
ip -4 route get 203.0.113.77
ip -4 rule show
ip -4 route show table allJika pencarian menunjukkan rute titik akhir melalui gateway fisik, perilakunya benar dan halaman admin hanya dikirim ke jalur yang salah. Di situlah resolusi nama menjadi perbaikan.
Beri layanan nama privat
Layanan memerlukan nama yang diselesaikan ke alamat gateway di dalam terowongan, sekaligus mempertahankan semantik sertifikat dan nama host yang diharapkan aplikasi. Catatan zona privat untuk nama administrasi adalah jawaban yang biasa, dan itu membiarkan nama transport tidak tersentuh.
Jangan arahkan ulang nama transport ke alamat dalam, karena pembentukan terowongan berikutnya akan mencoba mencapai alamat yang hanya ada di dalam terowongan. Kesalahan itu menghasilkan VPN yang berfungsi tepat sekali.
Periksa kedua keluarga alamat juga, karena catatan AAAA yang tertinggal dapat mengirim peramban ke tempat yang tidak pernah dicakup rencana privat.
dig +short admin.hq.internal
dig +short -t AAAA admin.hq.internal
curl -sS -o /dev/null -w '%{http_code} %{remote_ip}\n' https://admin.hq.internal/Sesuaikan kebijakan dengan tempat proses berjalan
Proses asli yang mendengarkan di gateway dijangkau melalui jalur masukan lokal, jadi rantai masukan dan pengikatan soket menentukan apakah permintaan diterima. Aturan penerusan dan penerusan IP tidak membuat pendengar lokal menjawab. Izinkan sumber terowongan dalam kebijakan masukan dan pastikan proses terikat ke alamat yang dapat dijangkau terowongan.
Kontainer yang dipublikasikan pada port host mengikuti jalur berbeda, karena paket diterjemahkan tujuan dan diteruskan. Permintaan itu bertemu kebijakan penerusan host dan aturan Docker sendiri, itulah sebabnya pendengar asli yang berfungsi dapat hidup berdampingan dengan kontainer yang menolak port yang sama.
Urutan mulai penting dalam kedua kasus, karena pengikatan ke alamat yang baru muncul setelah terowongan naik gagal secara diam-diam saat boot.
Periksa akses privat dan jalur publik yang ditolak
Buat permintaan bernama baru dari klien yang berwenang dengan pemeriksaan identitas aplikasi tetap utuh. Lalu coba layanan yang sama dari luar terowongan dan pastikan ia tidak menjawab. Nama privat adalah kemudahan, bukan pembatasan, dan pendengar yang masih terikat ke alamat publik masih terekspos. Pemeriksaan terakhir itulah yang dilewati sebagian besar tinjauan.
Baca pengikatan dan status filter, bukan nama host yang diberikan kepada pengguna. Eksposur adalah sifat soket, bukan sifat nama. Perbedaan itu bertahan pada setiap perubahan DNS.
ss -lntp | grep ':443'
nft list ruleset | grep -n 443
curl -sS -m 5 -o /dev/null -w '%{http_code}\n' https://203.0.113.77/Saat permintaan dalam mengembalikan halaman dan permintaan luar kehabisan waktu, layanan memiliki satu jalur privat yang disengaja dan transport tetap terjangkau. Saat permintaan luar masih menjawab, pendengar atau entri kontainer yang dipublikasikan perlu dipersempit sebelum siapa pun menyebut layanan itu hanya internal.