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

Routage entre 2 FAI [iptables]

3 réponses
Avatar
Richard Baret
Bonjour =E0 tous
Voici ma config actuelle :=20
je poss=E8de actuellement 2 acc=E8s internet, le premier est une offre fibr=
e =E0 d=E9bit sym=E9trique de chez Orange, le second est un acc=E8s ADSL OV=
H. Ces 2 acc=E8s viennent chacun avec leur box respective.
Physiquement ca donne =E7a :

[fixed]
192.168.0.1 192.1=
68.0.253 192.168.3.1
---- ip dynamique ----|Livebox|---------------------------------=
-------- -----------------Serveur=
HTTP
/ =
\ 192.168.3.253 /
INTERNET =
Passerelle Debian---------------------=20
\ =
/ \
----- 178.x.x.x -------|Modem OVH|-------------------------------=
-------- -----------------Serveur=
DNS
192.168.1.254 192.1=
68.1.253 192.168.3.2
[/fixed]

La probl=E9matique est la suivante :
[*] L'acc=E8s ADSL ne sert qu'=E0 r=E9soudre les requ=EAtes DNS (et les tra=
nsferts de zone) qui lui parviennent et le serveur DNS doit r=E9pondre via =
la passerelle OVH
[*] L'acc=E8s fibre sert =E0 tout le reste du trafic entrant et sortant
[*] La passerelle Debian a iptables d'install=E9 et de configur=E9 pour tou=
t ce qui est port forwarding mais pas pour le load balancing entre les 2 li=
gnes ADSL (tout le trafic sortant veut absolument sortir par la route par d=
=E9faut qui se trouve en premier dans la table de routage de la machine d'o=
=F9 probl=E8me pour les retours vers le net =E0 des connexions entrantes)

Pourriez-vous m'aider =E0 configurer la ou les tables de routage de ma mach=
ine pour que seul le trafic DNS passe par la ligne ADSL (requ=EAtes entrant=
es, r=E9ponse aux requ=EAtes entrantes et au pire requ=EAtes DNS sortantes =
pour les forwarders de mon serveur DNS) et pour que tout ce qui est trafic =
entrant sur la ligne fibre (donc =E0 destination du serveur HTTP/FTP etc) r=
essorte par cette m=EAme ligne fibre...

J'ai trouv=E9 un tuto qu'a pas l'air trop mal, mais qui marche avec des ip =
publiques (machine passerelle attaqu=E9e en direct par le FAI) et je pense =
que le SNAT va pas marcher comme indiqu=E9, si =E7a peut vous aider :
http://linux-ip.net/html/adv-multi-internet.html

3 réponses

Avatar
Erwan David
Richard Baret écrivait :

Bonjour à tous
Voici ma config actuelle :
je possède actuellement 2 accès internet, le premier est une offre fibre à débit symétrique de chez Orange, le second est un accès ADSL OVH. Ces 2 accès viennent chacun avec leur box respective.
Physiquement ca donne ça :

[fixed]
192.168.0.1 192.168.0.253 192.168.3.1
---- ip dynamique ----|Livebox|----------------------------------------- -----------------Serveur HTTP
/ 192.168.3.253 /
INTERNET Passerelle Debian---------------------
/
----- 178.x.x.x -------|Modem OVH|--------------------------------------- -----------------Serveur DNS
192.168.1.254 192.168.1.253 192.168.3.2
[/fixed]

La problématique est la suivante :
[*] L'accès ADSL ne sert qu'à résoudre les requêtes DNS (et les transferts de zone) qui lui parviennent et le serveur DNS doit répondre via la passerelle OVH
[*] L'accès fibre sert à tout le reste du trafic entrant et sortant
[*] La passerelle Debian a iptables d'installé et de configuré pour tout ce qui est port forwarding mais pas pour le load balancing entre les 2 lignes ADSL (tout le trafic sortant veut absolument sortir par la route par défaut qui se trouve en premier dans la table de routage de la machine d'où problème pour les retours vers le net à des connexions entrantes)

Pourriez-vous m'aider à configurer la ou les tables de routage de ma machine pour que seul le trafic DNS passe par la ligne ADSL (requêtes entrantes, réponse aux requêtes entrantes et au pire requêtes DNS sortantes pour les forwarders de mon serveur DNS) et pour que tout ce qui est trafic entrant sur la ligne fibre (donc à destination du serveur HTTP/FTP etc) ressorte par cette même ligne fibre...

