点击linux中的设备没有正确传递ARP / IP数据包?

时间:2017-02-09 03:40:19

标签: c linux networking tap tun

似乎还有其他一些人对我有类似的问题,但我认为他们特别具体。我想我可能遇到了一个普遍的问题。

我在Linux中有一个TAP设备(用C创建)连接到另一个网络,我希望我的计算机能够通过这个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

1 个答案:

答案 0 :(得分:1)

我很遗憾这与tap / tun设备在Linux中的工作方式无关。事实上,这种机制将起作用。

问题在于我使用“发送”和“recv”与原始设备进行通信。 Wireshark无法区分,但Linux操作系统将拒绝使用来自套接字的数据。

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