Inhaltsverzeichnis

HOWTO: Multihoming

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

Problemstellung

Policy-Based Routing

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

neue Routingtabellen

/etc/iproute2/rt_tables

#
# reserved values
#
255	local
254	main
253	default

1       tbl_eth0
2       tbl_eth1

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

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

ARP-Antwort-Einstellungen

Wenn die IPs auf verschiedenen Interfaces anliegen oder sonst irgendwie die IP-MAC-Bindung wichtig ist (2 IPs im selben Subnetz), sollte man einstellen, dass der Rechner nur die vorgesehene MAC des Interfaces mit der IP verwendet, damit nicht jede IP an jedem Interface verfügbar ist.

/etc/sysctl.d/local-multihome.conf

net.ipv4.conf.eth0.arp_announce=2
net.ipv4.conf.eth0.arp_ignore=1
net.ipv4.conf.eth1.arp_announce=2
net.ipv4.conf.eth1.arp_ignore=1

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/network/interfaces

iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
    gateway 192.168.1.254
    up ip route add             192.168.1.0/24 dev "$IFACE" src 192.168.1.1 table "tbl_$IFACE"
    up ip route add default via 192.168.1.254  dev "$IFACE"                 table "tbl_$IFACE"
    up ip rule  add from        192.168.1.254                               table "tbl_$IFACE"

iface eth1 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    up ip route add             192.168.2.0/24 dev "$IFACE" src 192.168.2.1 table "tbl_$IFACE"
    up ip route add default via 192.168.2.254  dev "$IFACE"                 table "tbl_$IFACE"
    up ip rule  add from        192.168.2.254                               table "tbl_$IFACE"

Hinweis: Unter Debian wheezy (Kernel 3.2.0) wird dafür auch folgende Einstellung benötigt: FIXME Verifizieren!

sysctl

net.ipv4.ip_forward=1

Sicherheitshalber sollte dies mit folgender Firewall-Regel kombiniert werden:

iptables

iptables -A FORWARD -j REJECT