OVH Cloud OVH Cloud

HS: iptables interface de sortie par la m=c3=aame que l'entr=c3=a9e.

15 réponses
Avatar
Jérémy Prego
Bonjour,

en ce Dimanche nocturne je me décide à poser ma question ici. En effet,
je fais de la redirection d'IP en OUTPUT et en PREROUTING avec iptables.
depuis la machine routeur et le réseau local derrière c'est parfait la
machine jeremy.domain.net passe bien par la connexion que j'ai demandé a
Iptables.
Le souci est quand de la machine jeremy.domain.net qui se trouve donc
sur internet je cherche à contacter le routeur par son interface
principale, il se passe un truc très embêtant, Iptables renvoie les
réponses par l'interface que j'ai choisi pour ma redirection de
l'OUTPUT. Du coup, ça ne peut pas fonctionner, forcément.

est-ce qu'une solution existe pour que si ça arrive par l'interface
wan0, ça reparte par la même interface et que ça ne passe pas par les
règle que j'ai mis pour l'output ?

pour rappel, un petit exemple de ce que je fais:
##routage alternatif
iptables -t mangle -N ROUTING-POLICY
iptables -t mangle -A OUTPUT -j ROUTING-POLICY
iptables -t mangle -A PREROUTING -j ROUTING-POLICY
iptables -t mangle -D ROUTING-POLICY -d jeremy.domain.net -j MARK
--set-mark 0x3

une règle que j'ai testé mais sans succès vu que j'avais plus de
redirection vers 0x3 sur le routeur lui même:
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.tld ! -o wan0 -j
MARK --set-mark 0x3

merci beaucoup pour votre réponse :)

Jerem

5 réponses

1 2
Avatar
Jérémy Prego
Le 17/04/2019 à 07:27, Pascal Hambourg a écrit :
Le 16/04/2019 à 18:44, Jérémy Prego a écrit :
j'ai testé ça qui ne fonctionne pas non plus:
iptables -t mangle -D ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x1
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -j CONNMARK
--restore-markc

Je suppose que -D et --restore-markc sont des erreurs de copier-coller ?

oui
Qu'est-ce qui se passe exactement ?

ça ne sort pas du tout ... c'est pour ça que j'aimerai bien un peu
d'aide sur les règles a appliquer vraiment pour comprendre parce que là
je patauge vraiment. j'ai aucune idée de ce qu'est une bonne règle dans
ce cas précis.

re,
bon alors, voyant que ça ne fonctionnait pas j'ai décidé de partir sur
une vm fraîche pour faire des tests et effectivement ça fonctionne ! du
coup, merci beaucoup !
Par contre, l'inconvénient est que du coup j'ai 2 lignes par host au
lieu d'une seul du coup ça va me doubler toute les rules. Je ne pense
pas qu'on puisse réduire ça en une ligne ?
Jerem
Avatar
Pascal Hambourg
Le 17/04/2019 à 18:14, Jérémy Prego a écrit :
Le 17/04/2019 à 07:27, Pascal Hambourg a écrit :
Le 16/04/2019 à 18:44, Jérémy Prego a écrit :
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x1
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -j CONNMARK
--restore-markc(...)



Par contre, l'inconvénient est que du coup j'ai 2 lignes par host au
lieu d'une seul du coup ça va me doubler toute les rules. Je ne pense
pas qu'on puisse réduire ça en une ligne ?

Comment ça, par host ? Il y en a d'autres ? Combien ? La liste est fixe
ou dynamique ?
Tu peux factoriser l'adresse grâce à une autre chaîne utilisateur.
Tu peux utiliser ipset pour gérer une liste d'adresses.
Avatar
Jérémy Prego
Le 17/04/2019 à 21:51, Pascal Hambourg a écrit :
)

Par contre, l'inconvénient est que du coup j'ai 2 lignes par host au
lieu d'une seul du coup ça va me doubler toute les rules. Je ne pense
pas qu'on puisse réduire ça en une ligne ?

Comment ça, par host ? Il y en a d'autres ?

oui, quelques uns.
Combien ?

plusieurs centaine. en fait, je fais passer des services par des
connexion différentes, mais il arrive que ces mêmes service doivent
pouvoir contacter la connexion principal du routeur. ssh, http, dns ...
La liste est fixe ou dynamique ?

plutot fixe, il m'arrive parfois d'ajouter des adresses mais ça ne
change pas souvent.
Tu peux factoriser l'adresse grâce à une autre chaîne utilisateur.

???
Tu peux utiliser ipset pour gérer une liste d'adresses.

Merci, je vais regarder.
Jerem
Avatar
Pascal Hambourg
Le 17/04/2019 à 22:07, Jérémy Prego a écrit :
Le 17/04/2019 à 21:51, Pascal Hambourg a écrit :
)

Par contre, l'inconvénient est que du coup j'ai 2 lignes par host au
lieu d'une seul du coup ça va me doubler toute les rules. Je ne pense
pas qu'on puisse réduire ça en une ligne ?

Comment ça, par host ? Il y en a d'autres ?

oui, quelques uns.
Combien ?

plusieurs centaine.

Alors ipset est probablement plus efficace que des centaines de règles.
Tu peux factoriser l'adresse grâce à une autre chaîne utilisateur.

???

iptables -t mangle -N ROUTING-POLICY
iptables -t mangle -N ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse1 -j ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse2 -j ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse3 -j ROUTING-POLICY-2
...
iptables -t mangle -A ROUTING-POLICY-2 -m conntrack --ctstate NEW -j
CONNMARK --set-mark 0x1
iptables -t mangle -A ROUTING-POLICY-2 -j CONNMARK --restore-mark
Avatar
Jérémy Prego
Le 17/04/2019 à 23:49, Pascal Hambourg a écrit :
Le 17/04/2019 à 22:07, Jérémy Prego a écrit :
Le 17/04/2019 à 21:51, Pascal Hambourg a écrit :
)

Par contre, l'inconvénient est que du coup j'ai 2 lignes par host au
lieu d'une seul du coup ça va me doubler toute les rules. Je ne pense
pas qu'on puisse réduire ça en une ligne ?

Comment ça, par host ? Il y en a d'autres ?

oui, quelques uns.
Combien ?

plusieurs centaine.

Alors ipset est probablement plus efficace que des centaines de règles.

oui je suis en train de regarder, ça semble plus optimisé en effet :) et
pas difficile a mettre en place.
Tu peux factoriser l'adresse grâce à une autre chaîne utilisateur.

???

iptables -t mangle -N ROUTING-POLICY
iptables -t mangle -N ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse1 -j ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse2 -j ROUTING-POLICY-2
iptables -t mangle -A ROUTING-POLICY -d adresse3 -j ROUTING-POLICY-2
...
iptables -t mangle -A ROUTING-POLICY-2 -m conntrack --ctstate NEW -j
CONNMARK --set-mark 0x1
iptables -t mangle -A ROUTING-POLICY-2 -j CONNMARK --restore-mark

merci beaucoup pour tout !
Jerem
1 2