Linux-miljø, multi-link load balancing



1,1 ---------------------- Multipath Routing

Online artikler om multipath routing er allerede en masse, og jeg vil blot påpege, hvor anvendelsen af multipath routing patches skal installeres på følgende to re-compile kernen (mindst RH8 af ip rute pakkerne bruge to lapper)

Navn: iproute2-2.4.7-nu-ss020116-try.tar.gz

URL: ftp://ftp.inr.ac.ru/ip-routing/

Funktion: løse dødt link problem

Navn: equalize_2.4.18.patch

URL: http://trash.net/ ~ kaber / udligne /

Funktion: selv uden patch, ip route også udligne parametre, men virker ikke ping barriere.

1.2.Multipath routing problem.

ISP med en multi-link kan være gateway ip er den samme i denne sag multipath routing fungerer ikke. En anden sagde, at multipath routing kan kun styre udgående pakke

2,1 .--------------------- Policy routing.

Princip:

Kundens ip tilfældigt ind N grupper, som hver svarer til et link, en pakke fra serveren side af shell script til at fuldføre. (Dette indebærer ikke dial-up software installation og konfiguration, se venligst andre artikler.)

Test miljø:

RH8. Ingen andre patches.

Sikkerhedsspørgsmål:

Som reformprocessen for at køre vært, er der ingen standard rute. Eksterne Værten kunne ikke få adgang til, en fuldstændig forebyggelse af hackerangreb.

Ulemper:

Ikke en ægte load balancing, en IP adresse kan ikke besætte den båndbredde af det andet link.

Link redundans:

Da han efter et ødelagt link i / etc / ppp / ip-down.local script, undladelse af routing skifte til en anden linje.

Scriptet i $ 1 for grænsefladen navn, f.eks ppp0

ip rute tilføje default dev PPP1 tabel 201

Script:

-------------------------------------------------

# Identificeret som fwmark 1 i tabel 201 ip-adresse pool adresser tilhører.

ip regel tilføje fwmark 1 bord 201

ip regel tilføje fwmark 2 tabel 202

--------------------------------------------------

# Ændre / etc / rc.local

echo "der gør det muligt at fremsende .."

echo "1" / proc/sys/net/ipv4/ip_forward

echo "der gør det muligt DynamicAddr .."

echo "1" / proc/sys/net/ipv4/ip_dynaddr

kommandoerne insmod ip_nat_ftp

kommandoerne insmod ip_nat_irc

kommandoerne insmod iptable_nat

kommandoerne insmod ip_conntrack_irc

kommandoerne insmod ip_conntrack_ftp

iptables-t nat-A POSTROUTING-o ppp0-j Masquerade

iptables-t nat-A POSTROUTING-o PPP1-j Masquerade

# 201, kunden adresse pulje tildeles ppp0

ip rute tilføje default dev ppp0 tabel 201

ip rute tilføje default dev PPP1 tabel 202

# Må ikke acceptere ISP's default gateway, ellers fjerne ISP indtil default gateway.

-------------------------------------------------- --------

# Ip fordelingen af de vigtigste program i henhold til den aktuelle situation, nødt til at ændre Linenum, at antallet af links,

# Og katten pool1 pool2 pooltmp

# Ved telnet klient starte programmet, skal du bruge nohup TheScriptName &, at undgå utilsigtet opsigelse procedurer.

#! / Bin / bash

LineNum = 2

ME = $ (basename $ 0)

# Evaluere belastning på forskellige linjer, returnerer mindre travle én.

#

funktion EvaLoad ()

(

Fwmark = 1

CNT = 1

Line = $ (wc-l pool1 | awk (print 1))

mens [$ cnt-lt $ LineNum]

gøre

CNT = $ (expr $ CNT + 1)

Linen = $ (wc-l pool $ cnt | awk (print 1))

hvis [$ Line-gt $ Linen]

Derefter

Line = $ Linen

Fwmark = $ CNT

fi

gjort

)

# Start script

funktion DispatcherStart ()

(

# Initialiser ip-adresse pool automatisk

CNT = 1

mens [$ cnt-le $ LineNum]

gøre

cat / dev / null pool $ CNT

CNT = $ (expr $ CNT + 1)

gjort

iptables-t mangle-F

# Kontakt ARP tabellen for at finde nye kunder

mens:

gøre

grep [0-9] / proc / net / arp | awk (print $ 1) iparp

cat pool1 pool2 pooltmp

kat iparp | mens læse ClientIp

gøre

grep-w "$ ClientIp" pooltmp / dev / null

hvis [$?-ne 1]

Derefter

fortsætte

fi

EvaLoad

iptables-t mangle-A PREROUTING-s $ ClientIp/32-j MARK - set-mærket $ Fwmark

echo $ ClientIp pool $ Fwmark

gjort

sove 30

gjort

)

#

#------------------ Main script

#

#

tilfælde "$ 1" i

start)

echo-e "bringe op afsender Program
"

echo ""

DispatcherStart

;;

stop)

echo-e "Lukker afsender program
"

dræbe -9 $ (ps-ef | grep "$ ME" | awk (print 2))

hvis [$? = 0]; derefter

echo succes

andet

echo fiasko

fi

echo ""

;;

restart)

$ 0 stop

$ 0 start

;;

*)

echo "Usage: $ ME (start & | stop | restart)"

exit 1

ESAC

exit 0