Discussion:
2 routers, 2 gateways
(te oud om op te antwoorden)
Burg
2010-05-07 09:21:35 UTC
Permalink
Hallo lieden,

We hebben hier thuis 5 Ubuntu (8.10) bakkies.
We hebben 2 telefoonlijnen.
Op lijn 1 zit een router die connect naar provider 1.
Op lijn 2 zit een router die connect naar provider 2.
router 1 heeft als gateway 192.168.1.1
router 2 heeft als gateway 192.168.1.2

Een voorbeeld van een configuratie op een workstation:

$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.1.102
netmask 255.255.255.0
gateway 192.168.1.2

auto eth0
$

Provider 2 is de default. Maar die valt soms weg. Dan wil ik dat alle
workstations via gateway 1 naar buiten gaan.

Ik kan handmatig op elke machine op de prompt intypen:

$ sudo route add default gw 192.168.1.1 eth0

Dat werkt. Workstation kan nu ook naar buiten via gateway 1

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.1.2 0.0.0.0 UG 100 0 0 eth0
$

Ik wil dus dat elke bak via of gateway 1 of gateway 2 naar buiten kan.
Hoe kan ik dit nu automatisch configureren? 2 gateways in
/etc/network/interfaces (accepteert hij volgens mij niet)?
Of bij de boot van een workstation een script starten die een gateway add?
Of..?

Thanks in advance.
--
Burg in Thailand [1966-03-18]
http://www.vadertjestaat.nl/
Ubuntu 8.10 [2.6.27-7-generic quite stable]
Paul van der Vlis
2010-05-07 10:08:39 UTC
Permalink
Post by Burg
Hallo lieden,
We hebben hier thuis 5 Ubuntu (8.10) bakkies.
We hebben 2 telefoonlijnen.
Op lijn 1 zit een router die connect naar provider 1.
Op lijn 2 zit een router die connect naar provider 2.
router 1 heeft als gateway 192.168.1.1
router 2 heeft als gateway 192.168.1.2
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.102
netmask 255.255.255.0
gateway 192.168.1.2
auto eth0
$
Provider 2 is de default. Maar die valt soms weg. Dan wil ik dat alle
workstations via gateway 1 naar buiten gaan.
$ sudo route add default gw 192.168.1.1 eth0
Dat werkt. Workstation kan nu ook naar buiten via gateway 1
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.1.2 0.0.0.0 UG 100 0 0 eth0
$
Ik wil dus dat elke bak via of gateway 1 of gateway 2 naar buiten kan.
Hoe kan ik dit nu automatisch configureren? 2 gateways in
/etc/network/interfaces (accepteert hij volgens mij niet)?
Op zich wel, maar voor verschillende netwerken.
Post by Burg
Of bij de boot van een workstation een script starten die een gateway add?
Of..?
je zou al het verkeer via een server/router/firewall of zoiets kunnen
laten lopen waar je dat dan maar eenmalig op hoeft in te stellen.

je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen. Onderstaande heeft vast verbetering nodig ;-)
----------
if ! ping -c 1 machine.provider.com > /dev/null; then
sudo route add default gw ....
fi
----------


Met vriendelijke groet,
Paul van der Vlis.
--
http://www.vandervlis.nl/
tjoen
2010-05-07 16:23:43 UTC
Permalink
Post by Paul van der Vlis
Post by Burg
Provider 2 is de default. Maar die valt soms weg. Dan wil ik dat alle
workstations via gateway 1 naar buiten gaan.
je zou al het verkeer via een server/router/firewall of zoiets kunnen
laten lopen waar je dat dan maar eenmalig op hoeft in te stellen.
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen. Onderstaande heeft vast verbetering nodig ;-)
----------
if ! ping -c 1 machine.provider.com> /dev/null; then
sudo route add default gw ....
fi
----------
Geen ervaring mee, maar er bestaan gated en routed
Huub Reuver
2010-05-07 20:01:54 UTC
Permalink
Post by tjoen
Post by Paul van der Vlis
Post by Burg
Provider 2 is de default. Maar die valt soms weg. Dan wil ik dat alle
workstations via gateway 1 naar buiten gaan.
je zou al het verkeer via een server/router/firewall of zoiets kunnen
laten lopen waar je dat dan maar eenmalig op hoeft in te stellen.
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen. Onderstaande heeft vast verbetering nodig ;-)
----------
if ! ping -c 1 machine.provider.com> /dev/null; then
sudo route add default gw ....
fi
----------
Geen ervaring mee, maar er bestaan gated en routed
Ik gok dat dat niet gaat werken als een router met NAT gaat werken.
De 2 routes zijn niet meer gelijkwaardig.

