使用 Python 向 tap 接口发送数据包

2024-09-28 22:32:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用python向tap接口发送数据包。我用wireshark监视tap接口,没有收到任何数据包。我这样做主要是为了帮助我理解vpn、以太网桥接和python中的套接字编程。在

我的系统设置如下:

Ubuntu Desktop 11.10
Python 2.7
eth0 ip: 192.168.1.6
tap0 ip: 10.0.0.1

我首先设置水龙头如下:

^{pr2}$

这将启动tap0接口,并通过tap0创建到10.0.0.1/24的内核路由规则。在

这是路线表:

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        *               255.255.255.0   U     0      0        0 tap0
192.168.1.6     *               255.255.255.0   U     1      0        0 eth0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

接下来,我启动pythoninteractive并创建一个简单的UDP套接字。在

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto('helloworld',('10.0.0.2',12345))

我在tap0上运行带有Wireshark监视的sendto命令。现在,我的网络上没有10.0.0.2的主机,但至少我应该在tap0接口上看到一些传出流量。我已经在windows中复制了这一点,它似乎可以正常工作。在

我只能认为问题出在linux下tap0接口的设置上。或者我对这件事的平庸理解。在

谢谢


Tags: ipubuntu系统编程socketvpntap数据包
1条回答
网友
1楼 · 发布于 2024-09-28 22:32:00

在ethertap接口上,如果ARP缓存仍然有负(不完整)条目,那么您可能实际上会看到传出流量。否则,您可能只看到一个ARP包。在

实际上,我不认为这与python有关。在

你试过ping吗-你看到一个icmp包出去了吗?arp表是什么样子的?在

相关问题 更多 >