Toon posts:

[linux] iproute advanced routing

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de Linux Advanced Routing HOWTO gisteren eens zitten doorspitten (http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html), maar er is nog 1 ding waar ik niet aan uit kan.

Thuis heb ik zowel Kabel als ADSL, en ik gebruik 1 Linux router om het verkeer van mijn LAN te routen over 1 van die lijnen. Het routen op basis van source ip's werkt prima: alles van 192.168.0.x gaat over kabel, alles van 192.168.1.x gaat over ADSL.

Nu wil ik echter dat alles met bestemming 137.120.x.x ALTIJD via de kabel gaat, onafhankelijk van de bestemming. Er is redelijk weinig info te vinden over het ip route pakket, en in de HOWTO gaan ze er helemaal niet diep op in.

Momenteel gebruik ik deze rules (kabel is defaultroute)
code:
1
2
3
ip rule add from 192.168.1.0/24 table ADSL
ip route add default via 1.2.3.4 dev ppp0 table ADSL
ip route flush cache

(1.2.3.4 is mijn ADSL gateway ip)

Ik heb al geprobeerd om rules te maken in de aard van "ip rule add to 137.120.0.0/16", maar dat veranderde niets aan de rules.

Ik neem aan dat er iets mis is met de volgorde van mijn routes, maar hoe kan ik die volgorde bepalen ? En hoe kun je ingestelde router terug verwijderen (een grote flush geven dus) ?

Alvast bedankt voor alle zinvolle replys.

Verwijderd

Topicstarter
Ik was kennelijk iets te vroeg met het kraaien van victorie ;)
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
IPROUTE2=/sbin/ip
ADSL=ppp0
CABLE=eth1

ADSL_GW=x.y.z.w
CABLE_GW=a.b.c.d

# Some fixed routes:
${IPROUTE2} ro add 137.120.0.0/16 dev eth1 table um

# Rules
#   The 192.168.0.1/24 segment goes over the cable
${IPROUTE2} rule add from 192.168.0.1/24 pref 2000 table um
#   The 192.168.1.1/24 segment goes over the adsl modem
${IPROUTE2} rule add from 192.168.1.1/24 pref 2000 table adsl

# Set the default routes for each table
${IPROUTE2} route add default via $ADSL_GW dev ppp0 table adsl

# then flush cache
${IPROUTE2} route flush cache

# List the final tables
echo "Table UM:"
${IPROUTE2} route list table um
echo "Table ADSL:"
${IPROUTE2} route list table adsl
echo "Rules:"
${IPROUTE2} rule ls

Nu is het nog steeds dat verkeer van 192.168.1.1 naar bv. 137.120.1.1 nog altijd via ADSL gaat, ipv over de kabel interface.

Is het combineren van routers en rules wel goed zoals ik het doe ? In die tekst stond nergens uitleg over hoe je dat mag/kan combineren. Ik kan natuurlijk pakketjes gaan marken met iptables en dan op basis van die marks routeren, maar dat moet toch simpeler kunnen vind ik...

Verwijderd

Topicstarter
Even mn eigen post uppen met wat extra info, omdat het nog steeds niet goed werkt. Ik heb nu deze iproute code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh

IPROUTE2=/sbin/ip
ADSL=ppp0
CABLE=eth1

ADSL_GW=a.b.c.d
CABLE_GW=x.y.z.w

${IPROUTE2} ro add 137.120.0.0/16 dev eth1 pref 1000 table adsl

${IPROUTE2} rule add from 192.168.1.1/24 pref 2000 table adsl

${IPROUTE2} route add default via $ADSL_GW dev ppp0 pref 3000 table adsl

${IPROUTE2} route flush cache

De cable is de default route, dus al het ander vekeer gaat netjes over de cable.

Het probleem wat ik nu heb, is dat deze code werkt, maar alleen als ik hem 2 keer run. Als ik de code een eerste keer run, gaat alle verkeer van 192.168.1.1/24 nog gewoon over de cable, maar bij een 2de keer gaat het wel netjes over de adsl link.

De advanced routing howto leert me niet veel meer, want dit is precies zoals het erin staat en dat zou moeten werken. Iemand die ziet was ik mis doe of hoe ik dit kan oplossen ?

Verwijderd

Of het voor jou werkt weet ik niet, maar ik moest voor elke gateway een default route zetten en wel op de volgende wijze.
code:
1
ip ro ch default dev eth1 nexthop via ga.te.way.1 dev eth1 nexthop via ga.te.way.2 dev eth2 .

Dit voegt in dit geval eth1 en eth2 toe aan de default route van het systeem. Toen ik dit commando eenmaal had ingevoerd (aanpassen voor jouw situatie) deed mijn routing het plotseling ook via een in een tabel ingevoerde gateway afhankelijk van de source van de data)