LINUX.ORG.RU

cutter для локальных соединений. или TCPCTL_DROP ioctl для linux


0

0

всем привет
нужно дропать некоторые локальные tcp соединения.
при такой схеме: <internet> --- <linux-router> --- <client-machine>, очень удобно рубать соединения на <linux-router> с помощью cutter
но вот нету <linux-router>, только линуксовый десктоп подключенный к интернету
и нужно на нем закрывать некоторые соединения в некоторый момент времени.
я пробовал использовать технику FIN-ACK-RST, как в пакете cutter ( http://www.lowth.com/cutter/ ), но она не работает на локальных соединениях.
вот во фре есть такой ioctl - TCPCTL_DROP.
думаю сделать так: http://www.mail-archive.com/netdev@vger.kernel.org/msg34803.html (тут один коллега сделал патч для линукса, добавляющий аналогичный ioctl)
отговорите? :)
или посоветуйте красивое решение.

По сколько тут молчание, добавлю переписку с одного irc (мой ник kit2):
------------------------------------------------------
<kornel> kit2, посмотри в сторону снорта. Единственное, сеть должна быть не свитчеванная
<kornel> т-е он должен всё видеть
<kornel> в нем есть возможность закрывать чужие tcp-сессии
<kit2> kornel, ситуация такая: у меня на компе (linux) работают несколько пользователей. мне нужно при определенных обстоятельствах отрубать (просто сбрасывать) все текущие соединения с интернетом какого-нибудь пользователя. я могу найти все соединения с инетом кон
<kit2> кретного пользователя так: lsof -i4TCP -a -u <username> -nP -FnT | grep "^n\|^TST=" | sed s/"^n\|^TST="//g | grep -P "([\d]{1,3}\.){3}[\d]{1,3}:[\d]{1,5}\nESTABLISHED" | grep -v ESTABLISHED | grep -vP " 192\.168\.| 127\." | sed s/"\->\|:"/" "/g
<kit2> отрубать нужно на локальном компе tcp-соединения в интернет.
<kit2> при чем тут "сеть должна быть не свитчеванная" то?
<kornel> немного не понял тебя. думал, что десктопу нужно следить за локальным трафиком.
<kornel> А сбросить все соединения - по событию делаешь iptables -I OUTPUT 1 -m owner --uid-owner <UID> -j DROP на несколько секунд
<kornel> потом удаляешь
<kit2> вот есть пакет такой для linux dsniff, в нем есть утилита tcpkill
<kit2> kithome src # tcpkill
<kit2> Version: 2.4
<kit2> Usage: tcpkill [-i interface] [-1..9] expression
<kit2> когда я делаю tcpkill -i ppp0 host ... and port ... - он говорит: tcpkill: unsupported datalink type
<kit2> tcpkill: couldn't determine link layer offset
<kit2> не хочет работать с ppp :)
<kit2> решение с iptables - ужасно. соединения не сбрасываются, а только лишь запрещается передача трафика. можно конечно сделать -j REJECT --reject-with tcp-reset, но это не гарантирует терминацию соединение.
<kit2> поскольку правило это сработает только когда будет передан хотябы один пакет, удовлетворяющий правилу.
<kit2> а вдруг есть висячие сессии? типа ssh-шное соединение, с которым сейчас не работают.
<kit2> тогда это правило не сбросит соединение.
* baur вышел из IRC (Quit: When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net)
<could> kit2, у тебя нормальные задачи бывают?
<kit2> да :)
<kit2> это очень простая задача
<kit2> просто один умник сказал что в линуксе не должно быть такой команды
<kit2> всмысле ioctl такого не должно быть
<kit2> в этой ветке почитай :) http://www.mail-archive.com/netdev@vger.kernel.org/msg34803.html
<kit2> ладно, ща пропатчу ядро и напишу утилитку, использующую мой ioctl. все.
<kit2> это ведь мое право, принудительно сбрасывать определенные tcp-соединения?
<kit2> я так понимаю.
<kit2> свобода же должна быть?
<kit2> :)
<kit2> From: [EMAIL PROTECTED] (David Griego)
<kit2> Date: Tue, 27 Mar 2007 14:47:54 -0700
<kit2> > Adds an IOCTL for aborting established TCP connections, and is
<kit2> > designed to be an HA performance improvement for cleaning up, failure 
<kit2> > notification, and application termination.
<kit2> > 
<kit2> > Signed-off-by:  David Griego <[EMAIL PROTECTED]>
<kit2> SO_LINGER with a zero linger time plus close() isn't working
<kit2> properly?
<kit2> There is no reason for this ioctl at all.  Either existing
<kit2> facilities provide what you need or what you want is a
<kit2> protocol violation we can't do.
<kit2> Он вот говорит что нет надобности в этом ioctl-вызове. Что типа существуют другие методы сбросить соединение. Но примеров, сука, не приводит.
<kit2> а гугал ваще кроме cutter и tcpkill (из dsniff) ничего не знает.
-------------------------------
смайлик для привлечения внимания: 8-)

apollonx
() автор топика

>я пробовал использовать технику FIN-ACK-RST

Дебиан etch, ettercap работает. Только его надо запускать пока по соединению идут пакеты.

mky ★★★★★
()
Ответ на: комментарий от apollonx

Мда.
Я не сразу до конца осознал что этот этот ioctl не позволит убить "чужое" tcp-соединение. Теперь понял. Нужно еще варианты.
Ettercap конечно штука классная, но опять же, ettercap не сбросит соединение по которому нет передачи данных. он его просто "не заметит". Поэтому возвращаюсь к технике FIN-ACK-RST, используемой в cutter.

apollonx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.