Met meerdere routes begin je met het zo configureren dat verkeer dat
ontvangen worden altijd via de juiste router wordt teruggestuurd
(iproute2: ip rule table/ip route table). Ik geloof dat de info
daarover in de advanced routing howto stond.

En als je dan met ping gaat experimenteren geef dan in elk geval de
-W optie mee. Het scheelt als je weet hoelang je op een antwoord wacht.

Met vriendelijke groet,
Huub Reuver
Burg
2010-05-08 06:13:30 UTC
Permalink
Post by Paul van der Vlis
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen.
Dat doe ik al op 1 machine, dat werkt OK.

Wat ik niet snap: als ik op de prompt doe

$ sudo route add default gw 192.168.1.1 ethX

Dan toont mijn 'route -n' 2 gateways en dat schijnt te werken.

Dit commando moet ik toch ook ergens in de config of in een boot-script
kunnen zetten?
--
Burg in Thailand [1966-03-18]
http://www.vadertjestaat.nl/
Ubuntu 8.10 [2.6.27-7-generic quite stable]
richard lucassen
2010-05-08 10:23:03 UTC
Permalink
On 08 May 2010 06:13:30 GMT
Post by Burg
Post by Paul van der Vlis
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je
route veranderen.
Dat doe ik al op 1 machine, dat werkt OK.
Wat ik niet snap: als ik op de prompt doe
$ sudo route add default gw 192.168.1.1 ethX
Dan toont mijn 'route -n' 2 gateways en dat schijnt te werken.
Dit commando moet ik toch ook ergens in de config of in een
boot-script kunnen zetten?
Je moet policy routing gebruiken D.w.z.: gebruik meerdere route
tabellen (het gebruik van "route" en "ifconfig" is eigenlijk al jaren
obsolete en zijn nog voor downward compatibility aanwezig) Voorbeeld:

Zet eth0 op *met* een "normale" gateway en hang daar modem1 aan:

ip link set eth0 up
ip address add 192.168.1.254/24 dev eth0
ip route add default via 192.168 1.1 dev eth0

Maak een nieuwe route tabel aan voor eth0 (tabel 10):

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.254 table 10
ip route add default via 192.168.1.1 table 10
ip route add 127.0.0.0/8 dev lo table 10
ip rule add from 192.168.1.254 table 10
ip route flush cache

Zet eth1 op *zonder* een "normale" gateway en hang daar modem2 aan:

ip link set eth1 up
ip address add 192.168.2.254/24 dev eth1

Maak een nieuwe route tabel aan voor eth1 (tabel 11):

ip route add 192.168.2.0/24 dev eth1 src 192.168.2.254 table 11
ip route add default via 192.168.2.1 table 11
ip route add 127.0.0.0/8 dev lo table 11
ip rule add from 192.168.2.254 table 11
ip route flush cache

Nu is de machine over beide modems van buiten te benaderen, dat is wel
zo handig. Je gebruikt beide gateways.

Nu kun je simpelweg omschakelen:

##################################################
#!/bin/bash

case $1 in

modem1)
ip route del default via 192.168 1.1 dev eth0
ip route add default via 192.168 2.1 dev eth1
;;

modem2)
ip route del default via 192.168 2.1 dev eth1
ip route add default via 192.168 1.1 dev eth0
;;

esac
##################################################

Het wel of niet up zijn van een lijn zou je kunnen detecteren door met
fping een stuk of wat ip-adressen te pingen en als er ook maar 1
terugkomt is de lijn up (gebruik ip-nummers en geen namen want als de
lijn plat is waar je dns queries overheen lopen dan zit je)

