iptables port redirect non funzionante per localhost

Vorrei redirect tutto il traffico dalla port 443 alla port interna 8080. Sto utilizzando questa configuration per iptables:

iptables -t nat -I PREROUTING --source 0/0 --destination 0/0 -p tcp \ --dport 443 -j REDIRECT --to-ports 8080 

Questo funziona per tutti i client esterni. Ma se cerco di accedere alla port 443 dalla stessa maschina, riceverò un errore di connessione rifiutato.

  • Miglior modo per RAID 4 x Intel SSD 910 per PostgreSQL
  • Subversion Repo Mirroring
  • Come faccio a copiare questo con la row di command Unix / Linux?
  • Ubuntu Server 12.04: come configurare il firewall durante l'installazione?
  • Il server è sovraccaricato, agisce come fuori memory, ma non è vero
  • Qual è la differenza tra queste due regole iptables?
  •  wget https://localhost 

    Come posso estendere la regola iptables per redirect anche il traffico locale?

    4 Solutions collect form web for “iptables port redirect non funzionante per localhost”

    PREROUTING non viene utilizzato dall'interface di loopback, è necessario aggiungere anche una regola OUTPUT:

     iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8080 iptables -t nat -I OUTPUT -p tcp -o lo --dport 443 -j REDIRECT --to-ports 8080 

    Per redirect i pacchetti da localhost a un'altra macchina la regola:

      iptables -t nat -A OUTPUT -o lo -d 127.0.0.1 -p tcp --dport 443 -j DNAT --to-destination 10.xyz:port 

    functionrà, ma è necessario triggersre questa opzione nel kernel:

     sysctl -w net.ipv4.conf.all.route_localnet=1 

    Senza che il kernel che imposta non funziona.

    Cosa ne pensi di questo?

    iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp -port 443 -j REDIRECT -to-port 8080

    Hai detto che stai ricevendo l'errore di connessione rifiutato . Ciò significa che non c'è alcun process locale di ascolto sulla port che si sta cercando di connettersi a! Per controllare i processi di ascolto, utilizzare il command:

     $ sudo netstat -lnp | grep 8080 

    Dopo aver applicato la regola, dovresti avere un process di ascolto sulla port 8080 per essere connessi.

    Sembra che dovresti invece avere la seguente regola:

     $ iptables -t nat -I OUTPUT --source 0/0 --destination 0/0 -p tcp --dport 443 -j REDIRECT --to-ports 8080 

    Ricorda che stai inviando dal localhost. Quindi, è necessario redirect il pacchetto di output.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.