我正在通过Python 2.7中的原始套接字发送数据包:
packet = bytearray(...)
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
sock.bind(('192.168.1.45', 1))
sock.sendto(packet, ('8.8.8.8', 1))
sel = select.select([sock], [], [], timeout)
if len(sel[0]) > 0:
... receive the packet and process it ...
else:
... timeout ...
我的主机有两个以太网接口,eth0
和eth2
。 192.168.1.45
是eth0
的地址。如果eth0
的路由优先级最高,则按预期方式工作,但是如果eth2
的路由优先级最高,则tcpdump
显示数据包通过eth2
而不是{ {1}},并且响应永远不会到达。
我在这里出了什么问题?为什么eth0
不能使数据包通过bind(...)
外出?
一些相关信息:
eth0