URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 70121
[ Назад ]

Исходное сообщение
"проблемы с ipfw pipe"

Отправлено TeSemka , 08-Ноя-06 23:09 
Здравствуйте Уважаемые коллеги!

Система: FreeBSD 6.1-RELEASE-p10

Машина нарезает канал примерно 400м рабочим станциям.
На внутрисетевом интерфейсе висит большое количество alias'ов для логического разделения сети.
Всё работает хорошо, кроме одного момента ip адреса оканчивающиеся на .2 работают не правильно. Тоесть в pipe они попадают но у них пинг в любую точку описанную правилом выше чем у _ВСЕХ_ остальных ip адресов. Для примера у IP XXX.XXX.7.60 пинг на ya.ru 130-160 ms, а в тоже время с IP 7.2 уже 3000-4000 ms!
Уже экспериментировал с параметром queue но результатов не дало.

Маскарада на машине нет. Проблемы точно в pipe механизме.

Из системных переменных отмечу net.inet.ip.fw.one_pass=0

Пользовательские правила создаются примерно по такому шаблону:

ipfw add $i_pipe_num pipe $i_pipe_num all from table'($to_from)' to table'($group_count, $tariff_num)' via $ext_if
ipfw pipe $i_pipe_num config mask dst-ip 0x000000ff bw $pipe_i$unit

В dmesg валится постоянно одно и тоже сообщение:
ipfw: ouch!, skip past end of rules, denying packet

Читал, что это проблема в ipfw но нормального ответа на этот вопрос я не нашел.

Сразу извинюсь за может большое количество, может быть лишней, информации но очень хотелось бы получить помощь не только от людей с телепатическими возможностями. :)

Вот кусок правил (те что работают pipe) с комментариями:

# правила отвечающие за раздачу Локальных ресурсов:
# каждое правило это тариф.
# одна (table(1,X)) таблица это клиентские IP адреса, а вторая это точки назначения
# (table(101))
####################################################

02033        0           0 pipe 2033 ip from table(101) to table(1,17) via net0
02034        0           0 pipe 2034 ip from table(1,17) to table(101) via net0
02035        0           0 pipe 2035 ip from table(101) to table(1,18) via net0
02036        0           0 pipe 2036 ip from table(1,18) to table(101) via net0
02037        0           0 pipe 2037 ip from table(101) to table(1,19) via net0
02038        0           0 pipe 2038 ip from table(1,19) to table(101) via net0
02039        0           0 pipe 2039 ip from table(101) to table(1,20) via net0
02040        0           0 pipe 2040 ip from table(1,20) to table(101) via net0
02041   434184   553087215 pipe 2041 ip from table(101) to table(1,21) via net0
02042   250478    14832639 pipe 2042 ip from table(1,21) to table(101) via net0
02043       36        3204 pipe 2043 ip from table(101) to table(1,22) via net0
02044       36        3348 pipe 2044 ip from table(1,22) to table(101) via net0
02045        0           0 pipe 2045 ip from table(101) to table(1,23) via net0
02046        0           0 pipe 2046 ip from table(1,23) to table(101) via net0
02047  9548313 11227671590 pipe 2047 ip from table(101) to table(1,24) via net0
02048  4840034   320368683 pipe 2048 ip from table(1,24) to table(101) via net0
02049        0           0 pipe 2049 ip from table(101) to table(1,25) via net0
02050        0           0 pipe 2050 ip from table(1,25) to table(101) via net0
02059        0           0 pipe 2059 ip from table(101) to table(1,30) via net0
02060        0           0 pipe 2060 ip from table(1,30) to table(101) via net0
02069      428       29349 pipe 2069 ip from table(101) to table(1,35) via net0
02070      322       14313 pipe 2070 ip from table(1,35) to table(101) via net0
02079       39        3510 pipe 2079 ip from table(101) to table(1,40) via net0
02080       39        3552 pipe 2080 ip from table(1,40) to table(101) via net0
# общее ограничение (в этом направлении) для пользователей
02499  5090890   335221529 pipe 2499 ip from table(1) to table(101) via net0
02500  9981737 11778936312 pipe 2500 ip from table(101) to table(1) via net0

# разрешаем доступ этим адресам по этим направлениям

