По-долу можете да видите скрипт за policy маршрутизиране по source адрес към два шлюза. Познайте какво се случва, когато се изпълни скрипт на GNU/Linux маршрутизатор със само един шлюз.

#!/bin/sh

ip="/sbin/ip"

DTABLE1=101 DTABLE2=102

STABLE="main"

fw1="192.168.100.1"

fw1_nets="10.10.128.0/22 \
            10.10.132.0/22 \
            10.10.136.0/21 \
            10.10.156.0/22 \
            10.10.188.0/22"

fw2="192.168.100.8"

fw2_nets="10.10.144.0/22 \10.10.148.0/22 \ 10.10.152.0/22 \ 10.10.185.0/22 \ 10.10.186.0/22 \ 10.10.187.0/22"

$ip route flush table $DTABLE1 $ip route show table $STABLE | grep -Ev
'^default' | grep '10.10' \ | while read ROUTE ; do $ip route add table
$DTABLE1 $ROUTE done

$ip route flush table $DTABLE2 $ip route show table $STABLE | grep -Ev
'^default' | grep '10.10'\ | while read ROUTE ; do $ip route add table $DTABLE2
$ROUTE done

# CMTS1,5
$ip route add table $DTABLE1 default via $fw1 for net in $fw1_nets; do $ip rule
add from $net table $DTABLE1; done

# CMTS2,3,4
$ip route add table $DTABLE2 default via $fw2; for net in $fw2_nets; do $ip
rule add from $net table $DTABLE2; done

$ip route flush cache

Аз мога да ви отговоря - машината не ще по никакъв начин да препраща пакети от един интерфейс на друг и си пълни логовете със съобщения от вида:

mincho kernel: printk: 8516 messages suppressed.

Като се има предвид, че лично аз съм писал въпросния скрипт (макар и преди повече от 2 години), ми отне около 15 минути, докато разбера какво става, и, което е по-важното, да го оправя. :)