Инструменты пользователя

Инструменты сайта


balansirovka_nagruzki_isxodjaschego_trafika_mezhdu_dvumja_i_bolee_vneshnimi_kanalami_internet

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

balansirovka_nagruzki_isxodjaschego_trafika_mezhdu_dvumja_i_bolee_vneshnimi_kanalami_internet [2009/11/08 11:28] (текущий)
Строка 1: Строка 1:
 +====== Балансировка нагрузки исходящего трафика между двумя и более внешними каналами ======
 +Оригинал:​ [[http://​house.hcn-strela.ru/​BSDCert/​BSDA-course/​apcs02.html|C.2.2.5.3. Балансировка нагрузки исходящего трафика]]
 +
 +Пулы адресов могут использоваться для балансировки нагрузки между двумя и более внешними каналами с использованием опции route-to в случае невозможности организовать динамическую маршрутизацию (например,​ с использованием протокола [[BGP]]4). Совместное использование route-to ​ и пула адресов round-robin ​ позволяет распределить исходящие соединения между разными провайдерами.
 +
 +В качестве дополнительной информации необходимо указать адреса маршрутизаторов для каждого Интернет-соединения. Это нужно для опции **route-to**,​ дабы управлять исходящими пакетами.
 +
 +Следующий пример иллюстрирует балансировку нагрузки между двумя каналами:​
 +<​code>​
 +lan_net = "​192.168.0.0/​24"​
 +int_if ​ = "​dc0"​
 +ext_if1 = "​fxp0"​
 +ext_if2 = "​fxp1"​
 +ext_gw1 = "​68.146.224.1"​
 +ext_gw2 = "​142.59.76.1"​
 +
 +pass in on $int_if route-to \
 +   { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
 +   from $lan_net to any keep state
 +</​code>​
 +Опция route-to используется для приёма трафика на внутреннем интерфейсе и назначения ему внешнего сетевого интерфейса и шлюза, таким образом обеспечивая балансировку. Обратите внимание,​ что опция route-to должна быть указана в каждом правиле,​ предназначенном для балансировки трафика. Ответные пакеты приходят на тот интерфейс,​ с которого ушёл запрос и они будут перенаправлены во внутрь как обычно.
 +
 +Для гарантии того, что пакеты с $ext_if1 всегда направляются к $ext_gw1 (и соответственно для $ext_if2 к $ext_gw2), в правилах можно указать следующее:​
 +<​code>​
 +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
 +</​code>​
 +====== 2 ======
 +  * Пример настройки PF для балансировка нагрузки исходящего трафика
 +Пулы адресов могут использоваться для балансировки нагрузки между двумя и более внешними каналами с использованием опции route-to в случае невозможности организовать динамическую маршрутизацию (например,​ с использованием протокола BGP4). Совместное использование route-to и пула адресов round-robin исходящие соединения могут быть распределены между разными провайдерами.
 +
 +В качестве дополнительной информации необходимо указать адреса маршрутизаторов для каждого Интернет-соединения. Это необходимо для опции route-to, дабы управлять исходящими пакетами.
 +
 +Этот пример покажет нам балансировку нагрузки между двумя каналами:​
 +<​code>​
 +      lan_net = "​192.168.0.0/​24"​
 +      int_if ​ = "​dc0"​
 +      ext_if1 = "​fxp0"​
 +      ext_if2 = "​fxp1"​
 +      ext_gw1 = "​68.146.224.1"​
 +      ext_gw2 = "​142.59.76.1"​
 +
 +      pass in on $int_if route-to \
 +        { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
 +        from $lan_net to any keep state 
 +</​code>​
 +Опция route-to используется для приема трафика на внутреннем интерфейсе и назначения ему внешнего сетевого интерфейса и шлюза, таким образом обеспечивая балансировку. Обратите внимание,​ что опция route-to должна быть указана в каждом правиле,​ предназначенном для балансировки трафика. Ответные пакеты приходят на тот интерфейс,​ с которого ушел запрос и они будут перенаправлены во внутрь как обычно.
 +
 +Для гарантии того, что пакеты с $ext_if1 всегда направляются к $ext_gw1 (и соответственно для $ext_if2 к $ext_gw2), в правилах можно указать следующее:​
 +<​code>​
 +      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
 +</​code>​
 +В заключение хочу сказать,​ что NAT можно использовать на каждом из внешних интерфейсов:​
 +<​code>​
 +      nat on $ext_if1 from $lan_net to any -> ($ext_if1)
 +      nat on $ext_if2 from $lan_net to any -> ($ext_if2)
 +</​code>​
 +Полный пример балансировки исходящего трафика будет выглядеть так:
 +<​code>​
 +      lan_net = "​192.168.0.0/​24"​
 +      int_if ​ = "​dc0"​
 +      ext_if1 = "​fxp0"​
 +      ext_if2 = "​fxp1"​
 +      ext_gw1 = "​68.146.224.1"​
 +      ext_gw2 = "​142.59.76.1"​
 +
 +      #  nat outgoing connections on each internet interface
 +      nat on $ext_if1 from $lan_net to any -> ($ext_if1)
 +      nat on $ext_if2 from $lan_net to any -> ($ext_if2)
 +
 +      #  default deny
 +      block in  from any to any
 +      block out from any to any
 +
 +      #  pass all outgoing packets on internal interface
 +      pass out on $int_if from any to $lan_net
 +      #  pass in quick any packets destined for the gateway itself
 +      pass in quick on $int_if from $lan_net to $int_if
 +      #  load balance outgoing tcp traffic from internal network.
 +      pass in on $int_if route-to \
 +          { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
 +          proto tcp from $lan_net to any flags S/SA modulate state
 +      #  load balance outgoing udp and icmp traffic from internal network
 +      pass in on $int_if route-to \
 +          { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
 +          proto { udp, icmp } from $lan_net to any keep state
 +
 +      #  general "pass out" rules for external interfaces
 +      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
 +
 +      #  route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
 +      #  $ext_if2 and $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
 +
 +
 +</​code>​
  
balansirovka_nagruzki_isxodjaschego_trafika_mezhdu_dvumja_i_bolee_vneshnimi_kanalami_internet.txt · Последние изменения: 2009/11/08 11:28 (внешнее изменение)