|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : mitrohin a.s. 2:5020/400 13 Feb 2008 07:36:41 To : igor.potapenko Subject : Re: pf: quick или не quick ? -------------------------------------------------------------------------------- On Sun, Feb 10, 2008 at 11:41:22PM +0000, igor.potapenko wrote: > On 9 фев, 16:36, "mitrohin a.s." <s...@swp.pp.ru> wrote: > > > так что русскими словами давай. > > у меня проблема такая: пакеты уходят через другие интерфейсы, причём в > огромных количествах. > схема такая: > если работает оба линка, тогда подгружаем anchor allonline, где > раскидывает соединения по коннектам по АДРЕСУ HАЗHАЧЕHИЯ(т.е. пакеты > путататься вообще не должны). если один из каналов лежит, тогда пакеты > уходят как обычно. > почему используюется метод "по адресу назначения", а не round-robin - > из-за ftp. Т.к. я не нашёл способа пробрасывать все соединения до ftp- > сервера через один линк. > С round-robin клиентским машинам приходило f5 жать в 50% случаях > nat from <rfc1918_nets> to <ftp_servers1> -> ($ext1_if) nat from <rfc1918_nets> to <ftp_servers2> -> ($ext2_if) pass in quick on !$ext1_if route-to ($ext1_if $ext1_gate) to <ftp_servers1> keep state tag A1 pass out quick on $ext1_if tagged A1 keep state pass out quick on $ext1_if to <ftp_servers1> keep state pass out quick on !$ext1_if route-to ($ext1_if $ext1_gate) to <ftp_servers1> keep state pass in quick on !$ext2_if route-to ($ext2_if $ext2_gate) to <ftp_servers2> keep state tag A2 pass out quick on $ext2_if tagged A2 keep state pass out quick on $ext2_if to <ftp_servers2> keep state pass out quick on !$ext2_if route-to ($ext2_if $ext2_gate) to <ftp_servers2> keep state > > итак, мой (плохо работающий) конфиг > > > =========== > nat on $ext_if_ext1 from <net_vpn> to any -> $ext_addr_ext1 > nat on $ext_if_ext2 from <net_vpn> to any -> $ext_addr_ext2 > > > > block in all > block out all > > #таблица своих адресов > table <myaddr> > #таблица адресов внутренней сети-пользователей инета > table <net_vpn> > > #anchor in > pass in quick proto gre from any to any > > pass in quick proto tcp from any to <myaddr> port > {53,80,25,500,143,445,40000:41000} > > pass in quick proto {esp,ipencap} from any to <myaddr> > > > pass in quick proto icmp from any to <myaddr> > > block in quick all > > > #anchor out > > > pass out quick from 192.168.64.1 to <net_vpn> keep state > > pass out quick on $ext_if_ext2 route-to ($ext_if_ext1 > $ext_addr_ext1_peer) from $ext_addr_ext1 to any > pass out quick on $ext_if_ext1 route-to ($ext_if_ext2 > $ext_addr_ext2_peer) from $ext_addr_ext2 to any > > > pass out quick on $ext_if_ext1 proto tcp from any to any flags > S/SA keep state > block out quick on $ext_if_ext1 proto tcp from any to any > pass out quick on $ext_if_ext1 proto {udp,icmp} from any to any keep > state > > pass out quick on $ext_if_ext2 proto tcp from any to any > flags S/SA keep state > block out quick on $ext_if_ext2 proto tcp from any to any > pass out quick on $ext_if_ext2 proto {udp,icmp} from any to any keep > state > > > pass out quick on $int_if_local from <myaddr> to > $int_if_local:network keep state > > block out log quick all > > > #anchor inet > pass in quick log from <net_vpn> to any keep state > > block in quick log all > =========== > много лишнего ;) по написанному списку правил обычно непросто сказать, что хотел автор. > > почитал про tag(в этой теме). пожалуй, перепишу с его использованием, > единственное, в примере: > > nat from $A to any tag IF2_OUT -> ($if2:0) > pass out quick on !$if2 route-to ($if2 $gate2) tagged IF2_OUT keep > state > pass out quick on $if2 tagged IF2_OUT keep state > > разве перед натом на внешнем интерфейсе он правилами не проверяется? > Вероятно, до конца я так и не понял, как проходят правила транзитные > пакеты. > думал, что > 1. соответсвие правилам in $in_if > 2. далее они маршрутизируются ядром.( если в п.1 была опция route-to, > то сохраняется параметры п.1) > 3. смотрятся правила out на $out_if. > 4?. если в п.3 встретилась route-to, то пакет перебрасывается на > другой интерфейс и снова п.3 и так до бесконечности > in-правилами при _входе_ создаётся состояние A <- B, которое будет пропускать ответные пакеты на _выходе_ (B -> A). тут похоже и хранится вся информация, относящаяся к _входящему_ соединению и которая помогает поддерживать обратный _исходящий_ трафик (route-to, reply-to, rdr). этого очевидно недостаточно для транзитного пакета, и ему на _выходе_ нужно другое состояние A -> B, чтобы его выпустили. тут аналогичным образом работают out правила (route-to, reply-to, nat). нет никакой бесконечности. > 5. применяются правила nat > nat и rdr отрабатывают до правил. баз tag это бы выглядело так. nat on net0 all -> (net0) pass in quick from A keep state pass out quick from (net0) keep state > 6? снова проверяется соответсвие правилам, но уже с новым интерфейсом. > > n 4 и 6 - под большим вопросом. > Hо раз конфиги мои работают не так, как я ожидаю, предполагаю, что я > очень сильно заблуждаюсь. > > И это не считая таблицы состояний. > С ней тоже много вопросов. > В ней хранится route-to значение? > imho - все в ней: rdr, nat, route-to, reply-to. > К сожалению, алгоритма разбора правил я так и не нашёл в читаемом > виде. исходники не осилил. > я тоже ;). экспериментировал на стенде. /swp --- ifmail v.2.15dev5.4 * Origin: Barnaul State Pedagogical University InterNetNews site (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/192068292b9d4.html, оценка из 5, голосов 10
|