解决树莓派+openwrt+docker容器内无法联网
前言
openwrt里面装了个docker,但是桥接的网络容器内访问不了外网。一顿折腾后在知乎找到了解决办法。
解决
摘要:
Docker 使用
Bridge
网络时,会创建docker0 网桥,用于连接容器,然后docker0
通过NAT
转发访问外部网络,具体细节在这里就不赘述了。 当容器进行映射时,Docker 会自动添加DNAT
进行转发,实现访问宿主机端口的时候,将流量转发到容器内部。在普通宿主机中使用
Docker Bridge
网络没有任何问题,但是,如果宿主机是网关,或者Openwrt
的时候,WAN
口也能轻松访问容器暴露出来的端口,带来很大的安全问题。
所以核心问题是阻止
WAN
口访问,此前也有大佬 LEAN 采用阻止Docker
操作 iptables的方案,这个方法简单粗暴,Docker 就不会添加DNA
T 转发,当然不存在端口暴露问题,但是带来的问题也有不少,有几率存在没有给docker0
做SNAT
导致整个bridge
网络下的容器都无法联网,实现下来还有其他一些奇奇怪怪的问题。
iptables
非必要操作:
到这里,又有问题来了,如果我有一个容器比如
qBittorrent
,暴露的端口就是希望从外部(公司)等管理的,这样一来就无法访问了,当然也有解决方案:
解决树莓派+openwrt+docker容器内无法联网
http://blog.icy8.cn/posts/23167/