2017-05-09 82 views
0

我已經創建了一個從ubuntu:16.04docker image派生的泊塢窗圖像,並基於此圖像啓動了一個容器。在這個容器中,我嘗試使用tcpdump捕獲GRE數據包。然而,當我在容器內運行tcpdump -i <interface> proto gre,我得到以下錯誤:Docker Ubuntu 16.04 LTS - 使用tcpdump捕獲GRE數據包

tcpdump: unknown ip proto 'gre' 

任何想法如何這可能是固定?

注意:容器使用主機網絡堆棧(即,容器開始--net="host"

在此先感謝。

+0

顯示Dockerfile – user2915097

回答

0

按照pcap-filter手冊頁,你只能指定以下PROTOSFDDITRWLANIPIP6,ARP,RARPdecnet,tcp and udp

但是,您可以使用切片運營商喜歡這個:"ip[9:1]=47"

如果你指的RFC791 Section 3.1,你會看到,IP報頭的協議字段是報頭的10字節,或位於偏移量9的1字節字段,這是ip[9:1]分離的。此外,如在RFC2784, Section 4指定(以及被登記爲協議號47 IANA),GRE是協議47.

NOTES

  • 雖然PCAP過濾器和tcpdump手冊頁不要t使用術語切片來描述[]運算符,Wireshark在wireshark-filter手冊頁中確實使用了這個術語,因此我在這裏也使用它。
  • tcpdump示例使用了一個等號=在他們的榜樣,而Wireshark使用雙等號==在他們的榜樣。在實踐中,他們都工作,所以隨意使用任何一個。
  • 由於您只對單個字節感興趣,因此您實際上不需要指定分段運算符中的長度值,"ip[9]==47"也可以正常運行。
+0

謝謝克里斯託弗看看這個。用'原取代的是(我),我能跑用'原主機(其上泊塢窗容器中運行)上gre'過濾器的tcpdump(二)泊塢窗 – jithinpt

+0

我內47'正常工作:一對夫婦點嘗試過「ip proto 47」,但在我的測試中失敗了。我可能會運行tcpdump/libpcap的舊版本(目前無法檢查);你在主機上和docker中運行什麼版本的tcpdump/libpcap? –

+0

另外,如果「ip proto gre」起作用,那麼似乎pcap-filter文檔需要更新。 –