Saya memiliki kotak linux yang diatur dengan 2 kartu jaringan untuk memeriksa lalu lintas melalui port 80. Satu kartu digunakan untuk internet, yang lain dihubungkan ke switch jaringan. Intinya adalah untuk dapat memeriksa semua lalu lintas HTTP dan HTTPS pada perangkat yang terhubung ke sakelar itu untuk tujuan debugging.
Saya telah menulis aturan berikut untuk iptables:
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
Pada 192.168.2.1:1337, saya punya proksi http transparan menggunakan Charles ( http://www.charlesproxy.com/ ) untuk merekam.
Semuanya baik-baik saja untuk port 80, tetapi ketika saya menambahkan aturan serupa untuk port 443 (SSL) yang menunjuk ke port 1337, saya mendapatkan kesalahan tentang pesan tidak valid melalui Charles.
Saya telah menggunakan proxy proxy pada komputer yang sama sebelumnya dengan Charles ( http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ ), tetapi tidak berhasil melakukannya secara transparan karena alasan tertentu. Beberapa sumber yang saya googled mengatakan ini tidak mungkin - Saya bersedia menerimanya sebagai jawaban jika seseorang dapat menjelaskan alasannya.
Sebagai catatan, saya memiliki akses penuh ke pengaturan yang dijelaskan termasuk semua klien yang terhubung ke subnet - sehingga saya dapat menerima sertifikat yang ditandatangani sendiri oleh Charles. Solusinya tidak harus spesifik-Charles karena secara teori, proxy transparan apa pun akan dilakukan.
Terima kasih!
Sunting: Setelah bermain dengannya sedikit, saya bisa membuatnya bekerja untuk host tertentu. Ketika saya memodifikasi iptables saya sebagai berikut (dan buka 1338 di charles untuk proxy terbalik):
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:1338
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 1338
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
Saya bisa mendapatkan respons, tetapi tanpa host tujuan. Di proksi terbalik, jika saya hanya menentukan bahwa semuanya dari 1338 masuk ke host tertentu yang ingin saya tekan, ia melakukan jabat tangan dengan benar dan saya dapat mengaktifkan proxy SSL untuk memeriksa komunikasi.
Penyiapannya kurang ideal karena saya tidak ingin menganggap semuanya dari 1338 masuk ke host itu - ada ide mengapa host tujuan sedang dilucuti?
Terima kasih lagi