2017-02-09 61 views
0

似乎还有一些人有类似的问题,但我认为他们是特别具体的。我想我可能会遇到一个普遍问题。在Linux中点击设备没有正确传递ARP/IP数据包?

我在连接到另一个网络的Linux(在C中创建)中有一个TAP设备,并且我希望我的计算机能够通过此TAP设备与其他网络进行通信。

我可以看到明确使用wireshark的arp数据包,但是我的内核不会对它们做出响应。我曾尝试配置网桥并设置网桥的IP地址无济于事。我也尝试过桥接物理硬件,出于某种原因,Linux似乎并没有将数据传递给其他网络。

如果我设置了静态ARP路由,看起来这个Linux机器不会响应ping到其上的设备。

# ifconfig tap0 up 
# brctl addbr br0 
# brctl addif br0 tap0 
# brctl addif br0 eth9 
# ifconfig br0 up 

我可以尝试将br0,eth9或tap0设置为IP,但没有回复ping或arps。即使我摧毁了桥,也没有任何东西。

我觉得我想要的是一个“假装”的界面。就像“这是一张假的以太网卡”一样。我觉得这应该可以用水龙头。

类似的问题:

Linux TUN/TAP: Unable to read data back from TAP devices

Why aren't ARP or ICMPv6 packets processed by a Linux TAP device

+0

ARP不会被路由,因为第2层广播不能被路由(第2层帧到达层3,例如路由之前剥离)。 ARP可以桥接,但桥接器不理解第3层,例如, IP。你不应该桥接两个不同的IP网络。我想你误解了网络层和TUN/TAP的目的。 –

回答

0

我很遗憾,这是无关的方式点击/桶设备在Linux下正常工作。实际上,这种机制将起作用。

问题在于我使用“send”和“recv”与原始水龙头设备对话。 Wireshark无法区分,但Linux操作系统将拒绝使用来自套接字的数据。

使用这个人的例子:http://www.cis.syr.edu/~wedu/seed/Labs/VPN/files/simpletun.c

相关问题