03.07.2012 17:52, Владислав Продан пишет: >> >>>> Разруливание хоть пяти дефолтов на FreeBSD испокон веков >>>> работает прекрасно через ipfw fwd, проверено длительной практикой. >>> >>> Это очень большой костыль. >> >> Ничего не костыль, обычный policy based routing. > > ipfw fwd требует нетривиальной логики при 4-х и более линков.
Ничего нетривиального, всё масштабируемо на произвольное число линков совершенно однородными правилами. Сначала транслируем исходящий трафик по существующим записям в таблицах NAT, затем транслируем оставшийся неоттранслированным исходящий трафик по таблице маршрутизации, затем через ipfw fwd заворачиваем в правильный канал оттранслированный трафик, который по роутингу идёт "не в тот" канал. >>> Евгений, не хотите ли соорудить патч, чтоб zebra сама могла определять >>> сдохший дефолт и сама играться дефолтами ? :) >> >> bgpd в составе zebra и так прекрасно определяет пропадание дефолта, >> а трекинг внешних каналов активным поллингом (пингами etc.) >> это не функция протоколов маршрутизации и не дело зебры. > > А кто у нас демон маршрутизации как не zebra? Трекинг каналов и классическая динамическая маршрутизация не одно и то же. > Допустим у меня три аплинка. > Я хочу загружать каналы в пропорции 20:30:50 > И при пропадании одного аплинка - 50:50 оставшихся. > > В FreeBSD есть программы умеющие выполнять такую логику? Если каналы независимые, то хоть циску поставьте - задача выдержать пропорции весьма нетривиальна, это я вам говорю как краевед. Мониторинг живости канала без динамической маршрутизации хоть в циске, хоть в FreeBSD, хоть где решается трекингом. На FreeBSD трекинг делается элементарным shell-скриптом с ping -S, который за счёт описанной выше процедуры с ipfw fwd уйдет в нужный канал. Возможно, в портах есть что-то готовое, никогда не искал - скрипт слишком прост.
