代码之家  ›  专栏  ›  技术社区  ›  bbuggy

对udp数据包的回复被阻止

  •  0
  • bbuggy  · 技术社区  · 13 年前

    我正在编写一个C程序来搜索本地网络上的smb共享并装载它们。 为了获得找到的smb服务器的主机名,我向服务器发送了一个udp-nbns数据包。 数据包是正确的,服务器会回复。 我正在使用wireshark来检查这个。 我将我发送的数据包与nbstat发送的数据集进行了比较,还比较了服务器返回的数据包。 id和校验和的例外情况它们是相同的。

    当我使用nbstat进行请求时,回复数据包会被正确接收,但对我自己数据包的回复可能会被防火墙阻止。 在接收到来自服务器的回复后,客户端机器向服务器发送一条icmp“Destination unareachable(Port unareachabled)”消息。 我怀疑是我的防火墙发送的。

    这是wireshark的输出

    编号时间源目的地协议长度信息
    12 29.870065 192.168.1.245 192.168.1.21 NBNS 92名称查询NBSTAT*<00>&书信电报;00.......
    13 29.870494 192.168.1.21 192.168.1.245 NBNS 253名称查询响应NBSTAT
    14 29.870559 192.168.1.245 192.168.1.21 ICMP 281目标不可达(端口不可达)

    我应该怎么做才能让答复通过?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Nikolai    13 年前

    您的程序是否正在UDP端口137上侦听以接收服务器回复? 如果没有,这就解释了为什么您的主机发送ICMP数据包端口无法访问。

    如果您在端口137上侦听,请尝试在发送NBNS查询时将源端口配置为端口137。所以防火墙现在应该允许数据包进入这个端口。