PDA

Voir la version complète : Question routage reseau



fastm3
10/02/2011, 16h49
Je fais appel aux experts reseaux.

J'explique le contexte. La question n'est pas de savoir comment faire du dual wan mais une question qui m'est venu apres en avoir deployé plusieurs.
Scenario:
On peut mettre en place une config dual wan sans faire appel a un routeur dual wan avec lequel tout serait plus simple.
Je ne veux pas faire de load balancing mais juste pouvoir reserver un lien a une ou un groupe de machine, le routeur dual wan ne se justifie pas vraiment.
Soit donc un reseau local subnet avec 2 routeurs dessus. Je prends l'exemple 192.168.0.0/24
Le routeur 1 est a l'adresse 192.168.0.1 . Le routeur 2 est a l'adresse 192.168.0.2. L'adresse externe wan du routeur 1 est ipext1, le router 2 ipext2.
Un serveur interne a pour adresse interne 192.168.0.3.
Soit un poste externe a l'adresse x.x.x.x

Par defaut, on utilise la gateway1, soit 192.168.0.1. On peut donc facilement demander a un serveur specifique de changer sa gateway
Un petit "route add default gw 192.168.0.2" sur le serveur et ca roule. On peut dedier donc facilement un lien a un serveur donné et meme faire du faiover mais on deborde alors du sujet.
Aucun probleme jusque la. L'idee est de pouvoir acceder en remote a ce serveur en ssh. Si x.x.x.x se connecte en ssh en specifiant l'ip externe du routeur 2, pas de probleme et tout marche aussi.
Bien sur le port forwarding sur le routeur 2 est configuré.
Bref, tout marche jusque la.

Sauf que j'aimerai aussi pourvoir acceder au routeur de l'ip ext1 et la ca ne marche plus. Je rentre par ipext1 et je sors par ipext2, ca semble etre le soucis.
Si je rajoute un "route add x.x.x.x gw 192.168.0.1" , je corrige et ca marche mais a l'inverse, je ne peux plus acceder alors en remote par ipext2
Donc je peux acceder au serveur de l'ip externe 1 ou 2 mais pas les 2 en meme temps.

Bref juste pour satisfaire ma curiosité, quelle serait la solution pour permettre un acces en remote des 2 ipexternes en meme temps avec cette archi en agissant uniquement sur le routage au niveau du serveur.
Je vois 2 solutions: Ajout d'une 2 eme interface virtuelle ? ip rule ?

Je vois comment faire a peu pres en ajoutant une interface mais tous les services devront ecouter sur cette deuxieme interface. Ca veut dire changement de config potentiel, changement des regles de port forwarding sur un des routeurs plus bien sur les routes additionnelles.
J'aimerai eviter sachant que la solution actuelle fonctionne bien si ce n'est cet acces remote ( qui n'est en plus pas critique ). Je fais peut etre fausse route :D donc plutot que de tatonner et comme je n'ai pas sous la main la possibilité de faire des tests, j'aimerai bien l'avis/solution d'autres personnes.

Merci.
Fastm3.

quintana
10/02/2011, 18h56
Salut,

Utilises iproute, faut faire du source routing pour donner ta gateway qui va bien sur ton ip2. C'est normal que cela ne fonctionne pas par défaut.

A+

fastm3
10/02/2011, 19h58
Je comprends pourquoi ca ne marche pas ou plutot pourquoi le fonctionnement actuel ne me permet pas d'acceder au reseau interne par l'autre ip.
Par contre, je ne vois pas comment faire du source routing puisque je voudrais que quand j'accede par l'ip externe1, j'ai une route vers la gateway1 et quand j'accede par l'ipexterne2, j'ai une route vers la gateway 2. C'est dans le cas de connections entrantes a partir de 2 wans et non sortantes et je veux que les paquets resortent par la meme gateway d'ou ils sont venu..

J'ai essayé de faire quelque chose comme ca:


ip route add default via 192.168.0.1 dev eth0 table fai1
ip route add default via 192.168.0.2 dev eth0 table fai2Et je voudrais effectivement utiliser la table fai1 ou fai2 en fonction de ou la connection entrante est venu.
Le pb, c'est comme j'ai une seule interface sur le serveur (192.168.0.3) , je fais comment pour mon "ip rule" ? Je vois pas...:gratgrat:

Fastm3.

quintana
11/02/2011, 00h02
comment ça tu as qu'une simple interface ? Si c'est le cas tu ne pourras pas faire grand chose ou j'ai pas compris ta remarque ou lu en travers ton architecture ;)
Si c'est comme je pense comprendre vu ta remarque, à mon avis oublies ;). Ou mets ton linux en tant que routeur avec les interfaces qui vont bien. Éventuellement tu peux aussi taggué tes paquets si tu peux et réutiliser cela. Bref construire une voiture quatre roues avec deux pneus c'est pas possible ;).