02533        0           0 allow ip from table(101) to table(1,17) via net0
02534        0           0 allow ip from table(1,17) to table(101) via net0
02535        0           0 allow ip from table(101) to table(1,18) via net0
02536        0           0 allow ip from table(1,18) to table(101) via net0
02537        0           0 allow ip from table(101) to table(1,19) via net0
02538        0           0 allow ip from table(1,19) to table(101) via net0
02539        0           0 allow ip from table(101) to table(1,20) via net0
02540        0           0 allow ip from table(1,20) to table(101) via net0
02541   432962   551284525 allow ip from table(101) to table(1,21) via net0
02542   250478    14832639 allow ip from table(1,21) to table(101) via net0
02543       36        3204 allow ip from table(101) to table(1,22) via net0
02544       36        3348 allow ip from table(1,22) to table(101) via net0
02545        0           0 allow ip from table(101) to table(1,23) via net0
02546        0           0 allow ip from table(1,23) to table(101) via net0
02547  9548304 11227658658 allow ip from table(101) to table(1,24) via net0
02548  4840034   320368683 allow ip from table(1,24) to table(101) via net0
02549        0           0 allow ip from table(101) to table(1,25) via net0
02550        0           0 allow ip from table(1,25) to table(101) via net0
02559        0           0 allow ip from table(101) to table(1,30) via net0
02560        0           0 allow ip from table(1,30) to table(101) via net0
02569      428       29349 allow ip from table(101) to table(1,35) via net0
02570      322       14313 allow ip from table(1,35) to table(101) via net0
02579       39        3510 allow ip from table(101) to table(1,40) via net0
02580       39        3552 allow ip from table(1,40) to table(101) via net0

# тут нарезаю/разрешаю доступ для пользователей в городскую сеть

03013   304820   181106920 pipe 3013 ip from table(102) to table(2,7) via net0
03014   390001   385522709 pipe 3014 ip from table(2,7) to table(102) via net0
03015  1045070   415191959 pipe 3015 ip from table(102) to table(2,8) via net0
03016  1640117   724526717 pipe 3016 ip from table(2,8) to table(102) via net0
03017     2091      539430 pipe 3017 ip from table(102) to table(2,9) via net0
03018     2757      399914 pipe 3018 ip from table(2,9) to table(102) via net0
03027        0           0 pipe 3027 ip from table(102) to table(2,14) via net0
03028        0           0 pipe 3028 ip from table(2,14) to table(102) via net0
03029        0           0 pipe 3029 ip from table(102) to table(2,15) via net0
03030        0           0 pipe 3030 ip from table(2,15) to table(102) via net0
03031        0           0 pipe 3031 ip from table(102) to table(2,16) via net0
03032        0           0 pipe 3032 ip from table(2,16) to table(102) via net0
03075        4         624 pipe 3075 ip from table(102) to table(2,38) via net0
03076        6         936 pipe 3076 ip from table(2,38) to table(102) via net0
# общий pipe
03499  2032480  1110248024 pipe 3499 ip from table(2) to table(102) via net0
03500  1351843   596720742 pipe 3500 ip from table(102) to table(2) via net0
# allow'ы
03513   304816   181102363 allow ip from table(102) to table(2,7) via net0
03514   389997   385518348 allow ip from table(2,7) to table(102) via net0
03515  1045070   415191959 allow ip from table(102) to table(2,8) via net0
03516  1639804   724334537 allow ip from table(2,8) to table(102) via net0
03517     2091      539430 allow ip from table(102) to table(2,9) via net0
03518     2757      399914 allow ip from table(2,9) to table(102) via net0
03527        0           0 allow ip from table(102) to table(2,14) via net0
03528        0           0 allow ip from table(2,14) to table(102) via net0
03529        0           0 allow ip from table(102) to table(2,15) via net0
03530        0           0 allow ip from table(2,15) to table(102) via net0
03531        0           0 allow ip from table(102) to table(2,16) via net0
03532        0           0 allow ip from table(2,16) to table(102) via net0
03575        4         624 allow ip from table(102) to table(2,38) via net0
03576        6         936 allow ip from table(2,38) to table(102) via net0

