GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Proxy Socks Transparan Mengetahui Ip Tujuan Yang Digunakan?

Ada dua proksi SOCKS yang saya ketahui yang mendukung proksi transparan untuk koneksi TCP keluar apa pun:Tor dan redsocks. Tidak seperti proxy HTTP, proxy SOCKS ini dapat secara transparan mem-proxy apa saja koneksi TCP keluar, termasuk protokol dan protokol terenkripsi tanpa metadata atau header.

Kedua proxy ini memerlukan penggunaan NAT untuk mengarahkan ulang lalu lintas TCP keluar ke port lokal proxy. Misalnya, jika saya menjalankan Tor dengan TransPort 9040 di mesin lokal saya, saya perlu menambahkan aturan iptables seperti ini:

iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 9040

Sepengetahuan saya, ini akan menggantikan IP dan port tujuan asli dengan 127.0.0.1 dan 9040 , jadi mengingat ini adalah aliran terenkripsi (seperti SSH) atau tanpa header (seperti whois), bagaimana proxy mengetahui IP dan port tujuan asli?

Jawaban yang Diterima:

Begini caranya:

static int getdestaddr_iptables(int fd, const struct sockaddr_in *client, const struct sockaddr_in *bindaddr, struct sockaddr_in *destaddr)
{
        socklen_t socklen = sizeof(*destaddr);
        int error;

        error = getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, destaddr, &socklen);
        if (error) {
                log_errno(LOG_WARNING, "getsockopt");
                return -1;
        }
        return 0;
}

iptables menimpa alamat tujuan asli tetapi mengingat yang lama. Kode aplikasi kemudian dapat mengambilnya dengan meminta opsi soket khusus, SO_ORIGINAL_DST .


Linux
  1. Bagaimana cara menggunakan Metode CONNECT pada Proxy HTTP menggunakan Telnet?

  2. Bagaimana Bash Tahu Bagaimana Itu Dipanggil?

  3. Python – Bagaimana /usr/bin/env Mengetahui Program Yang Digunakan?

  1. Jalur Mana yang Digunakan `Sudo ` Untuk Mencari “?

  2. Bagaimana Gcc Mengetahui Dimana Boost Dipasang?

  3. Bagaimana Menemukan Port Serial Yang Digunakan?

  1. Cara mengkonfigurasi buruh pelabuhan untuk menggunakan proxy

  2. Bagaimana saya bisa tahu proses mana yang menggunakan swap?

  3. Bagaimana pip memutuskan roda linux mana yang akan digunakan?