在百花之中干掉一个杂草连接...

本文涉及的产品
.cn 域名,1个 12个月
简介:

早上接到阿里云的服务器报警,说有一台服务器的流量超标,这个服务器的外网带宽是5M,但是登陆进去使用#iftop -i eth1发现里面的流量已经几乎跑满,如图:

wKioL1j1huahS67iAAF_zOlJVeo445.png


我这个服务器的名称叫online-mts-001,为啥会有一个mail25.u.tsender.com,这个是什么鬼?莫非是通过我的服务器去连接这个“邮箱”域名?于是我就ping了一下这个mail25.u.tsender.com,结果如图:

wKioL1j1h2eSzPTTAACG1Mg43pk828.png


看到这个域名对应的ip地址是115.29.177.8,嗯,115.29.177.8,哎?这个ip地址好熟悉啊,卧槽,这特么不是这个online-mts-001的外网ip么?

wKiom1j1h8WTYI_-AAFekKgrysw748.png


也就是说我这个机器在我不知道的情况下被人绑定了一个域名!但是我这个服务器不是网页服务器,上面那个tsender.com的域名打不开,我检查了服务器一番,发现这个机器没有被人入侵的痕迹,只能说是被人有意/无意(无意的可能性更大,比如看错了阿拉伯数字)绑定了域名。


被人绑定了域名就好比被人起了外号一样,一旦非本人操作就不太好往下摘了,查了很多资料都没有办法,毕竟主动权不在我这里了。


但是回头过来,我们的重心是要解决那个占据了3M带宽的连接,#netstat 看了一下,发现这个连接的具体信息如下:

wKioL1j1iS3CEKFoAAAps18eNgc369.png


仅仅是干掉连接的话,方法有很多,关闭网卡再重开或者关闭相应的服务都可以,但是现在的问题是这台服务器是生产环境的服务器,它主要是给用户提供视频拉流,通过抓包分析得知,这位183.228.128.188的用户合法通过外网连接到了这台视频服务器,而且拉取的是高清视频,所以才占据了这么大的带宽。不过我们还是决定先断开这位用户的连接同时不动其他用户的连接,这位183.228.128.188的用户在客户端虽然会发觉视频断开,但是有缓存和人为刷新的客观因素,实际的体验不会差太多,至少不会投诉400...


那么如何干掉一个established连接同时保证其他连接呢?请使用tcpkill。


tcpkill的下载比较有说法,下面是安装步骤:

1)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/libnids-1.24-1.el6.x86_64.rpm

2)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/libnet-1.1.5-1.el6.x86_64.rpm

3)wget http://rpm.repo.onapp.com/ramdisk-hv/centos6/dsniff/dsniff-2.4-0.14.b1.el6.x86_64.rpm

4)yum install libICE libSM libXmu -y

5)rpm -ivh libnet-1.1.5-1.el6.x86_64.rpm

6)rpm -ivh libnids-1.24-1.el6.x86_64.rpm 

7)rpm -ivh  dsniff-2.4-0.14.b1.el6.x86_64.rpm

请按顺序操作,不然的话dsniff就会报错:

1
2
3
4
warning: dsniff-2.4-0.14.b1.el6.x86_64.rpm: Header V3 RSA /SHA256  Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
libnet.so.1()(64bit) is needed by dsniff-2.4-0.14.b1.el6.x86_64
libnids.so.1.24()(64bit) is needed by dsniff-2.4-0.14.b1.el6.x86_64

安装完毕之后,就会生成tcpkill命令,如图:

wKiom1j1sruBMzU2AACxKEY_jf8710.png


然后断开上面那个大带宽连接的命令是:#./tcpkill -i eth0 src port 9132 and dst port 9595 and src host 115.29.177.8 dst host 183.228.128.188 或者#./tcpkill -s 115.29.177.8:9132 -d 183.228.128.188:9595


但是要注意一下!tcpkill 一定要运行在能接收到应答包的主机上在,最好运行在连接或半连接存在的一端主机上,因为tcpkill会发现这个连接里有数据传输进而感知并且干掉。而且tcpkill默认情况下是只能干掉established状态的连接,对于假死连接(连接在,但是数据不传输)或者半连接由于tcp keeplive没打开而又没有数据向对端发送,导致一直无法感知次连接其实已经断开)是无法断开的。


如果遇到上述所说的假死连接和半连接就需要手动更改tcpkill的源码,更改原理在https://yq.aliyun.com/articles/59308


如果使用的系统是ubuntu or  debian,还可以使用cutter命令,#apt-get install cutter下载即可。使用方法:http://www.cyberciti.biz/tips/cutting-the-tcpip-network-connection-with-cutter.html


至于第一个问题,怎么把这台服务器上的域名撤除,我倒要好好想想了...





参考资料:

http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php


http://www.gnutoolbox.com/tcpkill-command/



本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1917007



相关文章
|
4月前
|
云安全 监控 负载均衡
游戏运行只会占用到服务器里面一个核心使用,其他核心不工作,是什么问题
游戏运行只占用服务器的一个核心,而其他核心不工作,可能有多种原因。以下分享一些常见的原因和处理的方案
|
4月前
Everything-一切尽在掌握之中
Everything-一切尽在掌握之中
|
12月前
我程序会死在这一行,是什么原因?
我程序会死在这一行,是什么原因?
|
设计模式 消息中间件 JavaScript
干掉 “重复代码”,这三种方式绝了!
干掉 “重复代码”,这三种方式绝了!
36938 2
干掉 “重复代码”,这三种方式绝了!
|
JSON NoSQL Redis
逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃的位置?
逆转时间,起死回生——程序报错崩溃后,如何倒回到崩溃的位置?
90 0
|
存储 缓存 监控
腾讯三面:进程写文件过程中,进程崩溃了,文件数据会丢吗?
腾讯三面:进程写文件过程中,进程崩溃了,文件数据会丢吗?
183 0
腾讯三面:进程写文件过程中,进程崩溃了,文件数据会丢吗?
|
数据采集 算法 Java
库调多了 都忘了最基础的概念 - 进程 / 线程篇
库调多了 都忘了最基础的概念 - 进程 / 线程篇
102 0
库调多了 都忘了最基础的概念 - 进程 / 线程篇
|
IDE 开发工具 图形学
令人头秃的:你的主机中的软件中止了一个已建立的连接
令人头秃的:你的主机中的软件中止了一个已建立的连接
892 1
|
测试技术
软件测试面试题:在多用户模式下你用LoadRunnner的哪个组件来回放脚本?
软件测试面试题:在多用户模式下你用LoadRunnner的哪个组件来回放脚本?
105 0
|
存储 自然语言处理 数据处理
今天,我要干掉 if ... else ...
今天,我要干掉 if ... else ...