0

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

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

这是wireshark的输出

No. Time Source Destination Protocol Length Info
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 2593 名称查询响应
259STAT 14.70 192.168.1.245 192.168.1.21 ICMP 281 目的地不可达(端口不可达)

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

4

1 回答 1

1

您的程序是否在侦听 UDP 端口 137 以接收服务器回复?如果不是,这解释了为什么您的主机发送 ICMP 数据包端口不可达。

如果您侦听端口 137,请在发送 NBNS 查询时尝试将源端口配置为端口 137。因此防火墙现在应该允许数据包到该端口。

于 2013-04-24T12:07:21.773 回答