fastm3
11/02/2011, 00h14
Bon effectivement avec 1 seule interface, j'y arrive pas. Il faut creer une autre interface, je m'en sers juste pour ca. Je poste la solution que j'ai trouvé meme si ce n'est pas forcement la meilleure.

Solution:

ifconfig eth0:0 192.168.0.4 netmask 255.255.255.0
ip route add default via 192.168.0.1 dev eth0 table fai1
ip route add default via 192.168.0.2 dev eth0 table fai2
ip rule add from 192.168.0.4 lookup fai1 prio 1000
ip rule add from 192.168.0.3 lookup fai2 prio 1000On forwarde un port du routeur 1 sur le port ssh de la nouvelle interface (192.168.0.4). J'ai pris le risque de faire ca en remote...Je suis joueur...Mais ca marche alors comme prevu. On peut acceder en remote des 2 ips externes alors.

C'est sur , c'est du bricolage mais ca evite l'achat d'un routeur dual wan dans mon cas ou comme tu le suggeres de mettre le serveur en routeur en frontal des 2 wans.
Merci.
Desolé d'avoir utilisé le forum pour reflechir en parlant. ;)
Fastm3.

Persee
11/02/2011, 18h39
Une autre solution est le NAT:

tu rediriges sur le routeur 1 et 2 les port que tu veux sur ton serveur et tu active le NAT des IP externes.

Exemple:

X.X.X.X veut accéder: il rentre sur ton interface WAN du ton routeur 1, l'adresse est NATé en 192.168.0.1, ton serveur va voir l'adresse 192.168.0.1 et pas l'adresse X.X.X.X.
Donc, pour repondre, il regarde sa table de routage, voit la route implicite du reseau (192.168.0.0/24) et renvoit a ton routeur 1. Routeur 1 NAT et retransforme l'adresse en X.X.X.X.

meme chose avec ton routeur 2.

Tout ce que ton serveur vera, se sont des adresse de ton reseau et il repondra directement. A la limite tu n'as meme besoin de default route si ton serveur n'initialise jamais de connection vers l'exterieure :)

fastm3
11/02/2011, 19h11
Une autre solution est le NAT:

tu rediriges sur le routeur 1 et 2 les port que tu veux sur ton serveur et tu active le NAT des IP externes.

Exemple:

X.X.X.X veut accéder: il rentre sur ton interface WAN du ton routeur 1, l'adresse est NATé en 192.168.0.1, ton serveur va voir l'adresse 192.168.0.1 et pas l'adresse X.X.X.X.
Donc, pour repondre, il regarde sa table de routage, voit la route implicite du reseau (192.168.0.0/24) et renvoit a ton routeur 1. Routeur 1 NAT et retransforme l'adresse en X.X.X.X.

meme chose avec ton routeur 2.

Tout ce que ton serveur vera, se sont des adresse de ton reseau et il repondra directement. A la limite tu n'as meme besoin de default route si ton serveur n'initialise jamais de connection vers l'exterieure :)

