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