GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo un proxy di calze trasparenti sa quale IP di destinazione utilizzare?

Ci sono due proxy SOCKS che conosco che supportano il proxy trasparente per qualsiasi connessione TCP in uscita:Tor e redsocks. A differenza dei proxy HTTP, questi proxy SOCKS possono inviare proxy in modo trasparente a qualsiasi connessione TCP in uscita, inclusi protocolli crittografati e protocolli senza metadati o intestazioni.

Entrambi questi proxy richiedono l'uso di NAT per reindirizzare qualsiasi traffico TCP in uscita alla porta locale del proxy. Ad esempio, se eseguo Tor con TransPort 9040 sul mio computer locale, dovrei aggiungere una regola iptables come questa:

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

A mia conoscenza, questo sostituirebbe l'IP di destinazione e la porta originali con 127.0.0.1 e 9040 , quindi dato che si tratta di un flusso crittografato (come SSH) o senza intestazioni (come whois), come fa il proxy a conoscere l'IP e la porta di destinazione originali?

Risposta accettata:

Ecco come si fa:

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 sovrascrive l'indirizzo di destinazione originale ma ricorda quello vecchio. Il codice dell'applicazione può quindi recuperarlo chiedendo un'opzione socket speciale, SO_ORIGINAL_DST .


Linux
  1. Come utilizzare il metodo CONNECT su un proxy HTTP utilizzando Telnet?

  2. Quale percorso usa `sudo ` per cercare “?

  3. Come fa Gcc a sapere dove è installato Boost?

  4. Come trovare quale porta seriale è in uso?

  5. In che modo il comando Xdg-open sa quale applicazione utilizzare per aprire un file?

Comando file Linux:cosa fa e come usarlo

Come utilizzare il proxy sulla riga di comando di Linux?

Come utilizzare il comando which in Linux

Come posso sapere quale processo sta usando lo scambio?

In che modo pip decide quali ruote linux usare?

Spostare un file mentre è in uso:come funziona?