ausgang:

  maschine

  netz1 auf eth0:
  ip 172.16.2.15
  gw: 172.16.2.1
  netz: 172.16.2.0/24 netzmaske 255.255.255.0
  broadcast: 172.16.2.255

  netz2 auf eth1:
  ip: 172.28.0.199
  gw: 172.29.0.3
  netz: 172.28.0.0/16 netzmaske 255.255.0.0
  broadcast 172.16.255.255


  <---------------------- intern--------->          <---- extern ----->
  <--- maschine----->
  +-----------------+
  | 172.16.2.15     | nic 1 = eth1 ---- gwb nat auf  -- 132.223.121.115
  +-----------------+                   172.16.2.1
  | 172.28.0.199    | nic 0 = eth0 ---- gwa nat auf  -- 112.113.114.99
  +-----------------+                   172.28.0.3

  benoetigte routing table:

  in Datei /etc/sysconfig/static-routes:
  any net 172.16.2.0 netmask 255.255.255.0 gw 172.16.2.1 dev eth1

  $ route -n
  Kernel IP routing table
  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  172.16.2.0      172.16.2.1      255.255.255.0   UG    0      0        0 eth1
  172.16.2.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
  172.28.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
  127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
  0.0.0.0         172.28.0.3      0.0.0.0         UG    0      0        0 eth0


  lt. der table wird 172.16.2.15 zwar nach 172.16.2.1 geschickt, 
  172.16.2.1 aber auf auf 0.0.0.0, 
  ( default gw ) und das bei 172.28.0.3 raus. -> :(

  die routing anweisung

  $ route add default gw 172.16.2.1 

  hilft auch nichts.

  das kannst du mit
  $ tcpdump -ni eth0 80 
  $ tcpdump -ni eth1 80
  beobachten.

  daher muss mit iproute2 sichergestellt werden, dass packete, welche 
  auf eth1 hereinkommen auch aut eth1 rausgehen und gleiches gilt
  fuer eth0.

  vorab: im kernel muss aktiviert sein

  CONFIG_IP_ADVANCED_ROUTER - IP: advanced router
  CONFIG_IP_MULTIPLE_TABLES - IP: policy routing

  bestehende rules sind :

  $ ip rule ls
  0:      from all lookup local
  32766:  from all lookup main
  32767:  from all lookup default

  unser problemn besteht weil das ganuz routing in der main tabelle liegt.

  jetzt werden mittels command "ip" - zwei weitere tables angelegt:
  gwa fuer provider 1 auf eht0
  gwb fuer provider 2 auf eth1
  ( ip = TCP/IP interface configuration and routing utility )

  editiere /etc/iproute2/rt_tables
  $  vi /etc/iproute2/rt_tables
  #
  # reserved values
  #
  255     local
  254     main
  253     default
  0       unspec

  #
  # local
  # note: < 253!
  #
  #1      inr.ruhep
  # scan added 200,201
  200  gwa
  201  gwb
  # eof /etc/iproute2/rt_tables

  die neuen tabellen werden mit regeln befuellt.

  $ ip route add 172.16.2.0/24 dev eth1 src 172.16.2.15 table gwb
  $ ip route add default via 172.16.2.1 table gwb
  $ ip route add 172.16.2.0/24 dev eth1 src 172.16.2.15
  $ ip rule add from 172.16.2.15 table gwb

  $ ip route add 172.28.0.0/16 dev eth0 src 172.28.0.199 table gwa
  $ ip route add default via 172.28.0.3 table gwa
  $ ip route add 172.28.0.0/16 dev eth0 src 172.28.0.199
  $ ip rule add from 172.28.0.199 table gwa

  # und das set zum laufen gebracht:

  $ ip route flush cache

  ergibt:

  $ ip rule ls
  0:      from all lookup local
  32764:  from 172.28.0.199 lookup gwa
  32765:  from 172.16.2.15 lookup gwb
  32766:  from all lookup main
  32767:  from all lookup default

  $ ip route show
  172.16.2.0/24 via 172.16.2.1 dev eth1
  172.16.2.0/24 dev eth1  scope link
  172.28.0.0/16 dev eth0  scope link
  127.0.0.0/8 dev lo  scope link
  default via 172.28.0.3 dev eth0

  $ ip route show table gwa
  172.28.0.0/16 dev eth0  scope link  src 172.28.0.199
  default via 172.28.0.3 dev eth0

  $ ip route show table gwb
  172.16.2.0/24 dev eth1  scope link  src 172.16.2.15
  default via 172.16.2.1 dev eth1

  womit sicher gestellt ist, dass packete, die bei eth1 hereinkommen, auch wieder bei eth1 hinausgehen und vice versa fuer eth0


  wichtig:
  $ cat /proc/sys/net/ipv4/ip_forward
  0
  stellt sicher, dass packete zwischen eth0 und eth1 NICHT forgewarded werden, 
  und somit keine direkte verbindung zwischen den zwei netzen 
  hergestellt werden kann.

  weiterfuehrende lektuere:

Advanved Routing HOWTO
ip-cref.txt = ps2ascii /usr/share/doc/iproute-2.6.9/ip-cref.ps
mail me no spam please :)