Question

Est-il possible de changer le port de destination d'un paquet UDP en utilisant iptables?

J'essaie de faire en sorte qu'un agent SNMP envoie des interruptions sur 1620 au lieu de 162. Malheureusement, je n'ai réussi à changer que le port source:

  

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

Était-ce utile?

La solution

Cette utilisation n'est apparemment pas prise en charge. Tiré de http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.txt :

  

6.3.7. Modification de la destination des connexions générées localement

     

Le code NAT vous permet d'insérer   Règles DNAT dans la chaîne OUTPUT, mais
  ceci n’est pas entièrement supporté dans la 2.4 (il   peut être, mais il faut un nouveau
  option de configuration, quelques tests,   et un peu de codage, donc à moins que   Quelqu'un engage Rusty à l'écrire, je   Je ne m'attendrais pas à ça bientôt).

     

La limitation actuelle est que vous   peut seulement changer la destination à
  la machine locale (par exemple `j DNAT --to   127.0.0.1 '), à aucune autre machine, sinon les réponses ne seront pas   être traduit correctement.

Autres conseils

En supposant que vous sachiez à quelle machine vous voulez envoyer:

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

vous pouvez rediriger 162 vers 1620

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

@PiedPiper avait raison. Avec DNAT, vous devez spécifier une adresse IP, mais nous souhaitons uniquement effectuer la redirection de port. Par conséquent, -j REDIRECT peut fonctionner dans ce cas.

Voir http: //www.netfilter .org / documentation / HOWTO // NAT-HOWTO-6.html # ss6.2

Au lieu de créer SNAT, essayez avec DNAT. Le port source est modifié car SNAT signifie SourceNAT, donc DNAT fonctionnera pour vous.

Vous pouvez configurer une règle de renvoi, puis réinjecter le paquet avec le port modifié.

Je l'ai fait il y a longtemps sous Mac OS X, mais c'est le même principe sous Linux: http: //blog.dv8. ro / 2006/08 / using-divert-sockets-on-mac-os-x.html

Vous devez créer un proxy transparent très simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top