Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Ubuntu9.04(而不是8.04)的UDP广播接收问题 更新 01-27之三:添加了rp_过滤器信息 01-27之二:请注意,9.04框在不同的界面上工作 01-27:添加了接口配置信息和数据包分析 原职_Linux_Udp_Broadcast - Fatal编程技术网

Linux Ubuntu9.04(而不是8.04)的UDP广播接收问题 更新 01-27之三:添加了rp_过滤器信息 01-27之二:请注意,9.04框在不同的界面上工作 01-27:添加了接口配置信息和数据包分析 原职

Linux Ubuntu9.04(而不是8.04)的UDP广播接收问题 更新 01-27之三:添加了rp_过滤器信息 01-27之二:请注意,9.04框在不同的界面上工作 01-27:添加了接口配置信息和数据包分析 原职,linux,udp,broadcast,Linux,Udp,Broadcast,我有两个非常相似的硬件配置(带双Xeon CPU和两个以太网端口的SuperMicro 1U系统),一个运行Ubuntu 8.04(Linux 2.6.24-26-server),另一个运行Ubuntu 9.04(Linux 2.6.28-17-server)。这两个服务器都将eth1连接到同一个网络,在该网络上,其他各种服务器正在向各种端口发送广播UDP数据包。 在两台主机上,使用eth1上的tcpdump,我可以看到这些广播UDP数据包到达 然而,在8.04框中,我可以让一个简单的程序很好地

我有两个非常相似的硬件配置(带双Xeon CPU和两个以太网端口的SuperMicro 1U系统),一个运行Ubuntu 8.04(Linux 2.6.24-26-server),另一个运行Ubuntu 9.04(Linux 2.6.28-17-server)。这两个服务器都将eth1连接到同一个网络,在该网络上,其他各种服务器正在向各种端口发送广播UDP数据包。 在两台主机上,使用eth1上的tcpdump,我可以看到这些广播UDP数据包到达

然而,在8.04框中,我可以让一个简单的程序很好地收听它们,而在9.04框中,一个相同的程序永远不会接收它们。作为一个高级概述,下面是一个Haskell程序示例,它在一个程序上工作,但在另一个程序上不工作(在两个程序上使用相同版本的GHC):

我将其与工作的8.04服务器上转储的相同数据包不同,数据包本身是相同的;唯一的区别在于帧编号(在pcap文件中)和接收数据包的时间(相差1.224毫秒,考虑到两台主机使用相同的NTP服务器,相差似乎很大,但并非完全不合理)

更新01-27之二 我做了进一步的实验,在8.04主机上生成我自己的广播数据包并将其发送到9.04主机,当8.04主机发送数据包并到达eth0或eth1时,9.04主机可以很好地接收数据包

更新01-27之三
sp3的输出;sysctl-8.04主机上的2>/dev/null | grep'\.rp|u filter'| sort
是:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.eth2.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 0
在9.04主机上:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.eth2.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 0

因此,问题是net.ipv4.conf.eth1.rp_过滤器sysctl设置。在8.04框中将其设置为0时,我正在进行松散的反向路径检查,这意味着数据包可能来自我可以在任何接口上路由到的任何目的地。在9.04框中,我进行了严格的检查,这意味着如果对某个接口上到达的数据包的回复将从另一个接口发出,那么它将拒绝这些数据包


到达eth1到255.255.255.255的数据包是我不应该在其下接收的数据包,因为255.255.255.255是本地网络广播地址,但这些数据包的源不在本地网络上,所以一切正常。因此,从本质上说,在我接收提要的网络上有一些配置错误,我必须处理这种配置错误。

请在两个框上显示
/sbin/ifconfig eth1
的输出。只是为了确保…9.04上启用了防火墙?
Frame 193555 (271 bytes on wire, 271 bytes captured)
    Arrival Time: Jan 25, 2010 08:00:00.535345000
    [Time delta from previous captured frame: 0.001508000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 6590.956186000 seconds]
    Frame Number: 193555
    Frame Length: 271 bytes
    Capture Length: 271 bytes
    [Frame is marked: False]
    [Protocols in frame: eth:ip:udp:data]
Ethernet II, Src: Cisco_aa:c0:28 (00:d0:bb:aa:c0:28), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
    Destination: Broadcast (ff:ff:ff:ff:ff:ff)
        Address: Broadcast (ff:ff:ff:ff:ff:ff)
        .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
        .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
    Source: Cisco_aa:c0:28 (00:d0:bb:aa:c0:28)
        Address: Cisco_aa:c0:28 (00:d0:bb:aa:c0:28)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
Internet Protocol, Src: 192.166.1.120 (192.166.1.120), Dst: 255.255.255.255 (255.255.255.255)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 257
    Identification: 0xfad3 (64211)
    Flags: 0x04 (Don't Fragment)
        0... = Reserved bit: Not set
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 252
    Protocol: UDP (0x11)
    Header checksum: 0xc0f9 [correct]
        [Good: True]
        [Bad : False]
    Source: 192.166.1.120 (192.166.1.120)
    Destination: 255.255.255.255 (255.255.255.255)
User Datagram Protocol, Src Port: 56172 (56172), Dst Port: 5515 (5515)
    Source port: 56172 (56172)
    Destination port: 5515 (5515)
    Length: 237
    Checksum: 0x01ba [correct]
        [Good Checksum: True]
        [Bad Checksum: False]
Data (229 bytes)

0000  41 37 30 33 34 30 38 30 30 30 30 30 30 31 31 30   A703408000000110
0010  4b 52 53 50 49 4f 50 4b 32 49 4b 52 34 32 30 31   KRSPIOPK2IKR4201
0020  45 32 32 32 35 33 30 30 32 31 30 30 30 30 30 30   E222530021000000
0030  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0040  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0050  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0060  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0070  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0080  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
0090  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
00a0  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
00b0  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
00c0  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
00d0  30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30   0000000000000000
00e0  30 30 30 30 ff                                    0000.
    Data: 413730333430383030303030303131304B525350494F504B...
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.eth2.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 0