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.

  • Arresto arriva allo stato ininterrotto mentre si arresta - come posso spegnere?
  • Come arrestare un server Linux da emettere quando un HDD RAID non è riuscito
  • Come monitorare le attività superuser
  • Un modo corretto per creare un SSO chroot su CentOS 7
  • Valori di cache di Linux arp
  • Problemi con block dello SCP durante la copia di file su VPN
  •  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.