Bagaimana secara elegan mengecualikan lalu lintas jaringan FreeBSD dari antarmuka OpenVPN oleh port

1

sysadmin yang tidak berpengalaman di sini.

Saya berencana menjalankan daemon bersih di dalam penjara FreeBSD melalui OpenVPN, tetapi ingin dapat SSH langsung ke penjara dan menggunakan daemon antarmuka web daemon tanpa melalui VPN. Seperti yang saya pahami, sebuah terowongan OpenVPN biasanya diatur sebagai antarmuka internet virtual standar, dan lalu lintas masuk akan keluar pada antarmuka OpenVPN secara default (yang bermasalah, karena hal ini menimbulkan latensi).

Saya pikir "tentu saja, karena semua lalu lintas ini meninggalkan beberapa port, saya hanya akan mengarahkan mereka ke gateway non-VPN." Saya sudah mencoba mencari solusi, tetapi hampir semuanya melibatkan iptables bukan ipfw (yang merupakan default untuk FreeBSD) dan menyelesaikan masalah yang sedikit berbeda. Dan solusi alternatif seperti menggunakan beberapa rute default untuk memastikan bahwa lalu lintas masuk pada antarmuka apa pun selalu dikirim pada antarmuka yang sama tampaknya jauh jangkauannya dan membutuhkan pengetahuan mendalam tentang semua alat yang terlibat.

Apakah ada cara yang elegan untuk memastikan bahwa lalu lintas yang meninggalkan port tertentu keluar pada antarmuka non-standar yang ditentukan menggunakan ipfw?

Polygonica
sumber

Jawaban:

1

Kecuali jika sesuatu seperti Multipath TCP digunakan, koneksi TCP tidak akan pernah mengubah antarmuka mereka. Jika lalu lintas datang dari host jarak jauh A pada antarmuka Y, jawaban akan (umumnya) keluar melalui antarmuka Y, bahkan jika rute yang paling cocok (untuk menampung A) mungkin mengarah ke tempat lain. Asalkan, tentu saja, antarmuka Y itu memiliki rute menuju host A.

OpenVPN dalam redirect-gateway def1konfigurasi yang paling sering digunakan tidak menimpa rute. Alih-alih, itu memanfaatkan bagaimana pencocokan rute dilakukan: Rute pencocokan paling spesifik dipilih. Secara umum, Anda akan memiliki 0.0.0.0/0rute (alias rute default) yang menunjuk ke gateway internet Anda (atau apa pun). Rute ini cocok dengan segalanya. Rute yang lebih spesifik biasanya juga ada, yang mengarah ke jaringan lokal Anda. OpenVPN membuat dua rute baru: 0.0.0.0/1dan 128.0.0.0/1. Sekali lagi, rute ini cocok dengan semuanya, tetapi dipilih dari rute default Anda sebelumnya, karena lebih spesifik. Intinya: Antarmuka Y masih dapat mencapai "segalanya".

Secara umum, koneksi VPN tidak menghalangi lalu lintas masuk pada antarmuka lain. Dengan demikian, itu harus berfungsi tanpa pengaturan tambahan.

Daniel B
sumber
Terima kasih! Saya ingin tahu, meskipun (meskipun saya akan mengambil apa yang Anda katakan pada nilai nominal): apakah ada dokumentasi yang bisa saya baca yang akan memberi tahu saya bahwa koneksi TCP terikat ke antarmuka? Saya melakukan sedikit pencarian di Google tentang dokumentasi yang relevan, tetapi saya masih tidak yakin bagaimana saya bisa meramalkannya sendiri.
Polygonica
Secara definisi: Titik akhir TCP ditentukan oleh alamat IP dan port TCP. Titik akhir TCP dalam suatu koneksi diperbaiki, karena koneksi didefinisikan oleh dua titik akhir. Dalam semua konfigurasi khusus kecuali, setiap antarmuka IP pada mesin memiliki alamat IP yang unik. Jadi, kecuali membuat koneksi baru, semuanya sudah diperbaiki.
Daniel B