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

Исходное сообщение
"Как убить соединения в ifpw?"

Отправлено Radio , 07-Ноя-08 10:37 
Есть вот такое правило:

ipfw add pass ip from table(1) to any via xl0

В table 1 добавляются разные IP адреса и всё работает нормально.

Проблема состоит в том что, когда я удаляю IP адрес из table 1 - ipfw продолжает пропускать пакеты на уже установленные соединяния для этого IP адреса, при этом новые соединения невозможны.

Вопрос как убивать действующие соединения на адреса которые не присутствуют в table 1?

Спасибо


Содержание

Сообщения в этом обсуждении
"Как убить соединения в ifpw?"
Отправлено butcher , 07-Ноя-08 13:10 
>[оверквотинг удален]
>ipfw add pass ip from table(1) to any via xl0
>
>В table 1 добавляются разные IP адреса и всё работает нормально.
>
>Проблема состоит в том что, когда я удаляю IP адрес из table
>1 - ipfw продолжает пропускать пакеты на уже установленные соединяния для
>этого IP адреса, при этом новые соединения невозможны.
>
>Вопрос как убивать действующие соединения на адреса которые не присутствуют в table
>1?

Если правило действительно такое как у вас написано, то обмен с этим адресом должен прекращаться. По крайней мере, с его стороны точно. Если вам хочется прекратить передачу и в его сторону, то добавьте правило:
ipfw add pass ip from any to table(1) via xl0

Тогда при удалении адреса из таблицы обмен будет прекращаться в обе стороны (конечно, если после этих правил стоит запрещающее правило).


"Как убить соединения в ifpw?"
Отправлено Radio , 07-Ноя-08 13:23 
Тогда уж скорее

ipfw add DENY ip from any to table(1) без via

Но в этом случае заблокируются все кто находится в table(1), а мне это не нужно.

>Если правило действительно такое как у вас написано, то обмен с этим
>адресом должен прекращаться. По крайней мере, с его стороны точно. Если
>вам хочется прекратить передачу и в его сторону, то добавьте правило:
>
>ipfw add pass ip from any to table(1) via xl0
>
>Тогда при удалении адреса из таблицы обмен будет прекращаться в обе стороны
>(конечно, если после этих правил стоит запрещающее правило).


"Как убить соединения в ifpw?"
Отправлено Anatoliy , 07-Ноя-08 14:11 
>[оверквотинг удален]
>В table 1 добавляются разные IP адреса и всё работает нормально.
>
>Проблема состоит в том что, когда я удаляю IP адрес из table
>1 - ipfw продолжает пропускать пакеты на уже установленные соединяния для
>этого IP адреса, при этом новые соединения невозможны.
>
>Вопрос как убивать действующие соединения на адреса которые не присутствуют в table
>1?
>
>Спасибо

Доброго дня.

Попробуйте tcpdrop


"Как убить соединения в ifpw?"
Отправлено Radio , 09-Ноя-08 11:10 
tcpdrop требует номера портов, которых я не знаю, мне просто надо убить все established соединения на указанный IP адрес

>Попробуйте tcpdrop


"Как убить соединения в ifpw?"
Отправлено Pahanivo , 07-Ноя-08 17:47 
скорей всего ранее идет правило которое например разрешает все established или типа того
проще всего ПЕРЕД этим парвилом, а лучше в начали заводим

ipfw add DENY ip from table(2) to any via xl0

и сразу после удаления заносим айпи в таблицу номер 2
сработает гарантированно и tcp connect по таймауты порвется


"Как убить соединения в ifpw?"
Отправлено Radio , 09-Ноя-08 11:12 
Попробовал.

После того как удаляешь IP из table 2 - все его предыдущие соединения восстанавливаются (ICQ, Skype).
Постоянно держать айпи в бане - невозможно.

Я ищу аналог pfctl -K

Неужели ipfw такой тупой? =))

Не хотелось менять правила с established, а наверное придётся.

>скорей всего ранее идет правило которое например разрешает все established или типа
>того
>проще всего ПЕРЕД этим парвилом, а лучше в начали заводим
>
>ipfw add DENY ip from table(2) to any via xl0
>
>и сразу после удаления заносим айпи в таблицу номер 2
>сработает гарантированно и tcp connect по таймауты порвется


"Как убить соединения в ifpw?"
Отправлено Radio , 09-Ноя-08 12:21 
Пришлось всё-таки заменить:

${fwcmd} add pass tcp from any to any established

На целый ряд правил:

${fwcmd} add pass tcp from me to any established
${fwcmd} add pass tcp from any to me established

${fwcmd} add pass tcp from table(1) to any established via $int_if
${fwcmd} add pass tcp from any to table(1) established

#${fwcmd} add pass tcp from not table(1) to $me_int established via $int_if
#${fwcmd} add pass tcp from me to not table(1) established via $int_if

Проблема решена.