cerhu > linux.debian.user.french

Jérémy Prego (15/04/2019, 01h00)
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
daniel huhardeaux (15/04/2019, 09h30)
Le 15/04/2019 à 00:43, Jérémy Prego a écrit :
[..]
> 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
Jérémy Prego (15/04/2019, 11h30)
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
Pascal Hambourg (15/04/2019, 20h20)
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
Jérémy Prego (15/04/2019, 20h40)
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.
> -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
Jérémy Prego (16/04/2019, 03h50)
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
Pascal Hambourg (16/04/2019, 07h10)
Le 16/04/2019 à 03:48, Jérémy Prego a écrit :
[..]
> 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érémy Prego (16/04/2019, 18h50)
Le 16/04/2019 à 07:05, Pascal Hambourg a écrit :
> Le 16/04/2019 à 03:48, Jérémy Prego a écrit :
> 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
Daniel Huhardeaux (16/04/2019, 20h00)
Le 16/04/2019 à 18:44, Jérémy Prego a écrit :
[..]
> 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

?
Pascal Hambourg (17/04/2019, 07h30)
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 ?
Jérémy Prego (17/04/2019, 08h00)
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
Jérémy Prego (17/04/2019, 18h20)
Le 17/04/2019 à 07:27, Pascal Hambourg a écrit :
> oui
> ç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 ?
Pascal Hambourg (17/04/2019, 22h00)
Le 17/04/2019 à 18:14, Jérémy Prego a écrit :
> Le 17/04/2019 à 07:27, 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 ? 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.
Jérémy Prego (17/04/2019, 22h10)
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
Pascal Hambourg (17/04/2019, 23h50)
Le 17/04/2019 à 22:07, Jérémy Prego a écrit :
> Le 17/04/2019 à 21:51, Pascal Hambourg a écrit :
> oui, quelques uns.
> 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

Discussions similaires
HS iptables et set mark pour séparer le trafic par interface

entrée wifi, sortie lan

filtrage Iptables de l'interface loopback

paramètrer iptables via une interface graphique


Fuseau horaire GMT +2. Il est actuellement 16h55. | Privacy Policy