stap1: kernel patchen met
http://www.ssi.bg/~ja/routes-2.4.28-9.diff of
http://www.ssi.bg/~ja/routes-2.6.10-12.diff
Ik heb de volgende dingen aanstaan in me 2.6.x kernel:
IP: advanced router
IP: policy routing
IP: equal cost multipath
Stap2, iproute2 package installeren.
Stap3 iproute2 up fire'en, ik gebruik dit script:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| # a.b.c.d/24 is je ip van ISP1, a.b.c.X is de default gateway voor die verbinding
# e.f.g.h/24 is je ip van ISP2, e.f.g.X is de default gateway voor die verbinding
ip link set lo up
ip addr add 127.0.0.1/8 brd + dev lo
ip rule add prio 50 table main
ip route del default table main
ip link set eth0 up
ip addr flush dev eth0
ip addr add a.b.c.d/24 brd + dev eth0
ip link set eth1 up
ip addr flush dev eth1
ip addr add e.f.g.h/24 brd + dev eth1
ip link set eth2 up
ip addr flush dev eth2
ip addr add 192.168.0.1/24 brd + dev eth2
ip rule add prio 201 from a.b.c.d/24 table 201
ip route add default via a.b.c.X dev eth0 src a.b.c.d proto static table 201
ip route append prohibit default table 201 metric 1 proto static
ip rule add prio 202 from e.f.g.h/24 table 202
ip route add default via e.f.g.X dev eth1 src e.f.g.h proto static table 202
ip route append prohibit default table 202 metric 1 proto static
ip rule add prio 222 table 222
ip route add default table 222 proto static \
nexthop via a.b.c.X dev eth0 weight 2 \
nexthop via e.f.g.X dev eth1 weight 1 |
Met de weight kan je de ene verbinding zwaarder laten tellen dan de andere.
In dit geval zal +- 2x zo veel uitgaande verbindingen via the ISP die aan eth0 hangt gaan.
Let wel, een route wordt voor ongeveer 5 minuten gecachet.
Stap4, nog wat iptables zut.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to a.b.c.d
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j SNAT --to e.f.g.h
Verder kun je nog wat leuke dingen doen met iproute2.
Stel je wil dat een machine op je LAN altijd via isp2 het internet op gaat, dan doe je dit:
code:
1
2
| ip rule add prio 30 from 192.168.0.2 table 30
ip route add default via a.b.c.X dev eth0 table 30 |
de rule regel zorgt dat verkeer van 192.168.0.2 gematched wordt. prio30 zorgt dat het voor prio 222 (de default load balancende rule) komt.
table 30 zegt dat ie maar table 30 moet gebruiken om te routen.
De route regel zegt dat de default route is via de gateway van ISP1, en dat die regel table 30 is.
Ik heb hier een setup draaien met kabel/adsl/sdsl en 5 tunnels, als je dus wat meer in depth info wil, dan hoor ik het wel.