Je comprends pas comment ca peut marcher.
Les routeurs 1 et 2 sont de simples box en mode routeur et donc bien sur le nat est activé et 1 port forwardé vers le serveur sur les 2 boxs pour ssh ou vpn par exemple comme service.
Donc, je ne vois pas vraiment ce que tu veux activer dessus en plus. Une sorte de double nat en interne ? A quel type de routeur penses tu ?
En plus, les headers SIP seraient reecrits aussi a la volée puisque tu indiques que le serveur ne voit pas l'ip externe ? Non , je vois vraiment pas comment ca pourrait marcher.
Un lien pour expliquer ?
De toutes facons, a supposer que cela soit possible, ca doit necessiter un routeur de la mort et pas une simple box donc ici 2 routeurs, donc aucun interet economique par rapport a un dual wan, non ?
Merci pour l'aide quand meme. ;)
Fastm3.

jean
16/02/2011, 14h55
Solution:

ifconfig eth0:0 192.168.0.4 netmask 255.255.255.0
ip route add default via 192.168.0.1 dev eth0 table fai1
ip route add default via 192.168.0.2 dev eth0 table fai2
ip rule add from 192.168.0.4 lookup fai1 prio 1000
ip rule add from 192.168.0.3 lookup fai2 prio 1000


salut
j'ai deux accès de FAI sur mon système. Lorsque je fais des cxions entrantes (ssh) via etH0 (celle dont la gw est définie par défaut dans ip route), tout va bien. mais qd je me connecte via eth1, rien... je souhaite juste pouvoir 'entrer' sur la machine par n'importe laquelle des deux interfaces.

je connais peu ip route / rule, je suis donc intéressé par ton post... faut il créer les objets fai1 et fai2 ? ou juste les 4 dernières lignes ?

(la machine cible est une machine de prod distante, donc je veux pas la planter....)

J.

fastm3
16/02/2011, 16h06
Fai1 et 2 a créer dans /etc/iproute2/rt_tables
Fait aussi a distance sur machine de prod...
En direct des pistes...donc rep courte
Fastm3

jean
17/02/2011, 16h27
T'es un King !!!!

Ca fait juste 3 mois que je cherche à faire ca.... j'ai regardé pas mal de posts sur google, planté deux fois mon serveur....

Merci... que les dieux de la neige soient avec toi !!!

fastm3
17/02/2011, 16h51
T'es un King !!!!

Pas sur la neige...mais content pour toi
A+
fastm3

ffossard
17/02/2011, 20h59
Je vais tester ça aussi, par manque de temps je n'avais jamais trop cherché pourquoi mes serveurs ne répondaient que sur un seul wan quand routeur double-wan, je pensais bien à un problème de route de réponse mais bon :sleep:
Merci !
Petit coucou aussi des pistes près de Munich :hello:

jean
07/05/2013, 16h07
salut !

je suis toujours sur mon idée d'avoir deux liens WAN pour faire du load balancing et du backup (http://www.asterisk-france.org/showthread.php/2178-double-interface-réseau-dual-nic)

j'en suis arrivé à la conclusion que la logique d'asterisk est pas ultra développée: il sait soit envoyer sur une @ lan, soit externe, mais pas capable de répondre vers 2 wan différents.

l'astuce présentée dans ce thread me permet de faire du ssh & co sur les deux liens wan (on va les appeler wan0 et wan1), et de la voip sur un des deux. mais pas de voip sur les deux. un register qui arrive par eth1/wan1 repart toujours par eth0/wan0 :-(

j'en suis donc à me dire: je vais spécialiser en fonction du client -ie le client X dialogue via eth1/wan1, et les autres via eth0/wan0, en mettant les @en dur dans les tables de routage

j'ai rajouté dans chacune des tables (fai1 et fai2 dans l'exemple)

ip route add <ip de X> via <passerelle wan1> dev eth1 table fai1
et
ip route add <ip de X> via <passerelle wan1> dev eth1 table fai2