04019    18277    19944582 pipe 4019 ip from table(103) to table(3,10) via net0
04020    15709      731880 pipe 4020 ip from table(3,10) to table(103) via net0
04021    34570    11026586 pipe 4021 ip from table(103) to table(3,11) via net0
04022    36360     1629496 pipe 4022 ip from table(3,11) to table(103) via net0
04023    77957    16488620 pipe 4023 ip from table(103) to table(3,12) via net0
04024    86950     7427656 pipe 4024 ip from table(3,12) to table(103) via net0
04025    45655    12336825 pipe 4025 ip from table(103) to table(3,13) via net0
04026    72489     4768895 pipe 4026 ip from table(3,13) to table(103) via net0
04061        0           0 pipe 4061 ip from table(103) to table(3,31) via net0
04062        0           0 pipe 4062 ip from table(3,31) to table(103) via net0
04063        0           0 pipe 4063 ip from table(103) to table(3,32) via net0
04064        0           0 pipe 4064 ip from table(3,32) to table(103) via net0
04065    22985     6289907 pipe 4065 ip from table(103) to table(3,33) via net0
04066    25398     1635562 pipe 4066 ip from table(3,33) to table(103) via net0
04067     4776      216641 pipe 4067 ip from table(103) to table(3,34) via net0
04068     8655     8001024 pipe 4068 ip from table(3,34) to table(103) via net0
04071        0           0 pipe 4071 ip from table(103) to table(3,36) via net0
04072        0           0 pipe 4072 ip from table(3,36) to table(103) via net0
# общий pipe
04499   245512    24190940 pipe 4499 ip from table(3) to table(103) via net0
04500   204186    66285946 pipe 4500 ip from table(103) to table(3) via net0
# allow'ы
04519    18274    19940082 allow ip from table(103) to table(3,10) via net0
04520    15709      731880 allow ip from table(3,10) to table(103) via net0
04521    34570    11026586 allow ip from table(103) to table(3,11) via net0
04522    36360     1629496 allow ip from table(3,11) to table(103) via net0
04523    77957    16488620 allow ip from table(103) to table(3,12) via net0
04524    86950     7427656 allow ip from table(3,12) to table(103) via net0
04525    45655    12336825 allow ip from table(103) to table(3,13) via net0
04526    72488     4768836 allow ip from table(3,13) to table(103) via net0
04561        0           0 allow ip from table(103) to table(3,31) via net0
04562        0           0 allow ip from table(3,31) to table(103) via net0
04563        0           0 allow ip from table(103) to table(3,32) via net0
04564        0           0 allow ip from table(3,32) to table(103) via net0
04565    22985     6289907 allow ip from table(103) to table(3,33) via net0
04566    25398     1635562 allow ip from table(3,33) to table(103) via net0
04567     4776      216641 allow ip from table(103) to table(3,34) via net0
04568     8655     8001024 allow ip from table(3,34) to table(103) via net0
04571        0           0 allow ip from table(103) to table(3,36) via net0
04572        0           0 allow ip from table(3,36) to table(103) via net0

# в инет

05001    42690     9569367 pipe 5001 ip from any to table(4,1) via net0
05002    53503     2652916 pipe 5002 ip from table(4,1) to any via net0
05003        0           0 pipe 5003 ip from any to table(4,2) via net0
05004        0           0 pipe 5004 ip from table(4,2) to any via net0
05005        0           0 pipe 5005 ip from any to table(4,3) via net0
05006        0           0 pipe 5006 ip from table(4,3) to any via net0
05073        0           0 pipe 5073 ip from any to table(4,37) via net0
05074        0           0 pipe 5074 ip from table(4,37) to any via net0
05077      562      124243 pipe 5077 ip from any to table(4,39) via net0
05078      527       30680 pipe 5078 ip from table(4,39) to any via net0
# общий pipe
05499    54028     2683516 pipe 5499 ip from table(4) to any via net0
05500    43244     9688809 pipe 5500 ip from any to table(4) via net0
# allow'ы
05501    42684     9564733 allow ip from any to table(4,1) via net0
05502    53503     2652916 allow ip from table(4,1) to any via net0
05503        0           0 allow ip from any to table(4,2) via net0
05504        0           0 allow ip from table(4,2) to any via net0
05505        0           0 allow ip from any to table(4,3) via net0
05506        0           0 allow ip from table(4,3) to any via net0
05573        0           0 allow ip from any to table(4,37) via net0
05574        0           0 allow ip from table(4,37) to any via net0
05577      562      124243 allow ip from any to table(4,39) via net0
05578      527       30680 allow ip from table(4,39) to any via net0


06007   644687   529419298 pipe 6007 ip from any to table(5,4) via net0
06008   658705   109312552 pipe 6008 ip from table(5,4) to any via net0
06009   217803   156638988 pipe 6009 ip from any to table(5,5) via net0
06010   230471   105006376 pipe 6010 ip from table(5,5) to any via net0
06011     9335    11383991 pipe 6011 ip from any to table(5,6) via net0
06012     8387      775868 pipe 6012 ip from table(5,6) to any via net0
# общий pipe
06499   883052   206372104 pipe 6499 ip from table(5) to any via net0
06500   861477   690529651 pipe 6500 ip from any to table(5) via net0
# allow'ы
06507   640190   525905927 allow ip from any to table(5,4) via net0
06508   658511   109283173 allow ip from table(5,4) to any via net0
06509   211971   153241253 allow ip from any to table(5,5) via net0
06510   216179    96316765 allow ip from table(5,5) to any via net0
06511     9335    11383991 allow ip from any to table(5,6) via net0
06512     8387      775868 allow ip from table(5,6) to any via net0

