問題描述:
啟動docker并進行端口映射后,docker會在iptables中添加DNAT規則,將收到的對應端口的包轉換ip并進行轉發,同時添加規則將所有來自docker網域的ip進行轉換。
但是在Centos7上出現docker可以正常訪問外網,但是外網發出的請求在經過eth1接收轉發后送達不到docker0,或者送到卻出現(oui Unknown)的狀況。
解決方法如下:
啟動docker后,重啟iptables
service iptables restart
清空docker添加的所有規則,然后添加規則
iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
將所有來自docker的包172.17.0.0/16的ip替換為本機ip并發送,以達到docker訪問外網的目的。
相關教程推薦:docker教程