Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Rozdzielenie userów na dwa łącza na jednym serwerze [2xwan]
http://forum.freesco.pl/viewtopic.php?f=22&t=11533
Strona 1 z 2

Autor:  Albercik [ poniedziałek, 6 marca 2006, 16:06 ]
Tytuł:  Rozdzielenie userów na dwa łącza na jednym serwerze [2xwan]

Czasami nie wszyscy posiadając dwa łącza chcą mieć load balancing , często zależy im na dwóch bramach i rozdzieleniem użytkowników na dwie bramy . Mam tutaj taki skrypcik , posklejany z kilku i uporządkowany , który potrafi skierować useró zależnie od IP na dwie różne bramy . Nie wklepałem jeszcze natowania , ale trzeba to zrobić jako nat źródłowy , taki jak przy lb .
: [/] [] ()

#!/bin/bash
echo "Konfiguruje routing..."

/sbin/ifconfig eth0 192.168.1.6 netmask 255.255.255.0 up //łącze pierwsze
/sbin/ifconfig eth2 192.168.2.6 netmask 255.255.255.0 up //łącze drugie
/sbin/ifconfig eth1 192.168.0.1 netmask 255.255.255.0 up //sieć lan

#set -x
IF0="eth1"
IF1="eth0"
IF2="eth2"
IP1="192.168.1.6"
IP2="192.168.2.6"
P1="192.168.1.1"
P2="192.168.2.1"
P0_NET="192.168.0.0"
P1_NET="192.168.1.0"
P2_NET="192.168.2.0"


# 2 trasy do dwoch bram
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

#pakiety z sieci danego łącza wysylamy na jego bramkę
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

#trasa domyslna - do wyboru
#ip route add default via $P1
ip route add default via $P2

#konfiguracja tablic routingu
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

#dodatkowe wpisy dla LAN

ip route add $P0_NET     dev $IF0 table T1
ip route add $P2_NET     dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo   table T1
ip route add $P0_NET     dev $IF0 table T2
ip route add $P1_NET     dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo   table T2

# dodajemy userow do tablicy

NR=5;
while [ $NR -le 254 ]; do
ip rule add from 192.168.1.$NR table T1 ;
ip rule add from 192.168.2.$NR table T2 ;
ip rule add from 82.160.201.$NR table T1;
NR=$[ NR + 1 ]
done

#wymuszenie natychmiastowego wyczyszczenia cache
ip route flush cache


Autor:  Albercik [ sobota, 11 marca 2006, 15:29 ]
Tytuł: 

W jaki sposób kolejkujecie na serwerach z dwoma łączami ?

Autor:  tasiorek [ sobota, 11 marca 2006, 15:40 ]
Tytuł: 

Download sumarycznie w jednej kolejce, a upload w osobnej kolejce z osobnymi markami iptables.

Autor:  Albercik [ sobota, 11 marca 2006, 15:42 ]
Tytuł: 

tasiorek pisze:
Download sumarycznie w jednej kolejce, a upload w osobnej kolejce z osobnymi markami iptables.


Masz jakieś przykłady ? Ja coś kombinuję z przekompilowaniem niceshapera , tak aby obsługiwał dwa łącza - dwa niezależne niceshapery ..... sam jestem ciekawy efektu :wink:

Autor:  tasiorek [ sobota, 11 marca 2006, 15:50 ]
Tytuł: 

http://forum.freesco.pl/viewtopic.php?t=11195
Z tym, ze teraz przenosze na 2 lacze po markach iptables, wiec w regulach przycinania 2 lacza musialem dac te, ktore przenosza na 2 lacze.
Jeli juz kombinujesz z przekompilowaniem niceshapera, to nie rob tak zeby dzialaly 2 osobne, tylko dodaj 3 kolejke na upload 2 lacza. Jak nie chcesz traktowac downloadu po macoszemu, to zaloz 4 kolejki. Download, jesli do lan masz jedna sieciowke bedziesz musial przycinac na imq.
Nie ma sensu uruchamiac dwoch niceshaperow na raz.

Autor:  Albercik [ niedziela, 12 marca 2006, 03:19 ]
Tytuł: 

Nie trzeba już kombinować - jest niceshaper 0.6 na którym da się kilka łącz odpalić na jednym serwerze . Nie wiadomo tylko jak działa :wink:

Autor:  Albercik [ poniedziałek, 27 marca 2006, 21:50 ]
Tytuł: 

w tej konfiguracji nie mogę pingować interfejsów zewnętrznych , nie mogę też wejśc na www po ip zewnętrznym. Dziwny objaw. Zna ktoś na to receptę ?

Autor:  tasiorek [ poniedziałek, 27 marca 2006, 22:04 ]
Tytuł: 

Hmm moze dlatego, ze wpisales adresy sieci bez masek $P0_NET $P1_NET i $P2_NET powinny wygladac np. tak: 192.168.0.0/24
Popatrz jak masz dodany loopback.

Autor:  Albercik [ wtorek, 28 marca 2006, 11:17 ]
Tytuł: 