J'ai trouvé un tuto qu'a pas l'air trop mal, mais qui marche avec des ip publiques (machine passerelle attaquée en direct par le FAI) et je pense que le SNAT va pas marcher comme indiqué, si ça peut vous aider :
http://linux-ip.net/html/adv-multi-internet.html



Si tu ne tiens pas à rester sous debian et à tout faire à la main,
regarde du côté de pfsense (www.pfsense.org), une distrib spécialisée
basée sur FreeBSD où tu fais ça les doigts dans le nez...



--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Pascal Hambourg
Salut,

Richard Baret a écrit :
192.168.0.1 192.168.0.253 192.168.3.1
---- ip dynamique ----|Livebox|----------------------------------------- -----------------Serveur HTTP
/ 192.168.3.253 /
INTERNET Passerelle Debian---------------------
/
----- 178.x.x.x -------|Modem OVH|--------------------------------------- -----------------Serveur DNS
192.168.1.254 192.168.1.253 192.168.3.2
[/fixed]



Pas facile à lire à cause des lignes beaucoup trop longues qui sont
coupées. Ce problème de longueur de lignes concerne d'ailleurs
l'ensemble du message.

Pourriez-vous m'aider à configurer la ou les tables de routage de ma
machine pour que seul le trafic DNS passe par la ligne ADSL (requêtes
entrantes, réponse aux requêtes entrantes et au pire requêtes DNS
sortantes pour les forwarders de mon serveur DNS) et pour que tout ce
qui est trafic entrant sur la ligne fibre (donc à destination du serveur
HTTP/FTP etc) ressorte par cette même ligne fibre...



Ce qui suit suppose que la route par défaut est par la livebox.
D'abord, on va remplir une table de routage alternative avec une route
par défaut par OVH. Le numéro de table est choisi arbitrairement.

# sous-réseau de la livebox
ip route add 192.168.0.0/24 dev $if_livebox table 99
# sous-réseau du modem OVH
ip route add 192.168.1.0/24 dev $if_ovh table 99
# sous-réseau local
ip route add 192.168.3.0/24 dev $if_lan table 99
# route par défaut
ip route add 192.168.0.0/24 dev $if_ovh via 192.168.1.254 table 99

Cette table est identique à la table principale à l'exception de la
route par défaut.

Ensuite, on va créer des règles de routages pour les situations où les
paquets doivent être routés selon la table de routage alternative.

# paquets dont l'adresse source est celle de l'interface connectée au
# modem OVH
ip rule add from 192.168.1.253 lookup 99
# paquets marqués par iptables
ip rule add fwmark 0x1 lookup 99

Enfin, on va créer les règles iptables pour marquer les paquets qui
doivent être routés selon la table de routage alternative.

# paquets de requête DNS du serveur DNS reçus par l'interface LAN
# on peut être moins restrictif en supprimant le critère adresse source
iptables -t mangle -A PREROUTING -i $if_lan -s 192.168.3.2
-p udp --dport 53 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $if_lan -s 192.168.3.2
-p tcp --dport 53 -j MARK --set-mark 0x1
# paquets de réponse à une connexion reçue par OVH
iptables -A PREROUTING -i $if_ovh -j CONNMARK --set-mark 0x1
iptables -t mangle -A PREROUTING -i $if_lan -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark

Bien sûr il ne faut pas oublier les règles de NAT source afin que les
paquets sortent vers les modems avec la bonne adresse source.

iptables -t nat -A POSTROUTING -o $if_livebox -j SNAT --to 192.168.0.253
iptables -t nat -A POSTROUTING -o $if_ovh -j SNAT --to 192.168.1.253

J'ai trouvé un tuto qu'a pas l'air trop mal, mais qui marche avec des
ip publiques (machine passerelle attaquée en direct par le FAI) et je
pense que le SNAT va pas marcher comme indiqué, si ça peut vous aider :
http://linux-ip.net/html/adv-multi-internet.html



Une fois les principes assimilés, cela devrait pouvoir être adapté à
chaque situation particulière sans trop de difficulté.
Avatar
Pascal Hambourg
Pascal Hambourg a écrit :

iptables -A PREROUTING -i $if_ovh -j CONNMARK --set-mark 0x1



J'ai oublié -t mangle.

Aussi, il peut être nécessaire de désactiver rp_filter sur l'interface
qui n'a pas la route par défaut.

sysctl -w net.ipv4.conf.$if_ovh.rp_filter=0

Avec un noyau récent il faut aussi
sysctl -w net.ipv4.conf.all.rp_filter=0

car la combinaison entre les deux a été modifié de ET logique à MAX.