j'ai donc:
table fai1
<ip de X> via <passerelle wan1> dev eth1 table fai1
default <passerelle wan0> dev eth0

<ip de X> via <passerelle wan1> dev eth1 table fai1
default <passerelle wan1> dev eth1

et ben... ca marche pô :-( les paquets envoyés vers X par asterisk passent par eth0 !

j'ai flushé le cache, pas mieux, et je vois même apparaitre X via passerelle wan0 dev eth0 lorsque je regarde le cache


Des idées ? j'aimerai vraiement avoir asteirsk en dual wan !!

J.

fastm3
07/05/2013, 17h07
Si tu as le ssh qui fonctionne à partir des 2 wans, tu as fait le plus dur.
Pour dire à asterisk quel lien utiliser , pas besoin de regle supplementaire,
Tu settes juste en static la gateway par defaut dans la config reseau du serveur accueillant asterisk à supposer que les 2 gateways sont sur le meme lan.

Apres, tu peux scripter le swap de gateway, contacte moi si tu veux un exemple. Tu peux soit le lancer manuellement en cas de defaillance du wan voip, soit par cron mais ca peut etre ennuyeux en cas de pb de stabililité de la ligne.
Mais bon si ton ssh fonctionne de la connection backup, il est aussi rapide de faire ca a la main. ( il ne faut pas se tromper certes )

Fastm3.

jean
07/05/2013, 19h49
c'est pas exactement ce que je veux faire. je veux avoir mes deux liens wans actifs, et que des clients puissent s'enregistrer sur l'un ou l'autre (et communiquer après bien sur).

la config actuelle (que tu m'as donné dans ce post, et je t'en suis toujours gré !) avec regles et routage fonctionne parfaitement pour ssh, http &co: quelle que soit l'interface par laquelle je rentre, je ressors par la même - je pense que le mode session tcp n'y est pas étranger.

en sip, quand un client envoie un register sur l'@ WAN1, asterisk répond sur WAN0 - je le vois avec NGREP

d'ou mon idée de dire - oublions le dynamique comme le ssh - certains clients utilisent toujours WAN1, et les autres (défaut) WAN0. donc, je rentre dans les tables de routages IPClient et Passerelle WAN1/dev ETH1, mais ca marche pas

Si tu veux, on peut faire une conversation skype/tel qd tu veux (du moins, restant de la semaine assez mort... je serais sur le forum le soir probablement) - mais j'aime bien partager au travers du forum

J.

fastm3
08/05/2013, 11h15
Je crois comprendre mais pas possible de faire ce que tu veux ( a ma connaissance ) avec asterisk.
( pouvoir enregistrer des clients simultanément de 2 wan distincts pour un asterisk derriere un nat ). N'oublie pas que l'ip externe se trouve dans le paquet sip meme si tu routes le paquet par une autre ip que celle specifiée dans celui-ci.
Un proxy sip pourrait probablement mieux se débrouiller mais je ne me suis pas penché sur la question. Regardes du coté d'opensips mais je trouve que ca devient un peu trop complexe pour une petite install.

Ce que tu peux faire, c'est dedier un wan par defaut, passer sur le deuxieme en cas de pb automatiquement par script au niveau de ton serveur asterisk.
Et au niveau de tes clients avoir configuré en principal le 1er wan et un backup sur le 2eme pour l'enregistrement, ce que savent faire la plupart des tels.
Tu peux jouer aussi avec le dns mais tu auras une latence plus importance.
Donc c'est du failover mais ca n'est pas exactement ce que tu veux ( fonctionner avec les 2 en meme temps )

Je crois savoir qu'il y a quelques utilisateurs d'opensips ici...Peut etre se manifesteront ils ?
Fastm3.

olppp
08/05/2013, 13h32
peut-être une piste
http://www.iptel.org/sipalg

mes tests avec ip conntrack sip remontent à pas mal de temps ; ça n'était pas très stable à l'époque