tasiorek pisze:
Hmm moze dlatego, ze wpisales adresy sieci bez masek $P0_NET $P1_NET i $P2_NET powinny wygladac np. tak: 192.168.0.0/24
Popatrz jak masz dodany loopback.


Wyglada na to ,że trafiłeś w problem , jeszcze posprawdzam .

Autor:  Albercik [ środa, 29 marca 2006, 12:29 ]
Tytuł: 

Nie, to nie to jednak , poza tym nie mogę odpalić htb Zciechowego - kolejki się tworzą , ale nie lecą przez nie pakiety . Kiedy odpalam tylko jedno łącze tradycyjnie - htb pracuje , odpalę skrypt - htb przestaje pracować . Czy ma to związek ze snatem lub czymkolwiek innym ?

Autor:  -MW- [ środa, 12 marca 2008, 14:40 ]
Tytuł: 

no i jak sie skonczyl ten temat?

Autor:  Konar [ piątek, 4 lipca 2008, 01:43 ]
Tytuł: 

Witam!

Przepraszam, ze stary temat odświeżam, ale mam bardzo podobna sytuacje i za cholere nie daje rady...

Pierwsze łącze na ppp0 (pppoe - ip przyznawany dynamicznie)
Drugie łącze na eth2 (dhcp - ip przyznawany dynamicznie)
eth1 - LAN.

Nie interesuje mnie LB. Łącze z ppp0 jest domyslne, w ip route jest np
: [/] [] ()
78.8.135.1 dev ppp0  proto kernel  scope link  src 78.8.135.167
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
127.0.0.0/8 dev lo  scope link
default dev ppp0  scope link

i działa to ok...do czasu kiedy podniose interface eth2. Wtedy sie brama domyslna nadpisuje i nie ma netu w sieci...ale jakos do tego doszedlem i recznie ustawiam w ip route brame domyslna na tą z ppp0.

Oba łącza działają, tylko teraz chcę przerzucić część userów na łącze z eth2... w iptables.rules pozmienialem (chyba) wszelkie potrzebne wpisy, restartuje iptables i... nic... nie ma netu na tych kompach, ktore powinny być na łączu z eth2. Zgaduje, ze to pewnie cos z ip route...?

Czy te kompy na drugie łącze muszą byc w oddzielnej podsieci? Proszę o pomoc... Chciałem wykorzystać ten skrypt z pierwszego postu, ale poległem na kwestii takiej, ze nie mam stałych adresów bramy, ip, etc... :(

Pozdrawiam

Autor:  Albercik [ poniedziałek, 29 września 2008, 13:36 ]
Tytuł: 

Małe zmiany w skrypcie:
: [/] [] ()
#!/bin/bash
echo "Konfiguruje routing..."

/sbin/ifconfig eth0 82.x.x.x netmask 255.255.255.0 broadcast 82.x.x.255 up #łącze pierwsze
/sbin/ifconfig eth2 89.x.x.x netmask 255.255.255.248 broadcast 89.x.x.199 up #łącze drugie
/sbin/ifconfig eth1 200.x.x.x netmask 255.255.255.0 broadcast 200.x.x.255 up #sieć lan

IF0="eth1"              #sieciówka LAN
IF1="eth0"              #sieciówka WAN1
IF2="eth2"              #sieciówka WAN2
IP1="82.x.x..10"     #IP WAN1
IP2="89.x.x.198"    #IP WAN2
P1="82.x.x.1"       #IP BRAMA WAN1
P2="89.x.x.197"     #IP BRAMA WAN2
P0_NET="200.x.x.10/24"  #IP LAN
P1_NET="82.x.x.0/24"        #IP WAN1
P2_NET="89.x.x.196/30"      #IP WAN2


# 2 trasy do dwoch bram
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

#pakiety z sieci danego łącza wysylamy na jego bramkę
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

#trasa domyslna - do wyboru
#ip route add default via $P1
ip route add default via $P2

#konfiguracja tablic routingu
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

dodatkowe wpisy dla LAN

ip route add $P0_NET     dev $IF0 table T1
ip route add $P2_NET     dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo   table T1
ip route add $P0_NET     dev $IF0 table T2
ip route add $P1_NET     dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo   table T2

# dodajemy userow do tablicy

NR=5;
while [ $NR -le 254 ]; do
ip rule add from 192.168.2.$NR table T1 ;
ip rule add from 192.168.1.$NR table T2 ;
ip rule add from 82.x.x.$NR table T1;
ip rule add from 89.x.x.$NR table T2;
NR=$[ NR + 1 ]
done

#wymuszenie natychmiastowego wyczyszczenia cache
ip route flush cache


i nadal ten sam problem - nie można pingować wzajemnie interfejsów WAN , na jednym z łącz stoi www i z drugiego WANa nie ma możliwości wejśćia. Proszę o jakieś sugestie :wink:

Autor:  -MW- [ poniedziałek, 29 września 2008, 15:35 ]
Tytuł: 

ale wazne ze da sie to zrobic z hosta w necie.

Autor:  Albercik [ poniedziałek, 29 września 2008, 15:56 ]
Tytuł: 

-MW- pisze:
ale wazne ze da sie to zrobic z hosta w necie.


Tak, da się, ale na jednym z łącz są usługi www, ftp, poczta, a z drugiego nie jest to dostępne. W Twoich skryptach nie ma tego problemu. Możesz oddzielić same reguły dla drugiego łącza od reszty skryptów?

Autor:  -MW- [ poniedziałek, 29 września 2008, 18:46 ]
Tytuł: 

Cytuj:
Tak, da się, ale na jednym z łącz są usługi www, ftp, poczta, a z drugiego nie jest to dostępne.


nie rozumiem co to ma do rzeczy?

host z lanu ma sie laczyc jednym laczem do drugiego zeby skorzystac z jakichs uslug? troche bezsesu.

Autor:  Albercik [ poniedziałek, 29 września 2008, 19:24 ]
Tytuł: 

-MW- pisze:
Cytuj:
Tak, da się, ale na jednym z łącz są usługi www, ftp, poczta, a z drugiego nie jest to dostępne.


nie rozumiem co to ma do rzeczy?

host z lanu ma sie laczyc jednym laczem do drugiego zeby skorzystac z jakichs uslug? troche bezsesu.


Nie jest bez sensu. Maszyna z www ftp i pocztą jest fizycznie inną maszyną i stoi przed routerem.

Autor:  -MW- [ poniedziałek, 29 września 2008, 19:40 ]
Tytuł: 

i jest podlaczona do drugiego lacza - ma swoje ip a nnd jako router ma podpiete dwa lacza i hosty przypisane do lacza pierwszego nie moga sie dostac do owej maszyny z www i poczta?
tak to nalezy rozumiec?

jednym slowem cos nie tak z regulkami sterujacymi rutingiem.

sprawdzilem u siebie i nie byloby z tym problemu ale z lacza glownego na dodatkowe - czyli tez jest warunek na ktorym laczu mialaby stac serwer www itd.
poniewaz ja nie mam dwoch interfejsow zewnetrznych tylko jeden to nie moge puscic pingu laczem dodatkowym stojacym jako alias na eth0.
chyba ze jakas bardziej skomplikowana skladnia polecenia ping wymuszajaca ruch przez zadane ip na to pozwala, lecz nie zglebialem tego tematu :)

