- How to kill a TCP connection using netstat
- Linux: How to kill a TCP connection using netstat?
- tcpkill command
- Syntax:
- Examples:
- cutter command
- Рабочий метод разрыва конкретного активного соединения из командной строки linux (drop/kill/cut/close ESTABLISHED connection)
- Убить tcp соединение в linux
- Как закрыть активное tcp соединение linux?
- Close established TCP connection on Linux
- 1 Answer 1
- Not the answer you’re looking for? Browse other questions tagged linux sockets tcp or ask your own question.
- Related
- Hot Network Questions
- Subscribe to RSS
How to kill a TCP connection using netstat
Linux: How to kill a TCP connection using netstat?
You cannot kill a TCP connection using netstat utility. netstat is use for
- Display network connections
- Routing tables
- Interface statistics
- Masquerade connections
- Multicast memberships
- And much more
However Linux support two other commands or utility that can be used to kill a TCP connection.
tcpkill command
Use tcpkill command to kill specified in-progress TCP connections. It is useful for libnids-based applications which require a full TCP 3-whs for TCB creation.
Syntax:
Examples:
tcpkill -i eth0 port 21
(b) Kill all all packets arriving at or departing from host 192.168.1.2 (host12.nixcraft.com)
tcpkill host 192.168.1.2
tcpkill host host12.nixcraft.com
(c) To kill all IP packets between 192.168.1.2 and any host except 192.168.1.111, type the following:
tcpkill ip host 192.168.1.2 and not 192.168.1.111
Since tcpkill expressions are based upon tcpdump command’s filter expression, it is recommended that you read options with expression and examples.
cutter command
Cutter is an open source program that allows Linux firewall administrators to abort TCP/IP connections routed over Linux based firewall. It works on Linux router only. We have already covered examples of cutter here.
Источник
Рабочий метод разрыва конкретного активного соединения из командной строки linux (drop/kill/cut/close ESTABLISHED connection)
Иногда бывает необходимо принудительно разорвать активное соединение. Самый распространенный способ:
netstat -na
kill PID
Проблема в том, что один воркер может одновременно обслуживать несколько соединений, поэтому правильнее будет убить соединение а не воркер. Для этого на многих форумах рекомендуют использовать tcpkilll, cutter или awk+hping3. Однако, хоть эти утилиты и находятся в официальных репозиториях, мне не удалось заставить их разрывать соединения.
После продолжительных поисков был обнаружен perl скрипт killcx, разрывающий соединение по удаленному хосту и порту.
killcx 94.133.119.242:4403
[PARENT] checking connection with [94.133.119.242:4403]
[PARENT] found connection with [78.220.184.126:80] (ESTABLISHED)
[PARENT] forking child
[CHILD] interface not defined, will use [eth0]
[CHILD] setting up filter to sniff ACK on [eth0] for 5 seconds
[CHILD] hooked ACK from [77.220.184.126:80]
[CHILD] found AckNum [3091573605] and SeqNum [3105164779]
[CHILD] sending spoofed RST to [78.220.184.126:80] with SeqNum [3091573605]
[CHILD] sending RST to remote host as well with SeqNum [3105164779]
[CHILD] all done, sending USR1 signal to parent [13723] and exiting
[PARENT] received child signal, checking results.
=> success : connection has been closed !
Для его работы требуется целый набор библиотек.
apt-get install \
libpcap0.8 \
libpcap-dev \
libnet-pcap-perl \
libyaml-perl \
libyaml-dev \
libyaml-0-1 \
-y
cpan -i \
Net::RawIP \
NetPacket::Ethernet
Источник
Убить tcp соединение в linux
У меня есть какое-то мертвое соединение в одном приложении, которое находится в зависшем состоянии, если клиентская машина мертва.
Есть ли способ прекратить эти опции из командной строки Linux без перезагрузки сервера?
После поиска я нашел решение под названием tcpkill. Но это не сработает для меня. Так как он постоянно блокирует этот ip.
Чтобы «убить» сокет, вы должны отправить пакет сброса TCP. Чтобы отправить его (и принять другую сторону), вы должны знать фактический порядковый номер TCP.
1) Уже упомянутый tcpkill метод изучает номер SEQ путем пассивного прослушивания в сети и ожидания получения действительных пакетов этого соединения. Затем он использует полученный номер SEQ для отправки пакетов RSET обеим сторонам. Однако, если соединение неактивно / зависло и данные не передаются, оно ничего не будет делать и будет ждать вечно.
2) Другой метод использует скрипт perl, который называется killcx ( ссылка на Sourceforge ). Это активно отправляет поддельные пакеты SYN и узнает номер SEQ из ответа. Затем он отправляет пакеты RSET так же, как tcpkill .
Альтернативный подход (основанный на том, чего вы хотите добиться) — использовать gdb отладчик для подключения к процессу, владеющему этим сокетом / соединением, и close() выполнять системный вызов от его имени — как подробно описано в этом ответе .
Если вы хотите работать только с зависшими соединениями (другая сторона не работает), существуют различные таймауты (например, TCP keepalive), которые должны автоматически закрывать такие соединения, если в системе правильно настроены.
Источник
Как закрыть активное 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
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
Возможно я что то делаю не так.
Удивительно, как с такими знаниями, у тебя вообще что-то работает.
похоже на оптимизацию бизнес-модели: уволили эникея, он «дудосит» с домашней кофеварки, новый эффективный МЕНЕДЖЕР ВООХОДИТ В ООЙТИ
Ваша оценка моей личности очень важна для меня.
Источник
Close established TCP connection on Linux
I am not able to find an answer to a simple thing I will try to achive: once a tcp connection is established to my linux server, let’s say ssh / tcp 22 or x11 / tcp 6000 display -> how do I close this connection without killing the process (sshd / x11 display server). I saw also some suggestoin to use iptables, but it does not work for me, the connection is still visible in netstat -an. would be good if someone can point me to the right direction.
what I tried so far
Thanks in adavnce DJ
1 Answer 1
Ok, I found at least one solution (killcx) which is working. Maybe we will be able to find an easier solution. Also, i saw the comment from «zb» — thanks — which might also work, but I was not able to find a working syntax, since this tool seems to be really useful but complex. So here is an example how to work with the 1. solution which is working for me:
killcx can be found here: http://killcx.sourceforge.net/ it «steals» the connection from the foreign host (192.168.0.77) and close it. So that solution is working fine, but to complex to setup quickly if you are under stress. Here are the required packages:
however, would be good to have an easier solution.
Not the answer you’re looking for? Browse other questions tagged linux sockets tcp or ask your own question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.8.40416
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник