HOWTO: Multihoming

a.k.a von Welt unter mehreren IPs erreichbar sein

Problemstellung

mehrere IPs an einem Rechner sind normalerweise kein Problem, einfache zusätzliche Adresse konfigurieren, fertig

jedoch verwenden moderne Betriebssysteme meist nur eine einzige Routingtabelle zum routen

Antworten zu Anfragen von IPs außerhalb der konfigurierten Subnetze gehen standardmäßig über die eingestellte Defaultroute

davon kann es mehrere geben, aber nur die mit der kleinsten Metrik matcht

soll ein Rechner unter 2 IPs von Welt erreichbar sein, muss der Rechner auch von der IP aus antworten, an die die Anfrage ging und nicht einfach von der IP des Interfaces, über die die Defaultroute geht

die Clients bekommen dann Antwort von einer anderen IP, als die angefragte und können diese Antworten nicht mehr zuordnen und sie werden verworfen

Policy-Based Routing

Die Lösung für das oben beschriebene Problem heißt Policy-Based Routing.

mehrere Routingtabellen

Auswahl der Tabelle anhand einer Rule

in diesem Fall abhängig von der Zieladresse der eingehenden Anfrage

damit ist sichergesellt, dass die Antworten über die passende Defaultroute rausgehen

neue Routingtabellen

/etc/iproute2/rt_tables

#
# reserved values
#
255	local
254	main
253	default
1 tbl_eth0
2 tbl_eth1

Tabelle tbl_eth0 füllen

ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table tbl_eth0
ip route add default via 192.168.1.254 dev eth0 src 192.168.1.1 table tbl_eth0

Tabelle tbl_eth1 füllen

ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1 table tbl_eth1
ip route add default via 192.168.2.254 dev eth1 src 192.168.2.1 table tbl_eth1

Policies konfigurieren mittels ip rule

ip rule add from 192.168.1.1 table tbl_eth0
ip rule add from 192.168.2.1 table tbl_eth1

Konfiguration unter verschiedenen Distributionen / Betriebssystemen

Gentoo

/etc/conf.d/net

config_eth0="192.168.1.1/24"
routes_eth0="192.168.1.0/24 table tbl_eth0 src 192.168.1.1
default via 192.168.1.254 table tbl_eth0 src 192.168.1.1
default via 192.168.1.254"
rules_eth0="from 192.168.1.1 table tbl_eth0"
config_eth1="192.168.2.1/24"
routes_eth1="192.168.2.0/24 table tbl_eth1 src 192.168.2.1
default via 192.168.2.254 table tbl_eth1 src 192.168.2.1"
rules_eth1="from 192.168.2.1 table tbl_eth1"

Debian

/etc/networking/interfaces

iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
post-up ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table tbl_eth0
post-up ip route add default via 192.168.1.254 dev eth0 table tbl_eth0
post-up ip rule add from 192.168.1.254 table tbl_eth0
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
post-up ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1 table tbl_eth1
post-up ip route add default via 192.168.2.254 dev eth1 table tbl_eth1
post-up ip rule add from 192.168.2.254 table tbl_eth1