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:

  • Bloccare il traffico in entrata in modalità di incollaggio quando l'interface primaria è in discesa
  • Utilizzo di Linux IPTables, Come bloccare torrenti o qualsiasi protocollo P2P?
  • Linux Proxy Transparent IPv6 (ma Linux non support NAT su IPv6 !?)
  • Qual è la query IPTABLES per consentire 9987 UDP in?
  • Bloccare IP su EC2. Firewall o altre opzioni?
  • Firewall: consente tutto il traffico da fonti autenticate via. una connessione ssh aperta
  • 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.