【问题标题】:telnet/nc unable to send packet after few packetstelnet/nc 在几个数据包后无法发送数据包
【发布时间】:2019-06-23 09:46:03
【问题描述】:

我在 TCP 连接中遇到了非常奇怪的行为。 使用以下命令创建侦听器:

ncat -4 -l 10000

发送数据:

telnet 公共 IP 10000

使用tcpdump 分析数据并使用netstat 检查连接状态。当我发送数据包时(1,2,3,4,5 ....等等)。在服务器端只收到 4 或 5 个数据包,然后什么也没有发生。 tcpdump 未显示任何即将到来的数据包,而 netstat 显示“已建立”连接状态。

ncat public-ip 10000 命令也会发生同样的事情,ehrn 将其用作客户端。

当我使用^] and quit 的telnet 命令退出时,telnet 无法连接服务器(错误:连接被远程主机拒绝)。如果我将杀死ncat -4 -l 10000 命令并再次重新启动,那么将从客户端(telnet)建立连接,服务器将仅收到 4-5 个数据包。

我已经通过this url交叉检查了所有tcp参数

谁能知道服务器端发生了什么以及如何调试它?

编辑:1:

客户端机器上的 TCPDUMP

//Data-pkt-3
    13:26:55.844538 IP (tos 0x10, ttl 64, id 37219, offset 0, flags [DF], proto TCP (6), length 55)
        10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x9660 (correct), seq 9:12, ack 4, win 229, options [nop,nop,TS val 301276907 ecr 436759593], length 3

   //Data-pkt-4 
    13:26:59.916512 IP (tos 0x10, ttl 64, id 37220, offset 0, flags [DF], proto TCP (6), length 55)
        10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x8035 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301277925 ecr 436763991], length 3
    13:27:00.179644 IP (tos 0x10, ttl 64, id 37221, offset 0, flags [DF], proto TCP (6), length 55)
        10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x7ff3 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301277991 ecr 436763991], length 3
    13:27:00.443650 IP (tos 0x10, ttl 64, id 37222, offset 0, flags [DF], proto TCP (6), length 55)
        10.240.8.230.53839 > PUBLIC-IP.PORT: Flags [P.], cksum 0x7fb1 (correct), seq 12:15, ack 4, win 229, options [nop,nop,TS val 301278057 ecr 436763991], length 3

【问题讨论】:

    标签: linux tcp redhat tcpdump netcat


    【解决方案1】:

    确保 iptables 没有阻止您的连接:

    # iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination 
    

    还要验证你在 tcpdump 中捕获了正确的接口

    运行以下命令以获取与 tcpdump 一起使用的接口列表:

    # ip a|grep :|egrep -v 'link|inet'|awk '{print $2}'|sed 's/://'
    lo
    enp0s31f6
    wlp2s0
    

    因此,您要尝试的 dcpdump 命令将是(有线):

    # tcpdump -i enp0s31f6
    

    或者(wifi):

    # tcpdump -i wlp2s0
    

    Linux 上的接口名称可能不同。

    【讨论】:

    • tcpdump 正在获取 4-5 个数据包,然后停止。我认为 iptables 不会阻止它。如果它被 IPtables 阻止,那么服务器端将不会收到任何数据包。
    • 你能发布 tcpdump 捕获文件吗?
    • 你贴的trace不够详细,使用tcpdump -w开关将抓包保存到文件中,用Wireshark打开文件(或者使用Wireshark抓包)。在 Wireshark 中有一个选项分析 > 关注 > TCP 流。使用此选项可获取 TCP 会话的可视化。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2012-01-08
    • 2016-10-26
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多