В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы хотел получить в добавок к этому информацию о том, кто являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую информацию?
>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>хотел получить в добавок к этому информацию о том, кто
>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>информацию?по портам?
>>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>>хотел получить в добавок к этому информацию о том, кто
>>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>>информацию?
>
>по портам?Не понял :-( По каким портам?
На сервере некая прога открыла порт 34277
к ней приконнектились.
Она не многопоточная и больше листенов нет, т.е. может быть только одно соединение. Вот как по факту узнать, что именно к ней коннектились, а не она?
>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>хотел получить в добавок к этому информацию о том, кто
>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>информацию?
man netstat
>>В /proc/net замечательным образом можно посмотреть перечень текущих соединений. А я бы
>>хотел получить в добавок к этому информацию о том, кто
>>являлся клиентом, а кто сервером в момент установки соединения. Локальный адрес
>>коннектился к удаленному или наоборот. Можно ли каким-либо образом получить такую
>>информацию?
>man netstat
И что он даст? Думаешь не курил? нетстат необходимой мне информацией не обладает. Он показывает текущие соединения (как раз из /proc/net/tcp, udp и т.д. берет), но вот кто это соединение устанавливал и в какую сторону он не знает :-(((
>но вот кто это соединение устанавливал и в какую
>сторону он не знает :-(((попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)
>>но вот кто это соединение устанавливал и в какую
>>сторону он не знает :-(((
>
>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне ничего не покажет. Им надо смотреть в момент установки соединения а не постфактум.
я чего-то не пойму. ты не знаешь какие сервисы у тебя на машине запущены?
по любому на портах <1024 висят общеизвестные сервисы отсюда и надо плясать
все снаружи лезут именно по этим портам на твой ip. А дальше обычная фильтрация по твоему ip
>я чего-то не пойму. ты не знаешь какие сервисы у тебя на
>машине запущены?
>по любому на портах <1024 висят общеизвестные сервисы отсюда и надо плясать
>
>все снаружи лезут именно по этим портам на твой ip. А дальше
>обычная фильтрация по твоему ipЖ-)))
Юзвер, допустим, написал CGI скрипт, который пошел наружу и к кому-нибудь приконнектился или наоборот.
И это будут порты точно выше 1024. Вот я и хочу суметь узнать, видя соединение, в какую сторону оно было произведено.
настрой файрвол, и подобные вопросы просто отпадут
>настрой файрвол, и подобные вопросы просто отпадутМне не надо ЗАПРЕЩАТЬ. Мне надо просто знать. Файрвол здесь только подойдет для создания логов, которые потом придется изучать. Опять же не лучшее решение. Далеко не лучшее :-( Я надеялся, что все-таки линух обладает некой историей соединения и можно в любой момент о существующем ESTABLISHED соединении узнать в какую сторону оно устанавливалось.
если ЗАПРЕТИТЬ левые коннекты, то ты узнаешь что хочешь по номеру локального порта.
прим. если разрешены входящие соединения только на 21 и 80 порты, соответственно все другие исходящие
и не придется изобретать велосипед
>если ЗАПРЕТИТЬ левые коннекты, то ты узнаешь что хочешь по номеру локального
>порта.
>прим. если разрешены входящие соединения только на 21 и 80 порты, соответственно
>все другие исходящие
>и не придется изобретать велосипедОпять же. Ну НЕЛЬЗЯ запрещать. Сии коннекты крайне нужны. Надо иметь возможность получать о них информацию, но НЕ ЗАПРЕЩАТЬ. Не говоря уже о множестве причин можно привести элементарную - пассив мод у фтп должен работать.
тогда проще подправить исходники...
>тогда проще подправить исходники...
Да нет проблем.
Только похоже, что придется править исходники ядра :-( А вот этим заниматься не хотелось бы.
Чувак, тебе сказали же еще в первом сообщении man netstat. Всю необходимую информацию, о которой ты здесь кричишь, netstat выдаёт.
>Чувак, тебе сказали же еще в первом сообщении man netstat. Всю необходимую
> информацию, о которой ты здесь кричишь, netstat выдаёт.Я, вроде, не кричал :-/ Да и не "чувак" вовсе.
А на счет нетстата, все предельно просто. Он работает с файлами /proc/net/tcp, /proc/net/udp, /proc/net/raw и т.д. По инодам смотрит какие программы владеют соединениями. Короче, алгоритм его прост и я тебе сам напишу нетстат за пару часов, что в свое время и делал. Но ни я, ни нетстат не может сказать по любому соединению, которое в данный момент времени ESTABLISHED кем оно устанавливалось. Вернее кем он знает (локальный и удаленный адреса), но вот в какую сторону... Кто был клиентом, а кто сервером? Кто к кому коннектился? Те, кто поняли мой вопрос, про нетстат даже не заикались.
Видимо, все-таки необходимая мне информация линухом нигде не хранится, поэтому и нетстат здесь не помошник и единственный путь, как здесь и писали, это пользоваться файрволом или tcpdump'ом, а потом каждый раз разбирать логи и искать кто же два часа назад устанавливал соединение, локальный адрес или удаленный.
В любом случае, спасибо за попытки помочь мне в моем вопросе. Если узнаете что-то еще, дайте мне, пожалуйста, знать.
>>>но вот кто это соединение устанавливал и в какую
>>>сторону он не знает :-(((
>>
>>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)
>
>Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне
>ничего не покажет. Им надо смотреть в момент установки соединения а
>не постфактум.
так что мешает поставить его в автозапуск с записью результатов в файл?
и что-то я не припомню, чтобы стек tcp/ip хранил информацию об инициаторе установления соединения...
>>>>но вот кто это соединение устанавливал и в какую
>>>>сторону он не знает :-(((
>>>
>>>попробуй tcpdump с фильтром на флаги установки соединения (кажется, SYN)
>>
>>Все верно. Но соединение, допустим, было установлено 10 минут назад. tcpdump мне
>>ничего не покажет. Им надо смотреть в момент установки соединения а
>>не постфактум.
>так что мешает поставить его в автозапуск с записью результатов в файл?
>Это очень кривой способ :-((( Конечно как вариант подходит, но не хотелось бы нагружать машину лишними действиями, логами и т.д. которые происходят постоянно
>и что-то я не припомню, чтобы стек tcp/ip хранил информацию об инициаторе
>установления соединения...
тогда файрвол, смотреть syn пакеты в логе.
>тогда файрвол, смотреть syn пакеты в логе.Тоже не круто. Очень большие проблемы с производительностью будут на машине, где устанавливается несколько миллионов коннектов в сутки :-(
Но похоже, действительно, другого способа нет :-(
>>тогда файрвол, смотреть syn пакеты в логе.
>
>Тоже не круто. Очень большие проблемы с производительностью будут на машине, где
>устанавливается несколько миллионов коннектов в сутки :-(
>
>Но похоже, действительно, другого способа нет :-(
не так уж это и страшно
для производительности важно сколько обрабатывается соединительных пакетов в единицу времени
на фоне того, что у тебя ВСЕ пакеты должны обрабатываться файрволом это не даст(имХо) особого падения производительности
>>>тогда файрвол, смотреть syn пакеты в логе.
>>
>>Тоже не круто. Очень большие проблемы с производительностью будут на машине, где
>>устанавливается несколько миллионов коннектов в сутки :-(
>>
>>Но похоже, действительно, другого способа нет :-(
>
>
>не так уж это и страшно
>для производительности важно сколько обрабатывается соединительных пакетов в единицу времени
>на фоне того, что у тебя ВСЕ пакеты должны обрабатываться файрволом это
>не даст(имХо) особого падения производительности
Ты прав. НО! Лишние обращения к диску файрволом (лог то писать надо) и потом обработка этого лога моей софтиной (в поисках момента соединения) уже ОЧЕНЬ сильно догрузят