我正在創建一個在同一臺機器上連接兩個以太網卡的網絡橋接器。其中一個卡連接到LAN,另一個連接到網絡設備。它看起來像這樣,使用Scapy和Python的網絡橋接器
我嗅探兩個接口的數據包,然後使用sendp(x,iface='eth0')
對我嗤之以鼻eth1上,反之亦然包將它們發送到其他。
我驗證了兩個接口的數據包,發現它們是正確的,但不知何故,我無法獲得設備的IP。 下面是一段我的代碼,我創建了兩個線程,每個接口:
from scapy.all import*
**THREAD1:**
pkt=sniff(iface="eth0",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
pass
else:
sendp(self.outbuff[:],iface="eth1",verbose=0)
**THREAD2:**
pkt=sniff(iface="eth1",store=1,count=1)
outbuff=[]
outbuff+=pkt[:]
for src in outbuff[:]
srcmac=src.sprintf(r"%Ether.src%")
if srcmac==deviceMAC:
sendp(self.outbuff[:],iface="eth1",verbose=0)
else:
pass
有人能幫助我的問題或建議我該實現的替代解決方案?
解決方案:結合Python + IPTABLES和使用TRIGGER的原則解決了這個問題。
[建立一個橋樑(http://wiki.debian.org/BridgeNetworkConnections#Setting_up_your_Bridge)的片段 –
的發展是,ETH1卡得到一個IP但Device不是。當我記錄數據包並在Wireshark中看到的時候,我可以看到Device發出的請求一直在發送,但是當服務器響應時,數據包在到達ETH0後某處消失了,但它永遠不會到達ETH1。相反,當ETH1發送請求時,它完全得到答覆。 可能是什麼問題? – Abhinav
設備在設置中在網絡上發送DHCP Discover。此請求在ETH1和ETH0都可見。然後服務器發送一個DHCP Offer,我在ETH1和ETH0看到的是來自服務器的廣播幀。問題在於設備不接受服務器發送的配置,並且繼續發送忽略報價的DHCP Discover消息。 在後面,如果我將設備直接連接到局域網,設備將接受相同的DHCP提供配置。 這種異常的解釋是什麼? – Abhinav