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

Исходное сообщение
"/proc/net/tcp"

Отправлено Maxim , 08-Авг-03 20:23 
В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы хотел получить в добавок к этому информацию о том,  кто являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую информацию?

Содержание

Сообщения в этом обсуждении
"/proc/net/tcp"
Отправлено DogEater , 09-Авг-03 00:29 
>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>хотел получить в добавок к этому информацию о том,  кто
>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>информацию?

по портам?


"/proc/net/tcp"
Отправлено Maxim , 11-Авг-03 16:05 
>>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>>хотел получить в добавок к этому информацию о том,  кто
>>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>>информацию?
>
>по портам?

Не понял :-( По каким портам?
На сервере некая прога открыла порт 34277
к ней приконнектились.
Она не многопоточная и больше листенов нет, т.е. может быть только одно соединение. Вот как по факту узнать, что именно к ней коннектились, а не она?


"/proc/net/tcp"
Отправлено gennady , 09-Авг-03 00:56 
>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>хотел получить в добавок к этому информацию о том,  кто
>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>информацию?
man netstat

"/proc/net/tcp"
Отправлено Maxim , 11-Авг-03 16:07 
>>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>>хотел получить в добавок к этому информацию о том,  кто
>>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>>информацию?
>man netstat


И что он даст? Думаешь не курил? нетстат необходимой мне информацией не обладает. Он показывает текущие соединения (как раз из /proc/net/tcp, udp и т.д. берет), но вот кто это соединение устанавливал и в какую сторону он не знает :-(((


"/proc/net/tcp"
Отправлено Михаил , 11-Авг-03 17:35 
>но вот кто это соединение устанавливал и в какую
>сторону он не знает :-(((

попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)


"/proc/net/tcp"
Отправлено Maxim , 11-Авг-03 17:40 
>>но вот кто это соединение устанавливал и в какую
>>сторону он не знает :-(((
>
>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)

Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне ничего не покажет. Им надо смотреть в момент установки соединения а не постфактум.


"/proc/net/tcp"
Отправлено DogEater , 11-Авг-03 18:23 
я чего-то не пойму. ты не знаешь какие сервисы у тебя на машине запущены?
по любому на портах <1024 висят общеизвестные сервисы отсюда и надо плясать
все снаружи лезут именно по этим портам на твой ip. А дальше обычная фильтрация по твоему ip



"/proc/net/tcp"
Отправлено Maxim , 11-Авг-03 20:03 
>я чего-то не пойму. ты не знаешь какие сервисы у тебя на
>машине запущены?
>по любому на портах <1024 висят общеизвестные сервисы отсюда и надо плясать
>
>все снаружи лезут именно по этим портам на твой ip. А дальше
>обычная фильтрация по твоему ip

Ж-)))
Юзвер, допустим, написал CGI скрипт, который пошел наружу и к кому-нибудь приконнектился или наоборот.
И это будут порты точно выше 1024. Вот я и хочу суметь узнать, видя соединение, в какую сторону оно было произведено.


"/proc/net/tcp"
Отправлено Parish , 11-Авг-03 21:54 
настрой файрвол, и подобные вопросы просто отпадут

"/proc/net/tcp"
Отправлено Maxim , 12-Авг-03 16:08 
>настрой файрвол, и подобные вопросы просто отпадут

Мне не надо ЗАПРЕЩАТЬ. Мне надо просто знать. Файрвол здесь только подойдет для создания логов, которые потом придется изучать. Опять же не лучшее решение. Далеко не лучшее :-( Я надеялся, что все-таки линух обладает некой историей соединения и можно в любой момент о существующем ESTABLISHED соединении узнать в какую сторону оно устанавливалось.


"/proc/net/tcp"
Отправлено Parish , 12-Авг-03 19:32 
если ЗАПРЕТИТЬ левые коннекты, то ты узнаешь что хочешь по номеру локального порта.
прим. если разрешены входящие соединения только на 21 и 80 порты, соответственно все другие исходящие
и не придется изобретать велосипед

"/proc/net/tcp"
Отправлено Maxim , 12-Авг-03 19:46 
>если ЗАПРЕТИТЬ левые коннекты, то ты узнаешь что хочешь по номеру локального
>порта.
>прим. если разрешены входящие соединения только на 21 и 80 порты, соответственно
>все другие исходящие
>и не придется изобретать велосипед

Опять же. Ну НЕЛЬЗЯ запрещать. Сии коннекты крайне нужны. Надо иметь возможность получать о них информацию, но НЕ ЗАПРЕЩАТЬ. Не говоря уже о множестве причин можно привести элементарную - пассив мод у фтп должен работать.


"/proc/net/tcp"
Отправлено Parish , 12-Авг-03 22:53 
тогда проще подправить исходники...



"/proc/net/tcp"
Отправлено Maxim , 13-Авг-03 16:03 
>тогда проще подправить исходники...


Да нет проблем.
Только похоже, что придется править исходники ядра :-( А вот этим заниматься не хотелось бы.


"/proc/net/tcp"
Отправлено sergio_nsk , 12-Авг-03 06:56 
Чувак, тебе сказали же еще в первом сообщении man netstat. Всю необходимую  информацию, о которой ты здесь кричишь, netstat выдаёт.

"/proc/net/tcp"
Отправлено Maxim , 12-Авг-03 16:15 
>Чувак, тебе сказали же еще в первом сообщении man netstat. Всю необходимую
> информацию, о которой ты здесь кричишь, netstat выдаёт.

Я, вроде, не кричал :-/ Да и не "чувак" вовсе.
А на счет нетстата, все предельно просто. Он работает с файлами /proc/net/tcp, /proc/net/udp, /proc/net/raw и т.д. По инодам смотрит какие программы владеют соединениями. Короче, алгоритм его прост и я тебе сам напишу нетстат за пару часов, что в свое время и делал. Но ни я, ни нетстат не может сказать по любому соединению, которое в данный момент времени ESTABLISHED кем оно устанавливалось. Вернее кем он знает (локальный и удаленный адреса), но вот в какую сторону... Кто был клиентом, а кто сервером? Кто к кому коннектился? Те, кто поняли мой вопрос, про нетстат даже не заикались.
Видимо, все-таки необходимая мне информация линухом нигде не хранится, поэтому и нетстат здесь не помошник и единственный путь, как здесь и писали, это пользоваться файрволом или tcpdump'ом, а потом каждый раз разбирать логи и искать кто же два часа назад устанавливал соединение, локальный адрес или удаленный.
В любом случае, спасибо за попытки помочь мне в моем вопросе. Если узнаете что-то еще, дайте мне, пожалуйста, знать.


"/proc/net/tcp"
Отправлено Михаил , 11-Авг-03 18:31 
>>>но вот кто это соединение устанавливал и в какую
>>>сторону он не знает :-(((
>>
>>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)
>
>Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне
>ничего не покажет. Им надо смотреть в момент установки соединения а
>не постфактум.
так что мешает поставить его в автозапуск с записью результатов в файл?
и что-то я не припомню, чтобы стек tcp/ip хранил информацию об инициаторе установления соединения...



"/proc/net/tcp"
Отправлено Maxim , 11-Авг-03 20:02 
>>>>но вот кто это соединение устанавливал и в какую
>>>>сторону он не знает :-(((
>>>
>>>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)
>>
>>Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне
>>ничего не покажет. Им надо смотреть в момент установки соединения а
>>не постфактум.
>так что мешает поставить его в автозапуск с записью результатов в файл?
>

Это очень кривой способ :-((( Конечно как вариант подходит, но не хотелось бы нагружать машину лишними действиями, логами и т.д. которые происходят постоянно

>и что-то я не припомню, чтобы стек tcp/ip хранил информацию об инициаторе
>установления соединения...



"/proc/net/tcp"
Отправлено DogEater , 11-Авг-03 23:09 
тогда файрвол, смотреть syn пакеты в логе.

"/proc/net/tcp"
Отправлено Maxim , 12-Авг-03 16:16 
>тогда файрвол, смотреть syn пакеты в логе.

Тоже не круто. Очень большие проблемы с производительностью будут на машине, где устанавливается несколько миллионов коннектов в сутки :-(

Но похоже, действительно, другого способа нет :-(


"/proc/net/tcp"
Отправлено DogEater , 13-Авг-03 16:11 
>>тогда файрвол, смотреть syn пакеты в логе.
>
>Тоже не круто. Очень большие проблемы с производительностью будут на машине, где
>устанавливается несколько миллионов коннектов в сутки :-(
>
>Но похоже, действительно, другого способа нет :-(


не так уж это и страшно
для производительности важно сколько обрабатывается соединительных пакетов в единицу времени
на фоне того, что у тебя ВСЕ пакеты должны обрабатываться файрволом это не даст(имХо) особого падения производительности


"/proc/net/tcp"
Отправлено Maxim , 13-Авг-03 18:18 
>>>тогда файрвол, смотреть syn пакеты в логе.
>>
>>Тоже не круто. Очень большие проблемы с производительностью будут на машине, где
>>устанавливается несколько миллионов коннектов в сутки :-(
>>
>>Но похоже, действительно, другого способа нет :-(
>
>
>не так уж это и страшно
>для производительности важно сколько обрабатывается соединительных пакетов в единицу времени
>на фоне того, что у тебя ВСЕ пакеты должны обрабатываться файрволом это
>не даст(имХо) особого падения производительности
Ты прав. НО! Лишние обращения к диску файрволом (лог то писать надо) и потом обработка этого лога моей софтиной (в поисках момента соединения) уже ОЧЕНЬ сильно догрузят