[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: NAT avec plusieurs interfaces publiques



Le 21/12/2017 à 18:25, Olivier a écrit :
Bonjour,

Je prépare une installation dans laquelle un routeur (une machine sous
Debian Stretch) aura 3 interfaces logiques:
une interface eth0.30 vers un réseau local
une interface eth0.20 vers un lien Internet
une interface eth0.10 vers un autre lien Internet

Je souhaite répartir, en fonction de leur adresse IP, les utilisateurs du
réseau local vers les deux liens Internet.:
si l'adresse de l'utilisateur est  dans le sous-réseau 10.50.0.0/24, sortir
sur Internet en nattant avec l'interface eth0.10,
si l'adresse de l'utilisateur est  dans le sous-réseau 10.50.1.0/24, sortir
sur Internet en nattant avec l'interface eth0.20.

Comment configurer cela ?


J'ai un script iptables qui marque le trafic entrant avec une règle du type
iptables -t mangle -A PREROUTING -s 10.50.1.0/24 -j MARK --set-mark 2

Le marquage des paquets est inutile.

J'ai une autre règle qui j'espérais, devrait NATer, le trafic dont la
marque est spécifique:
iptables -t nat -A POSTROUTING -m mark --mark 2 -o eth0.20 -j SNAT
--to-source 2.2.2.2

A condition que les paquets en question sortent par l'interface spécifiée. Mais dans ce cas, inutile de se baser sur la marque, l'interface de sortie suffit. Pour rappel l'option -o introduit un critère de correspondance, pas une action.

Cette dernière règle ne semble pas exécutée pour un utilisateur dont
l'adresse est bien dans le réseau 10.50.1.0/24.
À la place, c'est la règle "par défaut" comme celle ci-après qui semble
exécutée:
iptables -t nat -A POSTROUTING -o eth0.10 -j SNAT --to-source 2.2.2.2

Parce que c'est par eth0.10 que les paquets sortent.

Il faut faire du routage avancé. Pas besoin de marque puisqu'on peut se baser sur l'adresse source.

ip rule add from 10.50.1.0/24 table 2
ip route add default via <adresse_passerelle> dev eth0.20 table 2
ip route add 10.50.0.0/23 dev eth0.30 table 2


Reply to: