Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

#1 01 Jul 2007 17:44:29

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

dual connect - 1 serv, deux connexions internet [résolu]

Hello!
je viens de recevoir am 2e ligne internet... j'ai joué un peu avec les configs de mes cartes réseaux (eth1, eth2) de manière à ce que le net marche sur les deux.
maintenant vient la partie qui m'est complètement inconnue : comment faire, par exemple, pour que les requêtes web du réseau local passent toutes par eth2 SI eth2 est UP, et que les requêtes faites _depuis_ certains ports du serveur passent par eth1 SI eth1 est UP (ou failover sur l'interface up, évidemment...)

en gros... 6667 -> eth1, 80->eth2, ..... etc

Je pensais passer par iptables, mais je suis en train de me dire que ça va vite être le bronxe pour gérer le coup du "if down, then...."

quelqu'un aurait un bout de tuto, explications ou autres ?
je suis sur gentoo 2007.0, si jamais.

merci d'avance.

Dernière modification par phoenix818 (03 Jul 2007 16:13:03)


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

#2 03 Jul 2007 10:01:09

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

bueno... après avoir tenté via iptables, j'ai vu que c'était pas très efficace (ou alors j'ai mal implémenté le truc..)
Quoi qu'il en soit, je me dirige vers une solution plus conventionnelle : iproute2 + MARK de iptables.

Voici mon script pour ip route :

Code:

#!/bin/bash
IP_DEV1=`/sbin/ifconfig eth1 | grep "inet addr:" | awk '{print $2}' | sed -e s/addr://`
NM_DEV1=`/sbin/ifconfig eth1 | grep "Mask:" | awk '{print $4}' | sed -e s/Mask://`
GW_DEV1="`echo  "$IP_DEV1" | cut  -d '.' -f 1,2,3`.1"

IP_DEV2=`/sbin/ifconfig eth2 | grep "inet addr:" | awk '{print $2}' | sed -e s/addr://`
NM_DEV2=`/sbin/ifconfig eth2 | grep "Mask:" | awk '{print $4}' | sed -e s/Mask://`
GW_DEV2="`echo  "$IP_DEV2" | cut  -d '.' -f 1,2,3`.1"


# remove old routes
echo 'flushing table "1" and "2"'
/sbin/ip route flush table 1
/sbin/ip route flush table 2

# flushing rules
echo 'flushing rules';
ip rule flush

echo "Creating table 1";
/sbin/ip route add $NM_DEV1 dev eth1 src $IP_DEV1 table downloads
/sbin/ip route add default via $GW_DEV1 table downloads

echo 'Creating table 2';
/sbin/ip route add $NM_DEV2 dev eth2 src $IP_DEV2 table others
/sbin/ip route add default via $GW_DEV2 table others

#echo 'Setting default gateway for other'
#/sbin/route add default gw $GW_DEV2 eth2

echo 'Adding rules';
/sbin/ip rule add fwmark 1 table downloads
/sbin/ip rule add fwmark 2 table others

à part exploser complètement le route... il fait pas des masses.
Il faut savoir que j'ai une ip dynamique dans le lot (sur eth1)... l'autre est "fixe" via le routeur bluewin.
Voici les 2-3 trucs iptables, au cas où :

Code:

echo 'Dual Connect -> MARK';
echo '  ->eth1';
${IPTABLES} -t mangle -A PREROUTING -p tcp --dport 6890:6999 -j MARK --set-mark 1
${IPTABLES} -t mangle -A PREROUTING -p udp --dport 6890:6999 -j MARK --set-mark 1
${IPTABLES} -t mangle -A PREROUTING -p udp --dport 80 -j MARK --set-mark 1
${IPTABLES} -t mangle -A PREROUTING -i eth0 -p tcp --dport 21 -j MARK --set-mark 1

echo '  ->eth2';
${IPTABLES} -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 2
${IPTABLES} -t mangle -A PREROUTING -i eth0 -p tcp --dport 6666:6668 -j MARK --set-mark 2
${IPTABLES} -t mangle -A PREROUTING -i eth0 -p udp --dport 25 -j MARK --set-mark 2

normalement, ca devrait marche (selon la doc que j'ai lue). Par contre, le soucis vient de mes tables de routage. J'ai ajouté dans /etc/iproute2/rt_table les deux tables "downloads" et "others".. il semblertait que ce soit au niveau du flush des règles ip que ça foire. Pourtant, je dois bien les virer, non?

si quelqu'un a une idée/solution...

Merci d'avance.

++


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

#3 03 Jul 2007 10:45:30

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

Salut,
  Si tes serveurs "écoutent" sur les deux interfaces, est-ce que tu as besoin de configurer un firewall?
A+.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#4 03 Jul 2007 11:09:29

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

mon réseau est ainsi :

Code:

              |-------[bluewin]---------|
[LAN]----[server]                         | internet
              |-------[cablecom]-------|

le serveur a un firewall, pour 2-3 raisons dont du port-knocking et autres trucs de ce genre.
lan->server pas de fw, server->internet pas de fw, par contre l'inverse si. un firewall normal en somme, qui n'influence pas les tables de routage, qui, je le rappelle, sont le problème principal que j'ai.

Dernière modification par phoenix818 (03 Jul 2007 11:10:26)


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

#5 03 Jul 2007 13:20:27

jean@adimp.ch
Illuminé(e)
Lieu: Marly
Date d'inscription: 10 Mar 2005
Messages: 1228
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

Salut,
  Je me suis mal exprimé. Pourquoi est-ce que tu tient à router ton trafic et pas simplement laisser les serveurs écouter aux deux "portes"? Pour apache, une rewriterule devrait suffire à rediriger vers la bonne IP.
A+.


--------------------------------------------------------
Jean Tinguely Awais
Ma vie sur twitter : http://www.twitter.com/tservi

Hors ligne

 

#6 03 Jul 2007 13:22:47

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

parce que je tiens à ce que _mon_ trafic sortant soit en loadbalancing; parce que je veux que mon trafic sortant soit séparé en fonction de règles que je veux définir.
j'ai deux connex... pourquoi ne pas profiter pour faire le trafic privé sur l'une, et le trafic pro sur l'autre ?
ça part un peu hs, là. je ne pense pas avoir besoin de justifier le fait que je veuille profiter de mes deux lignes comme je l'entends, si ? -.-'


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

#7 03 Jul 2007 15:18:33

BOFH
Admin
Lieu: Ecublens, VD
Date d'inscription: 03 Feb 2005
Messages: 862
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

Hello,

  On en a déja parlé, mais techniquement la seule solution propre c'est d'avoir ta propre plage d'adresses et d'avoir des peerings avec tes deux ISP. Pas quelque chose dans le budget d'un privé, donc.

  Le problème, c'est que vu de l'extérieur des deux lignes sont deux systèmes différents, et il faut donc faire attention à ce que le tout le trafic d'une connexion donnée passe par la même route.

  Si tu alloues a chaque machine dual-homed deux adresses IP, tu peux utiliser iproute2 pour faire du policy routing en filtrant sur les adresses source, et laisser le NAT faire son boulot comme il l'entend; ce qui t'évite la case netfilter.

  Après, ca résoud pas le problème du failover si une des deux lignes pète. Je te recommande de jeter un oeil à GNU Zebra. En installant juste zebra (sans les protocoles de routage), tu peux configurer plusieurs routes statiques dans un ordre donné, le démon contrôlera les interfaces et insérera dans le kernel les règles appropriées a l'état du réseau.

Hors ligne

 

#8 03 Jul 2007 15:23:51

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

-.- je veux juste que les packets marqués "1" utilisent la table 1, et les packets marqués "2" la table 2... pour le coup de la ligne qui pète, j'ai de quoi réfléchir un peu, c'est pas bien dur, une fois que je saurai pourquoi mes table de routage plantent...


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

#9 03 Jul 2007 16:12:22

Tengu
Gourou(e) du libre
Lieu: La Tour-de-Peilz
Date d'inscription: 17 Nov 2004
Messages: 493
Site web

Re: dual connect - 1 serv, deux connexions internet [résolu]

bueno. je peux clore le sujet.
j'ai trouvé :->

voici le nouveau script dualconnect :

Code:

#!/bin/bash
IP_DEV1=`/sbin/ifconfig eth1 | grep "inet addr:" | awk '{print $2}' | sed -e s/addr://`
NM_DEV1=`/sbin/ifconfig eth1 | grep "Mask:" | awk '{print $4}' | sed -e s/Mask://`
GW_DEV1="`echo  "$IP_DEV1" | cut  -d '.' -f 1,2,3`.1"

IP_DEV2=`/sbin/ifconfig eth2 | grep "inet addr:" | awk '{print $2}' | sed -e s/addr://`
NM_DEV2=`/sbin/ifconfig eth2 | grep "Mask:" | awk '{print $4}' | sed -e s/Mask://`
GW_DEV2="`echo  "$IP_DEV2" | cut  -d '.' -f 1,2,3`.1"

# remove old routes
echo 'flushing table "others"...'
/sbin/ip route flush table others

# creating standard route
echo 'Setting default gateway for other...'
/sbin/route add default gw $GW_DEV2 eth2


# flushing rules
echo 'flushing rules...';
ip rule flush

# creating basic rules
# 32766:  from all lookup main
# 32767:  from all lookup default
echo 'Creating basic route rules...';
/sbin/ip rule add from all table main
/sbin/ip rule add from all table default

# special route table
echo 'Creating table others...';
/sbin/ip route add $NM_DEV1 dev eth1 src $IP_DEV1 table others
/sbin/ip route add default via $GW_DEV2 table others

# special rules
echo 'Adding rules...';
/sbin/ip rule add fwmark 2 table others

Explications sur le bug que j'avais :
lors du flush des rules existantes, je virais aussi celles de base. Et évidemment, si on les remet pas, ça marche plus.
J'ai vu ça en comparant les rules avant/après le lancement de mon script.

A présent, j'ai bien les deux connexions employées (je passe présentement par mon eth2, alors que irc passe par eth1).

les règles de firewall sont correctes (j'ai, comme vous pouvez le voir, viré l'appel à la 2e table. autant employer celle par défaut, et ajouter uniquement la spécial [merci BOFH pour cette remarque!] )

bref. sujet clos. maintenant, j'ai à peu près pigé le truc :-> et suis capable de le refaire. yipiiiie !!


Science sans conscience n'est que ruine de l'âme

https://twitter.com/swisstengu (compte twitter)
https://blog.tengu.ch/ (un blog parmis tant d'autres)

Hors ligne

 

Pied de page des forums

Powered by FluxBB