不要在生产环境绑定 0.0.0.0
只要当进程监听 0.0.0.0
,且没有防火墙的约束,那么其他进程可以通过任意网卡 ip 和端口访问到这个进程。
这是一个安全隐患,因为创建虚拟网卡是很常用的。 如果防火墙规则对于 FORWARD 链没有默认 policy drop。那么恶意程序就可以通过别的虚拟网卡将包发给监听 0.0.0.0
的进程。 如果防火墙规则对于 INPUT 链没有默认 policy drop,那么恶意程序就可以通过物理网卡将包发给监听 0.0.0.0
的进程。
防火墙规则比较复杂,一般人都会忘记或者偷懒而不设置。 所以在生产环境不要轻易绑定 0.0.0.0
,建议绑定到具体的 ip。 个人开发环境随意。
举个例子
docker 容器的 network 默认是 bridge 的,那么任意容器内的进程都可以通过 docker0
的 ip 和端口访问到宿主机上监听了 0.0.0.0
的进程。
docker 可以设置 iptables 规则限制容器访问宿主机的网络。详见 https://docs.docker.com/network/iptables/#restrict-connections-to-the-docker-host