2 IP-Adressen

folgendes Scenario:

2 Netzwerkkarten sind mit dem Internet verbunden. Beide in unterschiedlichen Subnetzen ueber unterschiedliche Provider. Problem: Man kann nur eine Default Route festlegen, dh. eigentlich das nur die IP-Adresse erreichbar ist die mit der Default Route konfiguriert ist.

LSG: iproute2; sehr leistungsstarkes IP/Routing Paket siehe http://www.lartc.org

damit lässt es sich realisieren, über Policies, beide IP-Adressen (oder noch mehr) anzusprechen.

In [ ]:

![Failover](http://b9i.de/failover.svg)

Im Bild ist das Scenario nochmal dargestellt:

  • eth0: an dieser Netzwerkkarte ist das interne LAN angeschlossen
  • eth1: Internet Verbindung via Provider1, mit $IP1 und $Gateway1
  • eth2: Internet Verbindung via Provider2, mit $IP2 und $Gateway2

beide Adressen, $IP1 und $IP2 sollen aus dem Internet erreichbar sein!

cat /etc/iproute2/rt_tables:

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#

1 INTER
2 Fail
In [ ]:
    
    ip route add $IP_NET1/$MASK1 dev eth1 src $IP1 table INTER
    ip route add default via $Gateway1 table INTER
    ip route add $IP_NET2/$MASK2 dev eth2 src $IP2 table Fail
    ip route add default via $Gateway2 table Fail

    ip rule add from $Gateway1 table INTER
    ip rule add to $Gateway1 table INTER
    ip rule add from $Gatway2 table Fail
    ip rule add to $Gateway2 table Fail

Diese Befehle lassen sich gut durch ein Script beim Startup des Systems einpflegen. Unter Centos gibt es jedoch einen eleganteren Weg:

Centos Way

Im Ordner /etc/sysconfig/network-scripts/ wird die Konfiguration der einzelnen Netzwerkkarten vorgenommen. Jede Netzwerkkarte ist dort durch eine Datei repräsentiert. z.B. ifcfg-eth2 die Synatx in diesen Dateien ist jedoch fest und sie ist noch aus einer Zeit vor iproute2 Man kann jedoch für jede Netzwerkkarte 2 weitere Dateien anlegen:

  • route-eth2
  • rule-eth2

der Inhalt dieser Dateien wird dann direkt an das Kommando ip übergeben:

Inhalt route-eth2:

In [ ]:
    $IP_NET2/$MASK2 dev eth2 src $IP2 table Fail
    default via $IP2 dev eth2 table Fail

Inhalt rule-eth2:

In [ ]:
    from $IP2/32 table Fail
    to $IP2/32 table Fail

Was im oberen Beispiel (für Scripte) noch mit ... $IP1 ... usw steht, muss natürlich in diesen Dateien direkt durch die Adressen ersetzt werden. Varablen werden in diesen Daten nicht substituiert. Lediglich hier in der Beschreibung stehen Variablen um deutlich zu machen was eingesetzt werden muss.

Comments

Comments powered by Disqus