Cara merutekan hanya permintaan http / s tertentu melalui VPN

1

Saya mencoba membuat layanan VPN yang hanya mampu memfilter lalu lintas web HTTP / S tertentu melalui VPN, dan lalu lintas lain yang tidak cocok dengan kriteria filter dinamis saya harus dikirim melalui gateway default.

Saya tahu jika saya menggunakan OpenVPN, saya bisa merutekan traffic (Layer 2 & 3) IP tertentu melalui VPN dan lainnya melalui gateway default. Tapi saya perlu menyaring lalu lintas yang mirip dengan cara kerja Proxy HTTP. Saya sebenarnya mencoba membuat Server Proxy Web saya sendiri , tetapi yang berfungsi di tingkat sistem dan bukan di tingkat browser. Jadi, bahkan jika pengguna membuat klien browser mereka sendiri dan mencoba mengakses URL tertentu, lalu lintas itu dapat dialihkan melalui VPN. Jadi mengapa saya berpikir untuk membuat VPN yang mampu menangkap semua lalu lintas yang berasal dari host daripada Proxy HTTP sederhana. Tapi sekarang masalahnya adalah bagaimana saya bisa memfilter hanya lalu lintas yang perlu saya kirim melalui VPN dengan memeriksa permintaan HTTP GET / POST. Karena untuk melakukan ini, VPN membutuhkan akses ke data Layer Aplikasi daripada Layer 2 atau Layer 3.

Jadi jika saya meringkas kebutuhan saya, saya mencoba mengembangkan hibrida saya sendiri antara Perangkat Web Proxy + VPN (TUN / TAP) .

  1. Aplikasi / layanan ini yang dipasang oleh pengguna pada mesin mereka harus dapat mencegat semua lalu lintas yang berasal dari host.
  2. Itu harus dapat memeriksa permintaan HTTP / HTTPS yang dibuat dari browser atau klien khusus dan hanya ketika permintaan tersebut cocok dengan nama URL tertentu (yaitu www.facebook.com/*, www.linkedin.com/*, * .js, * .swf), lalu lintas itu akan dialihkan melalui VPN.
  3. Jika permintaan tidak memenuhi persyaratan yang cocok, permintaan akan dikirim melalui gateway internet default pengguna.
  4. Kondisi pencocokan URL dapat banyak dan diubah kapan saja sehingga tidak sulit dikodekan.

Setiap petunjuk yang baik (kode, dokumentasi untuk plugin OpenVPN yang dapat saya tulis, dll) tentang bagaimana saya dapat mencapai ini, atau saran Jika saya mencoba melakukan ini dengan cara yang salah sangat dihargai.

Neo
sumber
Bukankah menggunakan nomor port cukup baik?
Eugen Rieck
Saya bisa mengubah rute semua paket dengan port tujuan sebagai 80 atau 443 menggunakan aturan routing. Tapi tetap saja saya tidak yakin bagaimana saya bisa melakukan HTTP url maching & filtering.
Neo
Jika Anda hanya ingin merutekan IP server tertentu 192.168.12.34melalui VPN maka pushrute untuk itu ke klien vpn Anda: misalnyapush "route 192.168.12.34"
dotvotdot