всем привет!есть шлюз, на нем два канала в инет и локалка
не получается натить второй канал, один только работает и все, хоть ты тресникоторый не получается натить с внешним ипом
в pf.conf
scrub in all
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)снизу все разрешено
в таблице роутинга два статик роута в подсети провайлеров
деволтовый роут один(первого провайдера), если канал на нем падает, скриптом переключается на резерв.не пойму в чем бок!
помогите дельным советом. заранее благодарен
>scrub in all
>
>nat on $ext_if1 from $lan_net to any -> ($ext_if1)
>nat on $ext_if2 from $lan_net to any -> ($ext_if2)
>в таблице роутинга два статик роута в подсети провайлеров
>деволтовый роут один(первого провайдера), если канал на нем падает, скриптом переключается на
>резерв.этого мало
несмотря на то, что ты маршрут переключил, для ната используется все равно первое правило
а раз ты роут переключаешь на другого провайдера, то к нему приходят пакеты с адресом источника от первого провайдера, в лучшем случае они не вернутся, в худшем провайдер их отфильтрует сразу. Тебе скриптом надо переключать еще и $lan_net
для этого можно использовать таблицынапример так
table <isp1_users> persist { $lan_net }
table <isp2_users> persistnat on $ext_if1 from <isp1_users> to any -> ($ext_if1)
nat on $ext_if2 from <isp2_users> to any -> ($ext_if2)pass in quick route-to ($ext_if1 $isp1_route) from <isp1_users> to any keep state
pass in quick route-to ($ext_if2 $isp2_route) from <isp2_users> to any keep stateи т.д.
таблицами манипулировать можно из скрипта такpfctl -t isp1_users -Tdel 192.168.0.0/16
pfctl -t isp2_users -Tadd 192.168.0.0/16
pfctl -Fs