1

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

我在 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 或 arp。就算我毁掉那座桥,也没什么。

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

类似问题:

Linux TUN/TAP:无法从 TAP 设备读回数据

为什么 Linux TAP 设备不处理 ARP 或 ICMPv6 数据包

4

1 回答 1

3

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

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

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

于 2017-02-09T04:34:51.667 回答