Come funziona l'OUTPUT della catena iptables?

Prima esperienza w / iptables, utilizzandola per redirect il traffico dalla port 80 a 8080 in modo da poter eseguire un server delle applicazioni con solo permessi utente. Ho risolto il problema, ma non so perché funziona, e speravo di essere messo in ordine.

Il mio iptables -t nat -L è il seguente:

  • IPTABLES - Limite di un determinato IP in entrata
  • Ho bisogno di una regola separata iptables per l'indirizzo IPv6?
  • Come identificare il traffico di download utilizzando iptables
  • iptables REDIRECT funziona solo per il primo pacchetto
  • Qual è la differenza tra iptables -X e iptables -F?
  • Un set di regole standard iptables standard e standard per un server web HTTP (s) di base
  • Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8080 Chain OUTPUT (policy ACCEPT) targetprot opt source destination REDIRECT tcp -- anywhere localhost tcp dpt:http redir ports 8080 REDIRECT tcp -- anywhere _hostname_ tcp dpt:http redir ports 8080 

    Due cose sulle regole OUTPUT non sono riuscito a grok:

    1) Non devo redirect alla port 80 anziché a 8080? Il reindirizzamento a 8080 mi sembra sbagliato, perché ero sotto l'impressione che i clienti inviano richieste a 80. Non si aspettano risposte da quelle che lo fanno bene?

    2) Perché qui i riferimenti a localhost e hostname ? Se è OUTPUT, non è la destinazione letteralmente ovunque ma qui?

    Tutte le risposte sono apprezzate — sono un noob totale e questo non è particolarmente urgente, ma voglio capire questo.

    One Solution collect form web for “Come funziona l'OUTPUT della catena iptables?”

    Ci sono due cose da sapere:

    In primo luogo, DNAT (REDIRECT) dovrebbe automaticamente "correggere" le informazioni IP / port sul viaggio di return utilizzando conntrack. Pertanto, in iptables non esiste una regola esplicita per mappare dalla port 8080 a 80, viene gestita automaticamente. Puoi guardare conntrack in azione in /proc/net/ip_conntrack oppure utilizzando il pacchetto conntrack-tools .

    In secondo luogo, la catena OUTPUT è per i pacchetti originati da quel computer, mentre PREROUTING è per i pacchetti che arrivano sul computer dall'esterno. Qui c'è una spiegazione, ma il diagramma di stream dato è basato sull'operazione del firewall in modo che non mostra il path che un pacchetto passa quando viene inviato a se stesso. In sostanza, queste due regole OUTPUT devono assicurarsi che se si connette dal server a se stesso (destinazione è 127.0.0.1 o IP pubblico), la connessione viene reindirizzata da 80 a 8080.

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