Layanan yang menghilang pada saat klien VPN terhubung biasanya tidak diblokir, melainkan menjawab melalui antarmuka yang salah. Permintaan tiba di kartu jaringan fisik, daemon menulis jawaban, dan tabel perutean menyerahkan jawaban itu ke terowongan, karena terowongan telah mengambil alih rute default. Klien jarak jauh tidak pernah melihat jawaban atas koneksi yang dibukanya, jadi ia menunggu lalu melaporkan waktu habis. Tidak ada aturan firewall yang terlibat di mana pun dalam urutan itu.

Gejalanya: permintaan masuk, jawaban keluar lewat pintu yang salah

Petunjuknya adalah koneksi masuk yang gagal sementara semua hal lain di host berfungsi. Petunjuk lain adalah host yang dapat dijangkau dari LAN tetapi tidak dari internet, atau yang berfungsi sampai terowongan tersambung ulang lalu berhenti. Dalam setiap kasus arah maju berperilaku baik dan arah balik tidak, yang mengarah pada asimetri perutean dan bukan pada kebijakan.

Konfirmasikan dengan mengamati ke mana jawaban pergi, bukan dengan mengamati bagaimana permintaan tiba.

Tangkap pada antarmuka fisik dan pada perangkat terowongan sekaligus. Jika permintaan muncul di antarmuka fisik dan jawaban muncul di terowongan, diagnosis selesai. Jawaban yang tidak muncul di mana pun berarti layanan tidak pernah menerima koneksi itu, yang merupakan penyelidikan terpisah dengan penyebab terpisah.

Dua rute default dan satu keputusan perutean

Klien yang memasang rute default menambahkan entri kedua dengan metrik lebih baik daripada gateway LAN. Beberapa klien memasang dua rute setengah rentang sebagai gantinya, yang mencakup ruang yang sama secara lebih spesifik dan memenangkan pencarian dengan cara yang sama. Kedua teknik itu membuat paket keluar biasa memilih antarmuka terowongan.

Pilihan itu dibuat hanya berdasarkan tujuan. Kernel tidak menanyakan dari mana sebuah paket datang kecuali aturan kebijakan memerintahkannya. Jadi jawaban ke alamat klien publik diserahkan ke terowongan, yang ujung jauhnya menerima paket dengan alamat sumber yang bukan miliknya dan membuangnya atau meneruskannya ke tempat yang tidak berguna. Di Linux, penyaringan jalur balik yang ketat juga dapat menjatuhkan permintaan asli sebelum layanan Anda melihatnya sama sekali, yang dari luar tampak identik. Kedua gejala berasal dari asosiasi yang sama-sama hilang antara aliran masuk dan jawabannya.

Terowongan berperilaku benar sepanjang waktu. Ia diperintahkan membawa rute default dan ia melakukan tepat itu.

Perbaiki jalur balik tanpa merusak terowongan

Ada tiga bentuk perbaikan yang tahan lama, dan pilihannya bergantung pada seberapa banyak lalu lintas host sendiri yang harus tetap di dalam terowongan. Mengecualikan tujuan atau porta layanan adalah perubahan terkecil. Perutean kebijakan menurut sumber atau tanda adalah yang paling tepat. Terjemahan sumber adalah yang paling kasar dan paling mudah dijelaskan dua tahun kemudian.

Pilih berdasarkan apa yang harus dilakukan host, bukan berdasarkan cuplikan mana yang Anda temukan lebih dulu.

Mengecualikan tujuan cocok untuk layanan dengan alamat publik yang stabil, dan mengikat daemon ke alamat fisik alih-alih ke setiap alamat membuat pengecualian itu lebih aman. Aturan kebijakan yang memilih tabel menurut sumber menjaga koneksi host sendiri di dalam terowongan sekaligus mengembalikan jawaban layanan melalui gateway WAN. Menyamarkan jawaban ke antarmuka WAN mencapai jalur yang sama dengan biaya menyembunyikan alamat klien dari log layanan. Perubahan rute default secara ad hoc adalah diagnosis dan bukan konfigurasi, karena klien menulis ulang rute pada setiap sambungan ulang.

ip rule show
ip route get 203.0.113.9 from 192.0.2.44

Saat host juga merutekan untuk LAN di belakangnya

Satu lompatan lebih jauh, asimetri yang sama kembali dengan lebih banyak bagian bergerak. Lalu lintas mencapai router dari internet, diteruskan ke perangkat internal, dan satu-satunya jalur kembali perangkat itu adalah terowongan, sehingga jawaban mencapai klien asli dari alamat penyedia itu sendiri. Pelacakan koneksi kemudian bertemu jawaban untuk aliran yang tidak pernah dilihatnya dimulai, dan membuangnya. Klien sementara itu tidak melihat apa pun.

Dua perubahan memperbaikinya: terjemahan tujuan agar koneksi masuk mencapai perangkat internal, dan terjemahan sumber agar jawaban perangkat itu tampak datang dari router itu sendiri.

Pada firmware router ungkapan yang biasa adalah aturan kebijakan yang memakukan penerusan porta ke sisi WAN sementara lalu lintas router sendiri menumpang terowongan. Tanpa terjemahan sumber, jawaban itu dialamatkan ke klien eksternal dan perangkat internal sama sekali tidak memiliki rute ke sana. Uji tiga hal secara terpisah, karena gagal karena alasan berbeda: koneksi yang datang dari luar, koneksi yang dimulai host sendiri, dan pencarian nama.

Artikel terkait