Anda mem-ping host jauh dari mesin Linux dan ia menjawab, jadi tunnel-nya bekerja. Kontainer di sebelah Anda masih timeout, dan langkah berikutnya yang wajar adalah me-restart Docker. Kontainer di jaringan jembatan biasanya mulai dengan alamat sumber berbeda dan masuk ke host lewat penerusan, bukan lewat jalur keluar aplikasi host itu sendiri, sehingga uji yang berhasil mengukur paket yang berbeda. Untuk tunnel strongSwan berbasis kebijakan, rute biasa menuju subnet jauh tidak cukup ketika paket yang diteruskan tidak cocok dengan kebijakan IPsec yang terpasang.

Panduan di bawah mengikuti satu tujuan melalui dua sumber, membaca keadaan sebelum mengubah apa pun.

Mulai dari satu tujuan dan dua sumber

Pilih dulu layanan yang dikenal berdasarkan IP, agar Anda tidak men-debug DNS pada saat yang sama. Catat tiga fakta: prefiks jembatan kontainer, alamat sumber permintaan host yang berhasil, dan selektor lalu lintas lokal serta jauh yang dinegosiasikan untuk tunnel. Ketiga angka itu menjelaskan hampir semua kasus gejala ini.

Lalu ulangi permintaan yang gagal dari dalam kontainer dan tangkap sumber yang benar-benar dipakainya. Jika alamat itu tidak tercakup selektor lokal, Anda sudah tahu hasilnya, dan tidak ada pembuatan ulang kontainer yang akan mengubahnya.

Baca kebijakannya sebelum menyentuh Docker

Pemeriksaan host hanya-baca mencakup keputusan perutean, basis data kebijakan, dan aturan yang memilih di antaranya:

ip rule show
ip route show table all
ip xfrm policy

Daftar kebijakan menunjukkan selektor dan arah tanpa perlu dump keadaan IPsec penuh materi kunci, karena itulah aman menempelkannya ke tiket. Cari selektor lokal yang mencakup alamat host tetapi tidak prefiks jembatan. Periksa juga tumpang tindih: rute kontainer yang memperlakukan tujuan jauh sebagai lokal tidak akan pernah menghasilkan paket yang diteruskan seperti yang Anda harapkan, dan tunnel yang disalahkan. Simpan daftar itu di samping alamat sumber kontainer, karena keduanya bersama adalah seluruh perbandingan.

Jika prefiks kontainer tidak ada, berhenti dan putuskan arsitekturnya sebelum menyunting hal lain. Sisa panduan ini menganggap Anda sudah sepakat alamat sumber mana yang seharusnya muncul di jaringan.

Periksa penyaringan dan penerjemahan secara berurutan

Firewall jembatan Linux milik Docker dapat memblokir penerusan secara terpisah dari IPsec. Dengan backend iptables, periksa jalur FORWARD dan keputusan DOCKER-USER, ingat bahwa aturan yang ditambahkan setelah vonis sebelumnya mungkin tidak pernah berjalan sama sekali. Backend nftables terintegrasi berbeda, jadi jangan membuat rantai DOCKER-USER hanya karena sebuah contoh iptables menamainya; periksa backend mana yang benar-benar dipakai daemon Anda.

Lalu periksa penerjemahan sumber. Aturan MASQUERADE yang lebar dapat mengubah paket yang sebelumnya cocok dengan selektor IPsec menjadi paket yang tidak lagi cocok, dan kegagalannya tampak persis seperti masalah perutean. panduan penerusan strongSwan mendokumentasikan pengecualian NAT yang diperlukan sebelum penerjemahan semacam itu untuk lalu lintas yang sudah cocok dengan kebijakan.

Pengecualian itu bukan cara menambahkan sumber kontainer yang tidak tercakup ke tunnel. Ia hanya melindungi lalu lintas yang sudah sesuai rancangan, jadi selesaikan dulu pertanyaan selektor dan jalur balik, lalu selaraskan NAT dan penyaringan dengan jawabannya. Jika Anda malah mulai memperlebar pengecualian, selektorlah yang harus diubah, bukan aturan NAT.

Lalu putuskan dirutekan atau diterjemahkan

Subnet kontainer yang dirutekan menuntut kedua peer menerima subnet itu dan jalur balik jauh ke sana, yang biasanya berarti perubahan selektor di kedua ujung dan percakapan dengan pemilik sisi jauh. Rancangan yang sengaja diterjemahkan justru harus menampilkan alamat yang tercakup kebijakan pada tahap pencarian yang relevan, yang biasanya berarti aturan sempit dan terdokumentasi alih-alih MASQUERADE bawaan.

Tidak ada dari kedua pengaturan itu yang otomatis mengikuti tunnel host yang bekerja, dan memilih di antaranya adalah keputusan rancangan yang punya pemilik. Tuliskan mana yang Anda pilih, karena insinyur berikutnya akan menurunkannya lagi dari penghitung firewall.

Perhatikan juga kegagalan hibrida: separuh rangkaian aturan diterjemahkan dan separuh tidak, yang menghasilkan keberhasilan berkala yang bergantung pada port tujuan dan bukan pada apa pun di jaringan.

Verifikasi dengan koneksi baru, bukan restart

Pakai koneksi aplikasi baru sambil mengamati penghitung firewall yang sempit dan penerima jauh, agar setiap pengamatan punya sumber. Restart Docker dapat mengubah keadaan aturan dan juga akan mengganggu beban kerja, yang membuat Anda kehilangan sinyal bersih yang ingin Anda dapatkan.

Hasil yang tahan lama adalah empat pernyataan yang dapat Anda tunjukkan: sumber kontainer, jalur terlindungi yang cocok, penerusan yang diizinkan, dan balasan yang kembali. Ketika keempatnya berlaku, kontainer mencapai peer dengan alasan yang sama seperti host.

Artikel terkait