2016-02-24 140 views
4

我正在嘗試將Docker容器直接連接到主機網絡時遇到一些問題。直接將Docker容器連接到主機子網

配置如下 一臺主機在子網中有一個接口(eth0),比如10.0.15.0/24。 eth0上的IP爲10.0.15.5/24。 我自定義了docker0網橋,以使用eth0提供的子網內的子網,即10.0.15.64/26。所以碼頭工人可以使用這個/ 26中的IP給容器,我希望容器可以從網絡的其他部分直接訪問。碼頭橋也有一個IP集,即10.0.15.65/26。

創建容器時,會獲取IP,例如10.0.15.66/26。現在,我做了一些測試用ping命令:

  • 在網絡上的任何東西可以ping 10.0.15.5(主機的eth0)中的網絡上
  • 什麼可以ping 10.0.15.65(主機docker0橋)
  • 主機可以ping 10.0.15.66(容器IP)
  • 容器可以Ping網絡上的東西比主機中的其他
  • 什麼都可以平在10.0.15.66
容器

IP轉發功能已打開

[[email protected]~]# cat /proc/sys/net/ipv4/ip_forward 
1 

缺少什麼我在這裏? 連接到docker0橋的容器應該可以從我認爲的網絡到達。

預期的行爲 容器應可偵測從網絡上的任何地方,就像docker0橋等

任何想法或幫助將不勝感激!

+0

由於您已經在操作iptables規則,因此我會先嚐試在docker demon命令行中添加'--iptables = false',以免它添加任何與您正在嘗試執行的操作相沖突的規則。 – Michael

回答

2

終於明白了爲什麼它不適合我們。 我運行Docker容器的機器是虛擬機管理程序中的虛擬機。管理程序只接受來自連接到VM的NIC的一個MAC地址。換句話說,虛擬機中的網卡沒有設置爲混雜模式。

我爲解決這個問題所做的只是使用裸機。另一種解決方案是手動將NIC設置爲混雜模式,因此它接受所有數據包,而不僅僅是它自己的MAC數據包。

相關問題