1 votes

Iptable les redirections de ports multiples en fonction de l'adresse de destination

J'ai configuré iptables pour le routage sélectif. Dans la configuration actuelle, il vérifie si l'adresse dst est listée dans une chaîne spécifique et si elle ne l'est pas, il redirige le trafic vers mon port proxy qui est actif sur le port 1080.

Cela fonctionne bien avec la configuration suivante :

iptables -t nat -N PROXY
# Do not redirect
iptables -t nat -A PROXY -d external.proxy.address.1 -j RETURN
iptables -t nat -A PROXY -d external.proxy.address.2 -j RETURN
iptables -t nat -A PROXY -d 211.96.0.0/255.240.0.0 -j RETURN
iptables -t nat -A PROXY -d 211.128.0.0/255.128.0.0 -j RETURN
iptables -t nat -A PROXY -d 218.0.0.0/255.128.0.0 -j RETURN
... [and many more address] ...

# Redirect everything else to the proxy listening on port 1080
iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports 1080
iptables -t nat -I PREROUTING -p tcp -j PROXY 

Comme mentionné, cela fonctionne bien pour le proxy1 mais j'essaie de rediriger le trafic de manière similaire pour la destination 10.0.0.15 vers un proxy différent (proxy2) qui écoute sur le port 1088.

J'ai essayé plusieurs façons d'y parvenir sans succès.

Configuration que j'ai essayée :

iptables -t nat -A PROXY -d 10.0.0.15 -j REDIRECT --to-ports 1088 # didn't do anything

Quelle serait la meilleure façon d'y parvenir (si c'est possible) ?

1 votes

Où avez-vous mis cette ligne dans la liste ? Si vous la placez après la dernière ligne de la chaîne PROXY, elle ne sera jamais atteinte.

0voto

iwaseatenbyagrue Points 3533

Je pense que votre problème est dû à un malentendu sur ce que RETURN fait. https://unix.stackexchange.com/questions/191607/iptables-and-return-target#191614 pourrait aider.

Actuellement, votre chaîne PROXY fonctionne comme suit :

  • le trafic entre dans le PREROUTING chaîne, où vous avez (comme première clause ?) iptables -t nat -I PREROUTING -p tcp -j PROXY .
  • cela indique à iptables d'évaluer votre trafic par rapport à la règle PROXY chaîne
  • le site PROXY dit deux choses, en gros : soit il y a une règle avec un RETURN action pour le trafic, ou il n'y a pas, et iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports 1080 s'applique.
  • si votre trafic correspond à un RETURN alors iptables retourne à l'entrée PREROUTING et évalue la règle suivante. Il semble qu'il n'y ait pas de "règle suivante" pour faire ce que vous voulez.

Le problème est le suivant : iptables -t nat -A PROXY -d 10.0.0.15 -j REDIRECT --to-ports 1088

Tu mets ça dans le PROXY mais tout le trafic auquel vous voulez que cette redirection s'applique est en fait configuré pour RETURN de (c'est-à-dire sortir de) votre PROXY chaîne.

Ce dont vous avez besoin à la place de la ligne ci-dessus est :

iptables -t nat -A PREROUTING -d 10.0.0.15 -j REDIRECT --to-ports 1088

La clé est le chaîne dans lequel se trouve la règle. Avec cette règle dans PREROUTING, votre RETURN fonctionneront comme prévu, en forçant le trafic correspondant à s'éloigner du réseau "par défaut". PROXY règle iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports 1080 et de revenir dans PREROUTINGiptables -t nat -A PREROUTING -d 10.0.0.15 -j REDIRECT --to-ports 1088 peut être appliquée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X