免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

[讨论] 清除本地服务器已建立TCP连接的方法[有了一个实现方法] [复制链接]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
31 [报告]
发表于 2010-08-13 19:36 |只看该作者
连接中好像是可以记录tcp连接的序列号的:
struct nf_conn
{
       ......

        /* Storage reserved for other modules: */
        union nf_conntrack_proto proto;

        /* Extensions */
        struct nf_ct_ext *ext;
};

以上粗体标出的union是记录ip协议之上的若干协议的传输数据及状态:
/* per conntrack: protocol private data */
union nf_conntrack_proto {
        /* insert conntrack proto private data here */
        struct ip_ct_sctp sctp;
        struct ip_ct_tcp tcp;
        struct ip_ct_icmp icmp;
        struct nf_ct_icmpv6 icmpv6;
        struct nf_ct_gre gre;
};

再展开struct ip_ct_tcp tcp这个结构体
struct ip_ct_tcp
{
        struct ip_ct_tcp_state seen[2];        /* connection parameters per direction */
        u_int8_t        state;                /* state of the connection (enum tcp_conntrack) */
        /* For detecting stale connections */
        u_int8_t        last_dir;        /* Direction of the last packet (enum ip_conntrack_dir) */
        u_int8_t        retrans;        /* Number of retransmitted packets */
        u_int8_t        last_index;        /* Index of the last packet */
        u_int32_t        last_seq;        /* Last sequence number seen in dir */
        u_int32_t        last_ack;        /* Last sequence number seen in opposite dir */
        u_int32_t        last_end;        /* Last seq + len */

        u_int16_t        last_win;        /* Last window advertisement seen in dir */
};

这里面记录了最后传输的seq,ack等等有关的数据。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
32 [报告]
发表于 2010-08-13 19:42 |只看该作者
可以考虑写个代码测试一下

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
33 [报告]
发表于 2010-08-13 19:47 |只看该作者
如果是tcp协议,给定sip,sport,dip和dport,应该可以快速查找到这个链接,进而取出对应的序列号等相关信息。

论坛徽章:
0
34 [报告]
发表于 2010-08-14 11:24 |只看该作者
hping2有一个替代工具http://nmap.org/nping/

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
35 [报告]
发表于 2010-08-14 11:29 |只看该作者
多谢LS的,看了一下这个工具的TCP方面的选项:
TCP PROBE MODE:
   -g, --source-port <portnumber>  : Set source port.
   -p, --dest-port <port spec>     : Set destination port(s).
   --seq <seqnumber>               : Set sequence number.
   --flags <flag list>             : Set TCP flags (ACK,PSH,RST,SYN,FIN...)
   --ack <acknumber>               : Set ACK number.
   --win <size>                    : Set window size.
   --badsum                        : Use a random invalid checksum.

这个和hping2差不多,可以指定seq和ack。
我想断开一个连接,还是需要自己先获取到seq

论坛徽章:
0
36 [报告]
发表于 2010-08-16 11:13 |只看该作者
没有简单的方法得到seq吗?

论坛徽章:
0
37 [报告]
发表于 2010-08-16 11:22 |只看该作者
通过 conn 里面的 tcp 状态来找到 seq,需要启用 conn 才可以
但有些环境是不能启用 conntrack 的,否则会有更大问题

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
38 [报告]
发表于 2010-08-16 11:37 |只看该作者
通过 conn 里面的 tcp 状态来找到 seq,需要启用 conn 才可以
但有些环境是不能启用 conntrack 的,否则会 ...
platinum 发表于 2010-08-16 11:22

嗯,白金兄说的这个问题是需要注意。
如果不利用conn的话,则需要考虑直接从tcp的那个全局sock变量中获取了。

论坛徽章:
0
39 [报告]
发表于 2010-08-16 13:08 |只看该作者
嗯,白金兄说的这个问题是需要注意。
如果不利用conn的话,则需要考虑直接从tcp的那个全局sock变量中获取 ...
Godbach 发表于 2010-08-16 11:37


是,但这种数据可能没有 EXPORT 出来,自己要修改代码

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
40 [报告]
发表于 2010-08-16 13:23 |只看该作者
嗯。不考虑其他因素的话,还是连接跟踪上方便一些。
另外,如果是一个服务器的话,它的连接数应该不像网络安全设备那样不会特别多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP