Linux netstat как закрыть соединение

11 примеров использования netstat

Команда netstat, входящая в стандартный набор сетевых инструментов UNIX, отображает различную network–related информацию, такую как сетевые подключения, статистику интерфейсов, таблицы маршрутизации, masquerade, multicast, и т.п.

В этой статье рассмотрим десять практических примеров использования команды netstat в Linux.

1. Список всех портов (как прослушиваемых, так и нет)

Перечислить все порты: netstat -a

Перечислить все TCP порты: netstat -at

Перечислить все UDP порты: netstat -au

2. Список сокетов, находящихся в состоянии LISTEN

Перечислить все прослушиваемые порты: netstat -l

Перечислить прослушиваемые TCP порты: netstat -lt

Перечислить прослушиваемые UDP порты: netstat -lu

Перечислить прослушиваемые UNIX сокеты: netstat -lx

3. Просмотр статистики для каждого протокола

Показать статистику всех портов: netstat -s

Показать статистику только TCP портов: netstat -st

Показать статистику только UDP портов: netstat -su

4. Отображение PID и имени процесса в выводе netstat

Опция netstat -p добавит «PID/Program Name» в вывод netstat, и может быть совмещена с любым другим набором опций. Это очень полезно при отладке, для определения того, какая программа работает на определённом порту.

5. Разрешение имён в выводе netstat

Когда вам не нужно резолвить имя хоста, имя порта, имя пользователя, используйте опцию netstat -n для вывода значений в цифровом формате. Команда покажет IP-адрес вместо хоста, номер порта вместо имени порта, UID вместо имени пользователя.

Это также ускорит вывод, так как netstat не станет выполнять ненужный поиск.

Для вывода цифровых значений только некоторых из этих пунктов, используйте следующие команды:

6. Вывод информации netstat непрерывно

Опция netstat -c будет выводить информацию непрерывно, в стиле top, обновляя экран каждые несколько секунд.

7. Неподдерживаемые системой семейства адресов

Опция netstat —verbose покажет подробный вывод, а в самом конце отобразит неподдерживаемые Address Family.

8. Маршрутизация ядра

Показать таблицу маршрутизации ядра: netstat -r

Примечание: Используйте netstat -rn для просмотра маршрута в цифровом формате без разрешения имён узлов.

9. Соответствие портов и процессов

Узнать, какой порт занимает определённая программа:

Выяснить, каким процессом используется определённый порт:

10. Сетевые интерфейсы

Показать список сетевых интерфейсов: netstat -i

Читайте также:  Очистка кэша dns команда windows

Показать расширенную информацию об интерфейсах (аналогично ifconfig): netstat -ie

11. netstat -lnptux

Резюмируем вышеописанное и объединим ключи в одну полезную команду, которая покажет:

  • -l все открытые порты (LISTEN)
  • -t по протоколу TCP
  • -u по протоколу UDP
  • -x по протоколу UNIX Socket
  • -n без резолва IP/имён
  • -p но с названиями процессов и PID-ами

Примечание: Не все процессы могут быть идентифицированы последним ключом, чужие процессы показаны не будут. Вы должны иметь права root чтобы увидеть всё.

Источник

unixforum.org

Форум для пользователей UNIX-подобных систем

  • Темы без ответов
  • Активные темы
  • Поиск
  • Статус форума

как закрыть соединение

Модератор: Bizdelnick

как закрыть соединение

Сообщение masterprime » 21.07.2009 20:06

Re: как закрыть соединение

Сообщение nesk » 21.07.2009 20:40

если добавить к команде netstat -a ключик -p можно увидеть PID процессов, которые держат соединения. Вот если их типа kill-нуть, соединение будет прервано.

Кроме того, если уже это ssh сессия, то можно посмотреть вывод команды who. Посмотреть какие пользователи зашли, посмотреть их процессы ps -u имяпользователя. И kill-нуть их все (хотя достаточно убить только, тот процесс, который является лидером сессии)

Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

Re: как закрыть соединение

Сообщение masterprime » 21.07.2009 20:49

если добавить к команде netstat -a ключик -p можно увидеть PID процессов, которые держат соединения. Вот если их типа kill-нуть, соединение будет прервано.

Кроме того, если уже это ssh сессия, то можно посмотреть вывод команды who. Посмотреть какие пользователи зашли, посмотреть их процессы ps -u имяпользователя. И kill-нуть их все (хотя достаточно убить только, тот процесс, который является лидером сессии)

однако netstat с ключами -а -р, показывает PID-ы самих процессов сервисов и убивая по этим PID-ам я и грохну тотже sshd, например, а мне эт не нада.

Источник

Как можно сбросить tcp соединение ?

Как можно сбросить tcp соединение ? По netstat видно откуда и на какой порт, а вот как его принудительно убить.

Re: Как можно сбросить tcp соединение ?

Во-первых, можно через netstat -np определить какой процесс (его PID) связан с этим соединением и убить его, если конечно этот процесс больше не связан ни с каким соединением. Во-вторых, можно запретить прием/передачу пакетов в этом соединении с помощью firewall-а; тогда оно само отвалится (возможно по timeout-у, если использовать DROP/DENY). В-третьих, есть программа ettercap, она, при запуске в интерактивном режиме, имеет функцию «kill connection» (включить прослушивание пакетов, выбрать нужное соединение, пару раз нажать «k»).

Re: Как можно сбросить tcp соединение ?

гы-гы а в openbsd есть команда tcpdrop.

Re: Как можно сбросить tcp соединение ?

> Во-вторых, можно запретить прием/передачу пакетов в этом соединении с помощью firewall-а;

