Comment puis-je rediriger le trafic sortant vers le port 80 en utilisant iptables localement?
19
J'essaie de rediriger localement les ports sur ma machine Ubuntu en utilisant iptables. Similaire au proxy transparent. Je veux attraper quoi que ce soit en essayant de laisser mon système sur le port 80 et le rediriger vers un hôte et un port distants.
Puis-je y parvenir en utilisant les fonctions NAT et de pré-routage de iptables?
Ajoutez la règle suivante à la table NAT ( -t nat).
Cette règle sera ajoutée ( -A) au trafic sortant ( OUTPUT).
Nous ne sommes intéressés que par le trafic TCP ( -p tcp).
Nous ne sommes intéressés que par le trafic dont le port de destination est 80 ( --dport 80).
Lorsque nous avons un match, passez à DNAT ( -j DNAT).
Acheminez ce trafic vers le port IP @ 80 d'un autre serveur ( --to-destination IP:80).
Qu'est-ce que DNAT?
DNAT
This target is only valid in the nat table, in the PREROUTING and OUTPUT
chains, and user-defined chains which are only called from those chains.
It specifies that the destination address of the packet should be modified
(and all future packets in this connection will also be mangled), and
rules should cease being examined.
Est-ce parce que c'est localement et non via une passerelle? votre SNAT fonctionnerait via une passerelle?
pjf
@pjf - Je le pense. J'ai mis à jour ma réponse.
slm
@pjf - J'ai trouvé les deux règles et j'étais en train de mettre à jour ma réponse avec les deux. Je ne savais pas dans quelle situation vous étiez.
slm
6
Cela peut être rendu plus spécifique pour fonctionner uniquement sur le trafic vers un hôte de destination particulier. Par exemple, lorsque Postfix s'est trompé et que les e-mails en file d'attente veulent être envoyés à une ancienne adresse IP.
Cela peut vous permettre de traduire des ports vers toutes les adresses IP. La principale différence ici est l'absence d'une adresse IP sur le --to-destinationterrain.
Astuce très utile; exactement ce dont j'avais besoin. Existe-t-il un moyen d'incrémenter le numéro de port? Disons que j'ai une gamme de 100 ports et que je veux les augmenter tous d'un montant spécifique.
Zdenek
Pas sûr de ce que vous voulez dire. Pourriez-vous écrire une boucle for dans Bash?
Felipe Alvarez
Une boucle ajoutant 100 règles iptables fonctionnerait, mais cela la ralentirait. Je préférerais pouvoir lui dire d'incrémenter plusieurs ports successifs dans une seule règle.
Zdenek
@Zdenek Je ne sais pas si c'est possible avec iptables. Avez-vous regardé firewalld?
Cela peut être rendu plus spécifique pour fonctionner uniquement sur le trafic vers un hôte de destination particulier. Par exemple, lorsque Postfix s'est trompé et que les e-mails en file d'attente veulent être envoyés à une ancienne adresse IP.
la source
Cela peut vous permettre de traduire des ports vers toutes les adresses IP. La principale différence ici est l'absence d'une adresse IP sur le
--to-destination
terrain.la source
firewalld
?