Autor:  Albercik [ poniedziałek, 29 września 2008, 21:03 ]
Tytuł: 

-MW- pisze:
i jest podlaczona do drugiego lacza - ma swoje ip a nnd jako router ma podpiete dwa lacza i hosty przypisane do lacza pierwszego nie moga sie dostac do owej maszyny z www i poczta?
tak to nalezy rozumiec?


Dokładnie.

Autor:  -MW- [ poniedziałek, 29 września 2008, 23:21 ]
Tytuł: 

Cytuj:
W jaki sposób kolejkujecie na serwerach z dwoma łączami ?


a ja wyszdelem z innego zalozenia:) jak kolega sugeruje wyzej.

ruch z lan kierowany jest na imq0 na ktorym sa kolejki hostow (ul)
po czym po przejsciu przez inne reguly iptables kierowany jest do odpowiedniego lacza przez imq5 i imq7 gdzie filtrowany jest ruch w/g uslug.

z dl jest analogicznie tylkow druga strone - ruch filtrowany w/g uslug
i kierowany przez imq6 i imq8 do imq1 gdzie sa kolejki hostow.

ruch malowymagajacy wzgledem opoznien porty 80 i 443 kieruje na wieksze lacze, reszta leci nieco mniejszym i luzniejszym.


a odnosnie regul routingu - pokaz jak one wygladaja:
ip rule list

ps.
Cytuj:
dodatkowe wpisy dla LAN
ip route add $P0_NET dev $IF0 table T1
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P0_NET dev $IF0 table T2
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2


te wpisy prawdopodobnie masz juz w tablicy main wiec po co je powtrzac ?
tyle ze odwolanie do tablicy main masz z bardzo niskim prio
Cytuj:
32766: from all lookup main
32767: from all lookup default

a wystarczy mala modyfikacja i kika regul juz odpada, bo sa tworzone przy podnoszeniu interfejsu i wystarcza same trasy domyslne w tabelach
T1 i T2 oraz pozbycie sie domyslnej tras z main.


byc moze rozwiazaniem problemu z dostepem hostow z lacza pierwszego do maszyny z www na laczu drugim bedzie dodanie regulki:


ip rule add prio 10 to $P2_NET table T2

a swoja droga to w regulach panuje haos:


Cytuj:
NR=5;
while [ $NR -le 254 ]; do
ip rule add from 192.168.2.$NR table T1 ;
ip rule add from 192.168.1.$NR table T2 ;
ip rule add from 82.x.x.$NR table T1;
ip rule add from 89.x.x.$NR table T2;
NR=$[ NR + 1 ]
done


nieco za duzo regulek takich samych.

no i pytanie co z maskowaniem ip czy jest w poprawny sposob zrobony,
dla pakietow wychodzacych odpowiednim interfejsem?

Strona 1 z 2 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/