хм.. надо попробовать — я где-то читал, что для уже установленных tcp-соединений новое, добавленное уже после установления этих соединений, правило не действует. т.е. это правило будет действовать только на соединения инициируемые после добавления данного правила..

Читайте также:  The bat windows defender

а вообще, close() для сокета и/или порта есть? есть. значит надо найти как его использовать. т.е. я думаю, что необходимая «ручка» есть — надо её лишь найти..

Re: Как можно сбросить tcp соединение ?

$ apt-cache show cutter

Description: disconnect routed IP connections Cutter will send packets to both ends of a tcp/ip connection to close the connection. It is designed to be used on a Linux router to disconnect unwanted connections

Re: Как можно сбросить tcp соединение ?

10x!
у гугля я чё-то не сумел выпытать ничего внятного. видать плохо спрашивал 🙁

Источник

Как закрыть активное tcp соединение linux?

Здравствуйте. У меня проблема. Сервер иногда подвергается ддос атаки одного человека. Есть tcp соединения при блоке которых через Iptables всё ещё остаются запросы: https://prnt.sc/128bi0d

Я заблокировал ип, н ос него всё ещё висят 51 запрос на tcp порт который оно досило. Соединение обрубается только если я перезагружу приложение которое было под атакой.

Его запросы: netstat -na | grep 117.94.104.57 tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35696 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35728 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35784 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35672 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35842 ESTABLISHED tcp 0 0 43.123.xx.xx:6183 117.94.104.57:35716 ESTABLISHED

Трафика с него никакого не идёт: tcpdump host 117.94.104.57 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on enp1s0f0, link-type EN10MB (Ethernet), capture size 262144 bytes ^Z [12]+ Остановлено tcpdump host 117.94.104.57

Как его разорвать желательно автоматически или вручную без перезагрухки порта/приложения?

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

Благодарю. Но это вручную и нужно знать пид процесса. Вообще читал мануал в интернете, попробую ан практике. Хотелось бы конечно что бы автоматически такие вот соединения рвались и не висели создавая нагрузку. Почему это стандартно не происходит вопрос ещё тот.

Если ты не знаешь PID своего приложения, то обратись в Job.

соединения такие должно рвать либо само приложение либо проксирующий фронт, очевидно у тебя ни первого не происходит ни второго нет, тогда почему что-то должно происходить автоматически, вопрос тот еще

Ну это всё нужно кодить самому получается я к сожалению в этом профан. Полагаю устройство сетей должно хоть как то работать, имеется ввиду зачем держать откротое соединение которое в бане и которое не посылает никакого трафика. Файрвол это должен делать, поидеи.

Проблема в том что при бане ип через Iptables все активные запросы с Ip включая соединение остаётся неизменным. Просто прекращается идти трафик. Почему это происходит я не знаю.

Прошу прощения. Я не так понял. Пид приложения знаю. Попробую ваш вариант.

sudo ss -K src sport =

sudo ss -K src sport = -bash: ошибка синтаксиса около неожиданной лексемы `6183’ стоит ubuntu

Читайте также:  Rosa linux ����� �������

sudo gdb -p 4799 -ex «call close(»$FD»)» -ex «detach» -ex «quit» GNU gdb (Ubuntu 7.11.1-0ubuntu1

16.5) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type «show copying» and «show warranty» for details. This GDB was configured as «x86_64-linux-gnu». Type «show configuration» for configuration details. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/. For help, type «help». Type «apropos word» to search for commands related to «word». Attaching to process 4799 [New LWP 23445] [New LWP 27368] [New LWP 30050] [New LWP 1372] [New LWP 5619] [New LWP 8942] [New LWP 10733] [New LWP 17700] [New LWP 22303] [Thread debugging using libthread_db enabled] Using host libthread_db library «/lib/x86_64-linux-gnu/libthread_db.so.1». 0x00007fdae9f3a693 in select () at ../sysdeps/unix/syscall-template.S:84 84 ../sysdeps/unix/syscall-template.S: Нет такого файла или каталога. $1 = 0 Detaching from program: /home/user/bin/newmakro/makro++, process 4799

Возможно я что то делаю не так.

Удивительно, как с такими знаниями, у тебя вообще что-то работает.

похоже на оптимизацию бизнес-модели: уволили эникея, он «дудосит» с домашней кофеварки, новый эффективный МЕНЕДЖЕР ВООХОДИТ В ООЙТИ

Ваша оценка моей личности очень важна для меня.

Источник

Убить tcp соединение в linux

У меня есть какое-то мертвое соединение в одном приложении, которое находится в зависшем состоянии, если клиентская машина мертва.

Есть ли способ прекратить эти опции из командной строки Linux без перезагрузки сервера?

После поиска я нашел решение под названием tcpkill. Но это не сработает для меня. Так как он постоянно блокирует этот ip.

Чтобы «убить» сокет, вы должны отправить пакет сброса TCP. Чтобы отправить его (и принять другую сторону), вы должны знать фактический порядковый номер TCP.

1) Уже упомянутый tcpkill метод изучает номер SEQ путем пассивного прослушивания в сети и ожидания получения действительных пакетов этого соединения. Затем он использует полученный номер SEQ для отправки пакетов RSET обеим сторонам. Однако, если соединение неактивно / зависло и данные не передаются, оно ничего не будет делать и будет ждать вечно.

2) Другой метод использует скрипт perl, который называется killcx ( ссылка на Sourceforge ). Это активно отправляет поддельные пакеты SYN и узнает номер SEQ из ответа. Затем он отправляет пакеты RSET так же, как tcpkill .

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

Если вы хотите работать только с зависшими соединениями (другая сторона не работает), существуют различные таймауты (например, TCP keepalive), которые должны автоматически закрывать такие соединения, если в системе правильно настроены.

Источник

Оцените статью