GNU/Linux >> Belajar Linux >  >> Linux

Iptables Dan Proxy Transparan?

Saya telah menyiapkan proxy TCP lokal dan transparan di localhost . Saya ingin mengarahkan SEMUA lalu lintas TCP ke proxy ini, sehingga dapat menanganinya dan tidak ada yang “bocor”, yang menghindari proxy. Saya perlu menggunakan IPTables untuk mengarahkan lalu lintas. Saya berpikir untuk menggunakan TPROXY, tetapi itu membutuhkan dukungan aplikasi dan hanya target REDIRECT yang didukung saat ini.

Saya telah menggunakan aturan IPTables berikut:

iptables -t nat -A OUTPUT -o lo -j RETURN
iptables -t nat -A OUTPUT -d 127.0.0.0/8 -j RETURN
iptables -t nat -A OUTPUT -d 192.168.0.0/16 -j RETURN
iptables -t nat -A OUTPUT -m owner --uid-owner proxy-owner -j RETURN
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $PROXY_PORT

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner proxy-owner -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j LOG
iptables -P OUTPUT DROP

Mereka sepertinya untuk bekerja dengan baik, namun saya bingung mengapa.

Berikut adalah dua pertanyaan yang saya masih belum tahu jawabannya:

1) Mengenai aturan terakhir di tabel NAT, mengapa saya hanya ingin mengarahkan ulang paket SYN ke port proxy lokal (--syn )?
Saya ingin mengarahkan SEMUA paket TCP. Dalam konfigurasi saat ini sepertinya hanya paket SYN
yang diarahkan ke proxy lokal, dan semua paket lain diizinkan untuk langsung mengalir ke tujuan, yang (secara teori) menyebabkan kekacauan total (atau semua kecuali SYN sedang diblokir oleh tabel filter).
Namun, jika saya menghapus --syn opsi dan mengarahkan SEMUA paket ke proxy lokal, proxy tidak berfungsi sama sekali. Mengapa?

2) Mengenai aturan ke-4 dalam tabel filter, mengapa saya perlu secara eksplisit mengizinkan koneksi keluar yang sudah ada? Proxy adalah satu-satunya aplikasi yang diizinkan untuk mengirim paket ke tujuan non-localhost, dan itu sudah diizinkan untuk melakukannya (aturan 3), jadi untuk apa saya memerlukan aturan ke-4? Sepertinya ini memungkinkan koneksi non-proxy untuk menghindari proxy.

Terima kasih!

Jawaban yang Diterima:

Kedua bagian pertanyaan Anda terhubung.

Bagian (1) menangkap paket SYN dan mengarahkannya seperti yang Anda sarankan. Dari titik ini conntrack (2) mengambil alih dan mengenali bahwa setiap paket berikutnya dalam aliran itu adalah bagian dari koneksi yang sama dan mengalihkannya dengan cara yang sama seperti paket SYN asli.

Terkait:Ubah lingkungan dari proses yang berjalan?

Ikhtisar Pelacakan Sambungan dapat ditemukan di http://en.wikipedia.org/wiki/Netfilter#Connection_Tracking


Linux
  1. Memblokir daftar hitam host dan iptables

  2. 2>&1 dan memahami idiom skrip shell lainnya

  3. Bagaimana Cara Kerja Input Keyboard Dan Output Teks?

  1. Apa Yang Dimaksud Dengan Menghubungkan Stdout Dan Stdin?

  2. Output perintah dialihkan ke file dan terminal

  3. Warna berbeda untuk perintah dan output

  1. Cara Mengarahkan Output ke File dan Stdout di Linux

  2. readlink -f dan -e opsi deskripsi tidak jelas

  3. Iptables - Rantai Bridge dan Forward