Om te kijken wat er gebeurt zijn deze commando's handig:

ip rule show

ip route show table 10

En ip is geschreven door iemand die lui is want dit werkt ook:

ip r

ip r s t 10

Op deze manier met policy routing kun je met fwmarking bijvoorbeeld ssh
over lijn1 laten lopen en gesurf over lijn2. Als je er wat dieper
induikt is de sky de limit. Gaat niet bestaat niet is het motto ;-)

O ja: niet getest. Voor service en garantie is Richard met vakantie.

R.
--
___________________________________________________________________
It is better to remain silent and be thought a fool, than to speak
aloud and remove all doubt.

+------------------------------------------------------------------+
| Richard Lucassen, Utrecht |
| Public key and email address: |
| http://www.lucassen.org/mail-pubkey.html |
+------------------------------------------------------------------+
richard lucassen
2010-05-08 10:25:57 UTC
Permalink
On Sat, 8 May 2010 12:23:03 +0200
Post by richard lucassen
ip rule show
ip route show table 10
ip r
moet zijn: ip ru s
Post by richard lucassen
ip r s t 10
Met "ip r" zie je de "normale" routetabel die je ook met "route -n"
ziet.
--
___________________________________________________________________
It is better to remain silent and be thought a fool, than to speak
aloud and remove all doubt.

+------------------------------------------------------------------+
| Richard Lucassen, Utrecht |
| Public key and email address: |
| http://www.lucassen.org/mail-pubkey.html |
+------------------------------------------------------------------+
Paul van der Vlis
2010-05-10 07:27:23 UTC
Permalink
Post by Burg
Post by Paul van der Vlis
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen.
Dat doe ik al op 1 machine, dat werkt OK.
Wat ik niet snap: als ik op de prompt doe
$ sudo route add default gw 192.168.1.1 ethX
Dan toont mijn 'route -n' 2 gateways en dat schijnt te werken.
Ik denk dat hij maar 1 van beide routes gebruikt. De bovenste verwacht ik.
Post by Burg
Dit commando moet ik toch ook ergens in de config of in een boot-script
kunnen zetten?
Uiteraard, je kunt elk commando daarin zetten. Vaak is er een bestandje
waar je wat in kunt zetten. In Debian is dat /etc/rc.local.

Groet,
Paul.
--
http://www.vandervlis.nl/
Paul van der Vlis
2010-05-10 07:28:11 UTC
Permalink
Post by Paul van der Vlis
Post by Burg
Post by Paul van der Vlis
je zou het omzetten ook kunnen automatiseren door te pingen naar een
gateway van de provider, als die niet bereikbaar is dan ga je je route
veranderen.
Dat doe ik al op 1 machine, dat werkt OK.
Wat ik niet snap: als ik op de prompt doe
$ sudo route add default gw 192.168.1.1 ethX
Dan toont mijn 'route -n' 2 gateways en dat schijnt te werken.
Ik denk dat hij maar 1 van beide routes gebruikt. De bovenste verwacht ik.
Post by Burg
Dit commando moet ik toch ook ergens in de config of in een boot-script
kunnen zetten?
Uiteraard, je kunt elk commando daarin zetten. Vaak is er een bestandje
waar je wat in kunt zetten. In Debian is dat /etc/rc.local.
Gebruikelijker is echter in /etc/network/interfaces.


Met vriendelijke groet,
Paul van der Vlis.
--
http://www.vandervlis.nl/
Burg
2010-05-15 19:35:13 UTC
Permalink
Post by Paul van der Vlis
Gebruikelijker is echter in /etc/network/interfaces.
Die accepteert geen 2 gateways blijkt. Ik heb het quick and dirty opgelost.
pingen om de X secs en dan evt gateway bijzetten. ach ja .. het zijn maar 5
bakkies, dus dat trekt papa ook nog wel ;-)
--
Burg in Thailand [1966-03-18]
http://www.vadertjestaat.nl/
Ubuntu 8.10 [2.6.27-7-generic quite stable]
Loading...