Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
daniel huhardeaux
Le 15/04/2019 à 00:43, Jérémy Prego a écrit :
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 :)

Il faut compléter par le routage genre
# marked packets go out through there route
ip rule add fwmark $markISP1 table isp1
ip rule add fwmark $markISP2 table isp2
en ayant créer les tables isp1 et isp2.
Supposant que tu as bien mis à jour /etc/iproute2/rt_tables ...
Daniel
Avatar
Jérémy Prego
Le 15/04/2019 à 09:19, daniel huhardeaux a écrit :
Il faut compléter par le routage genre
# marked packets go out through there route
ip rule add fwmark $markISP1 table isp1
ip rule add fwmark $markISP2 table isp2

oui oui c'est fait :) j'ai oublié de le préciser dans mon premier message
ip rule:
32760:    from all fwmark 0x3 lookup 103
ip route show table 103
default via 145.239.153.11 dev ppp0
Daniel

Jerem
Avatar
Pascal Hambourg
Le 15/04/2019 à 00:43, Jérémy Prego a écrit :
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.

Je n'ai rien compris. Et pourtant j'ai la prétention de m'y connaître un
peu.
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 ?

Qu'entends-tu par "ça" ? Si tu parles de paquets, ce ne sont pas les
mêmes qui arrivent et qui partent.
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

-D, vraiment ?
C'est du routage avancé, pas de la redirection. Pas étonnant que je n'ai
rien compris.
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible CONNMARK et la correspondance connmark.
Une autre possibilité plus simple mais probablement incomplète consiste
à discriminer l'adresse source originelle de la connexion avec l'option
--ctorigsrc de la correspondance conntrack, en ajoutant à la règle de
marquage :
-m conntrack ! --ctorigsrc jeremy.domain.net
Avatar
Jérémy Prego
Le 15/04/2019 à 20:18, Pascal Hambourg a écrit :
Je n'ai rien compris. Et pourtant j'ai la prétention de m'y connaître
un peu.

oups, je n'utilise pas les bon termes.
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

-D, vraiment ?

non, -A bien entendu. erreur de copier / coller.
C'est du routage avancé, pas de la redirection. Pas étonnant que je
n'ai rien compris.

oui, routage avancé, pardon. au temps pour moi.
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible CONNMARK et la correspondance connmark.

oui, exactement. du coup je vais tester ça, merci.
Une autre possibilité plus simple mais probablement incomplète
consiste à discriminer l'adresse source originelle de la connexion
avec l'option --ctorigsrc de la correspondance conntrack, en ajoutant
à la règle de marquage :
-m conntrack ! --ctorigsrc jeremy.domain.net

ça pour le coup j'ai pas trop compris, mais je relierai ça si la
solution 1 ne fonctionne pas :)
Merci Pascal.
Jerem
Avatar
Jérémy Prego
Le 15/04/2019 à 20:18, Pascal Hambourg a écrit :
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible >CONNMARK et la correspondance connmark.

pourrais-tu m'éclaircir sur cette partie en me fournissant un exemple de
règle ? je trouve rien qui correspond vraiment après avoir testé
plusieurs règles trouvé et adapté ici et là ...
par exemple j'ai trouvé et adapté une règles comme ça:
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x3
iptables -t mangle -A ROUTING-POLICY -j CONNMARK --restore-mark
vu que ça ne correspond pas tout à fait à ce que tu indiques plus haut
et que le résultat n'est pas vraiment celui attendu je suppose que je
suis pas bon. Un peu d'aide afin de comprendre comment former ma règle
ne serait pas de refus.
Merci beaucoup.
Jerem
Avatar
Pascal Hambourg
Le 16/04/2019 à 03:48, Jérémy Prego a écrit :
Le 15/04/2019 à 20:18, Pascal Hambourg a écrit :
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible CONNMARK et la correspondance connmark.

pourrais-tu m'éclaircir sur cette partie en me fournissant un exemple de
règle ? je trouve rien qui correspond vraiment après avoir testé
plusieurs règles trouvé et adapté ici et là ...
par exemple j'ai trouvé et adapté une règles comme ça:
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x3
iptables -t mangle -A ROUTING-POLICY -j CONNMARK --restore-mark
vu que ça ne correspond pas tout à fait à ce que tu indiques plus haut
et que le résultat n'est pas vraiment celui attendu je suppose que je
suis pas bon. Un peu d'aide afin de comprendre comment former ma règle
ne serait pas de refus.

