Domanda

È possibile cambiare la porta di destinazione di un pacchetto UDP usando iptables?

Sto cercando di convincere un agente SNMP a inviare trappole su 1620 invece di 162. Sfortunatamente finora sono riuscito a cambiare solo la porta di origine:

  

iptables -t nat -A POSTROUTING -p udp   --dport 162 -j SNAT --to: 1620

È stato utile?

Soluzione

Apparentemente questo utilizzo non è supportato. Tratto da http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.txt :

  

6.3.7. Modifica della destinazione delle connessioni generate localmente

     

Il codice NAT ti consente di inserire   Regole DNAT nella catena OUTPUT, ma
  questo non è pienamente supportato in 2.4 (esso   può essere, ma richiede una nuova
  opzione di configurazione, alcuni test,   e un bel po 'di codice, quindi a meno che   qualcuno contrae Rusty per scriverlo, io   non me lo sarei aspettato presto).

     

L'attuale limitazione è che tu   può solo cambiare la destinazione in
  la macchina locale (ad es. `j DNAT - a   127.0.0.1 '), non a qualsiasi altra macchina, altrimenti le risposte no   essere tradotto correttamente.

Altri suggerimenti

Supponendo che tu sappia a quale macchina stai inviando:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620

potresti reindirizzare da 162 a 1620

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620

@PiedPiper aveva ragione. Con DNAT devi specificare un indirizzo IP, ma vogliamo solo eseguire il reindirizzamento delle porte, quindi in questo caso -j REDIRECT potrebbe funzionare.

Vedi http: //www.netfilter .org / documentazione / HOWTO // NAT-HOWTO-6.html # ss6.2

Invece di creare SNAT, prova con DNAT. La porta di origine viene cambiata perché SNAT significa SourceNAT, quindi DNAT funzionerà per te.

È possibile impostare una regola di deviazione e quindi reiniettare il pacchetto con la porta modificata.

L'ho fatto qualche tempo fa su Mac OS X ma è lo stesso principio su Linux: http: //blog.dv8. ro / 2006/08 / usando-deviazione-sockets-on-mac-os-x.html

Fondamentalmente devi creare un proxy trasparente molto semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top