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