La seconde règle ne doit marquer que les paquets à destination de
l'adresse distante. Il ne faut pas rerouter les paquets provenant de
cette adresse.
Avatar
Jérémy Prego
Le 16/04/2019 à 07:05, Pascal Hambourg a écrit :
Le 16/04/2019 à 03:48, Jérémy Prego a écrit :
Le 15/04/2019 à 20:18, Pascal Hambourg a écrit :
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible CONNMARK et la correspondance connmark.

pourrais-tu m'éclaircir sur cette partie en me fournissant un exemple de
règle ? je trouve rien qui correspond vraiment après avoir testé
plusieurs règles trouvé et adapté ici et là ...
par exemple j'ai trouvé et adapté une règles comme ça:
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x3
iptables -t mangle -A ROUTING-POLICY -j CONNMARK --restore-mark
vu que ça ne correspond pas tout à fait à ce que tu indiques plus haut
et que le résultat n'est pas vraiment celui attendu je suppose que je
suis pas bon. Un peu d'aide afin de comprendre comment former ma règle
ne serait pas de refus.

La seconde règle ne doit marquer que les paquets à destination de
l'adresse distante. Il ne faut pas rerouter les paquets provenant de
cette adresse.

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
de ce que j'ai lu, il semble falloir plusieurs règles par destination
une pour marquer les paquets et une autre  pour restaurer, mais une aide
supplémentaire ne serait pas de refus parce que là j'arrive pas a grand
chose. beaucoup de tuto que j'ai trouvé sur internet ne souhaite que
faire de la répartition de charge et pas faire du routage avancé dans le
sens un host // une connexion. ou alors, quand je trouve ça ça utilise
encore -J MARK donc comme je fais jusqu'à présent.
merci encore pour l'assistance.
Jerem
Avatar
Daniel Huhardeaux
Le 16/04/2019 à 18:44, Jérémy Prego a écrit :
Le 16/04/2019 à 07:05, Pascal Hambourg a écrit :
Le 16/04/2019 à 03:48, Jérémy Prego a écrit :
Le 15/04/2019 à 20:18, Pascal Hambourg a écrit :
Si je comprends bien tu veux marquer seulement les paquets des
connexions sortantes. Une solution consiste à utiliser le marquage de
connexion avec la cible CONNMARK et la correspondance connmark.

pourrais-tu m'éclaircir sur cette partie en me fournissant un exemple de
règle ? je trouve rien qui correspond vraiment après avoir testé
plusieurs règles trouvé et adapté ici et là ...
par exemple j'ai trouvé et adapté une règles comme ça:
iptables -t mangle -A ROUTING-POLICY -d jeremy.domain.net -m conntrack
--ctstate NEW -j CONNMARK --set-mark 0x3
iptables -t mangle -A ROUTING-POLICY -j CONNMARK --restore-mark
vu que ça ne correspond pas tout à fait à ce que tu indiques plus haut
et que le résultat n'est pas vraiment celui attendu je suppose que je
suis pas bon. Un peu d'aide afin de comprendre comment former ma règle
ne serait pas de refus.

La seconde règle ne doit marquer que les paquets à destination de
l'adresse distante. Il ne faut pas rerouter les paquets provenant de
cette adresse.

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
de ce que j'ai lu, il semble falloir plusieurs règles par destination
une pour marquer les paquets et une autre  pour restaurer, mais une aide
supplémentaire ne serait pas de refus parce que là j'arrive pas a grand
chose. beaucoup de tuto que j'ai trouvé sur internet ne souhaite que
faire de la répartition de charge et pas faire du routage avancé dans le
sens un host // une connexion. ou alors, quand je trouve ça ça utilise
encore -J MARK donc comme je fais jusqu'à présent.
merci encore pour l'assistance.

Tu as bien
# marked packets go out through there route
ip rule add fwmark $markISP1 table isp1
ip rule add fwmark $markISP2 table isp2
?
--
Daniel Huhardeaux
+ sip:
+ tootaiNET
Avatar
Pascal Hambourg
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 ?
Qu'est-ce qui se passe exactement ?
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.
Jerem
1 2