И так, сам отвечаю на свой вопрос.
Поковорявшись в изложеном мною выше конфиге немного его переделал.
Даже немного перевыполнил задуманое.
Дано:
2 прова.
пров 1: fxp0 шлюз ссс.ссс.ссс.ссс (
онже прописан в дефаултроутер)
пров 2: xl0 шлюз nnn.nnn.nnn.nnn
Файл с списком юаикс сетей.
Значит конфиг умеет:
1. Весь 80 порт шлет через провайдера 2.
2. Все остальные ТСП порты которые направленны в юаикс делает роунд робин. Тоесть сумирует два канала.
3. Все остальные ТСП порты которые направленны НЕ в юаикс идут по дафаулт роутер.
4. udp, icmp которые направленны в юаикс делает роунд робин. Тоесть сумирует два канала.
5. udp, icmp которые НЕ направленны в юаикс пускает через дефаулт.
Собственно теперь сам скрипт.
Прошу раскритиковать и указать на ошибки.lan_net = "10.110.0.0/24"
int_if = "re0"
ext_if1 = "fxp0"
ext_if2 = "xl0"
ext_gw1 = "ссс.ссс.ссс.ссс"
ext_gw2 = "nnn.nnn.nnn.nnn"
table <ua-ix> persist file "/usr/local/nodeny/prefixes.txt"
# nat исходящие соединения на каждый интерфейс Интернета
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)
# pass all исходящие пакеты на внутреннем интерфейсе
pass out on $int_if from any to $lan_net
# pass in quick any пакеты, предназначенные для шлюза itself
pass in quick on $int_if from $lan_net to $int_if
# Принимаем http трафик и пускаем его через шлюз $ext_gw2
pass in on $int_if route-to {($ext_if2 $ext_gw2)} inet proto tcp from $lan_net to !$lan_net port 80 flags S/SA modulate state
# Принимаем остальной трафик и если он направлен в юаикс отправляем через 2 провайдера сразу
pass in on $int_if route-to {($ext_if1 $ext_gw1), (ext_if2 $ext_gw2)} round-robin sticky-address proto {tcp} from $lan_net to <ua-ix> port {1:79 81:65444} flags S/SA modulate s
# Принимаем остальной трафик и если он направлен !!!!!НЕ!!!!! в юаикс отправляем через шлюз $ext_gw1 который прописан в defaultrouter
# Принимаем udp и icmp ели предназначены для юаикса пускаем через два провайдера сразу..
pass in on $int_if route-to {($ext_if1 $ext_gw1), (ext_if2 $ext_gw2) } round-robin sticky-address proto {udp,icmp } from $lan_net to <ua-ix> keep state
# Общие "pass out" правила для внешних интерфейсов
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state
# маршрутизации пакетов с любого IP-адреса на $ext_if1 to $ext_gw1 и та же для $ext_if2 и $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any.
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any