07051   145031   129172034 pipe 7051 ip from any to table(6,26) via net0
07052   153758    26143230 pipe 7052 ip from table(6,26) to any via net0
07053   132921    72372399 pipe 7053 ip from any to table(6,27) via net0
07054   147915    21095737 pipe 7054 ip from table(6,27) to any via net0
07055   342634   273967515 pipe 7055 ip from any to table(6,28) via net0
07056   371688    62612977 pipe 7056 ip from table(6,28) to any via net0
07057   518920   318289036 pipe 7057 ip from any to table(6,29) via net0
07058   594290   138006994 pipe 7058 ip from table(6,29) to any via net0
# общий pipe
07499  1266600   247424217 pipe 7499 ip from table(6) to any via net0
07500  1131357   787842142 pipe 7500 ip from any to table(6) via net0
# allow'ы
07551   140329   125783942 allow ip from any to table(6,26) via net0
07552   153413    25944659 allow ip from table(6,26) to any via net0
07553   132413    71842076 allow ip from any to table(6,27) via net0
07554   147841    21073241 allow ip from table(6,27) to any via net0
07555   340434   272420239 allow ip from any to table(6,28) via net0
07556   371247    62517588 allow ip from table(6,28) to any via net0
07557   518251   317822644 allow ip from any to table(6,29) via net0
07558   594190   137903142 allow ip from table(6,29) to any via net0
65534    12545     1323002 deny ip from any to any
####################################################


Заранее спасибо. С Ув.


Содержание

Сообщения в этом обсуждении
"проблемы с ipfw pipe"
Отправлено NoName , 09-Ноя-06 08:22 
Ознакомтесь с этим: http://docs.freebsd.org/mail/archive/2004/freebsd-ipfw/20040...

MyHomePage - http://surgutnet.ru


"проблемы с ipfw pipe"
Отправлено TeSemka , 09-Ноя-06 11:18 
>Ознакомтесь с этим: http://docs.freebsd.org/mail/archive/2004/freebsd-ipfw/20040...
>
>MyHomePage - http://surgutnet.ru


Перевёл one_pass=1, существенно упростив логику правил.

Но всё равно! IP .2 - работает с дикими проблемами, а .60 работает идеально...
Хотя находятся в одном и том-же правиле.

На пример, машина за этим роутером у 60 пингуется 2-5 ms, а когда я себе ставлю IP .2 то пинг на этуже машину уже 3000-4000 ms! :((

Чтож это такое? :(


"проблемы с ipfw pipe"
Отправлено Deac , 09-Ноя-06 16:02 
>>Ознакомтесь с этим: http://docs.freebsd.org/mail/archive/2004/freebsd-ipfw/20040...
>>
>>MyHomePage - http://surgutnet.ru
>
>
>Перевёл one_pass=1, существенно упростив логику правил.
>
>Но всё равно! IP .2 - работает с дикими проблемами, а .60
>работает идеально...
>Хотя находятся в одном и том-же правиле.
>
>На пример, машина за этим роутером у 60 пингуется 2-5 ms, а
>когда я себе ставлю IP .2 то пинг на этуже машину
>уже 3000-4000 ms! :((
>
>Чтож это такое? :(

1. Убедиться в прохождении пингов без firewall-а. :)
2. В пайпах добавить in/out.
3. ВНИМАТЕЛЬНО посмотреть не попадает ли ".2" в ненужные table, проверить маски, диапазоны адресов, если есть.
4. Если ничего не помогает добавить log к каждому правилу и смотреть прохождение пакета построчно :(


"проблемы с ipfw pipe"
Отправлено TeSemka , 09-Ноя-06 17:10 
>1. Убедиться в прохождении пингов без firewall-а. :)
>2. В пайпах добавить in/out.
>3. ВНИМАТЕЛЬНО посмотреть не попадает ли ".2" в ненужные table, проверить маски,
>диапазоны адресов, если есть.
>4. Если ничего не помогает добавить log к каждому правилу и смотреть
>прохождение пакета построчно :(

1. Без правил в firewall'е или если сразу попадает в allow без pipe'ов. То работает нормально.
2. Добавил.
3. Уже пересмотрел всё по 10 раз. 2 IP адреса находятся в одних и тех-же таблицах! Больше их нет не где, не в одной таблице.
Pip'ы конфигурируются вот так:
Для входящих pipов
config mask dst-ip 0x000000ff bw $pipe_i$unit queue 100k

Для исходящих pipов
config mask src-ip 0x000000ff bw $pipe_o$unit queue 100k

Параметр queue крутил уже по всякому. Но сразу видно проблема не в нём ибо от его значения изменяется "качество" работы для других адресов проходящих через этот pipe. Но для ".2" всё остается по прежнему плохо.

Самое странное, что это наблюдается для всех ".2" адресов. :(

Не уж-то это такой редкий баг в ipfw? или я что не понимаю в его логике... :(

Спасибо за ответы, проблема имхо интересная, буду копать дальше.


"проблемы с ipfw pipe"
Отправлено TeSemka , 13-Дек-06 16:11 

Проблема была в параметре mask для моего количество подсетей данная маска не работает.