a.k.a von Welt unter mehreren IPs erreichbar sein
Die Lösung für das oben beschriebene Problem heißt Policy-Based Routing.
/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
ip rule add from 192.168.1.1 table tbl_eth0 ip rule add from 192.168.2.1 table tbl_eth1
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
/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"
/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: Verifizieren!
sysctl
net.ipv4.ip_forward=1
Sicherheitshalber sollte dies mit folgender Firewall-Regel kombiniert werden:
iptables
iptables -A FORWARD -j REJECT