>> Э-э-э, ребята, в ipfw уже есть расширенные таблицы, nat global и
>> еще другие вкусности.
>> И все прекрасно балансируется без фибов.
> Покажи пример "nat global" Ну у меня 4 направления в Инет, реализованы per-interface acl, per-session load balancing
вот кусок рулесета с внешних ифейсов . Трафик от самого роутера равномерно распределяется по направлениям, но можно тоже реализовать с вероятностями, но тада нужно еще один нат вводить. 4 инстанса ната для каждого направления.
$cmd 2010 nat global ip4 from not me to any recv vlan\*
$cmd 2020 fwd tablearg ip4 from me to any recv vlan\* xmit "table(100)"
$cmd 2041 prob 0.25 skipto 2061 ip4 from not me to any
$cmd 2042 prob 0.50 skipto 2062 ip4 from not me to any
.....
$cmd 2061 nat 1 ip4 from any to any xmit em0
$cmd 2062 nat 2 ip4 from any to any xmit em1
.....
$cmd 2090 fwd tablearg log ip4 from me to any xmit "table(100)"
Используем расширенные таблицы aaa.bbb.ccc.ddd - соотв. default gw
ipfw table 100 add em0 aaa.bbb.ccc.ddd
ipfw table 100 add em1 eee.fff.ggg.hhh
.....
Суть в том, что первый пакет из лок. сети устанавливает соединение -> стейт в нате (2061-2064) и форвардинг, следующие пакеты уже не обрабатываются этими правилами, а только нат глобал ( имеется уже стейт) и далее форвардинг (2010-2020)
Пакеты самого роутера обрабатываются только правилами 2061-...
Ядро скомпилено с опцией RADIX_MPATH, добавлено 4 default gw. Можно еще добавить к каждому default gw вес, но у меня роутер с этим вылетает в корку...
Я все так настраивал, что бы не заморачиваться с IP, используя имена ифейсов.