IP转发:
操作系统拥有 IP转发(英语:IP forwarding)功能,意味着该系统能接收从接口传送进来的 网络数据包(英语:network packets),如果识别到该数据包不用于该系统自身,那么系统将会将该网络数据包传送到另外一个网络去,用恰当地方式转发该数据包。
一个典型的场景是需要去搭建一个路由器以连接两个不同网络。
路由表
当一个IP数据包抵达系统后,系统将根据该数据包的目的地址来决定是否转发该数据包,以及转发到何处。路由表提供了目的地址和转发目标(下一跳)之间的对应关系。 在大多数操作系统上可用netstat -r命令查看路由表,route命令修改路由表。
由于默认情况下系统仅通过IP数据包的目的地址来决定转发方式,对于一些路由器配置场景来说,仅配置路由表存在局限。此时应额外采用策略路由来更灵活地配置路由规则。
启用/禁用IP转发
Linux
可通过设置sysctl项net.ipv4.ip_forward为1来启用IPv4转发。在大多数的发行版中,可以修改配置文件: /etc/sysctl.conf来持久化设置该sysctl项,例如:
编辑 /etc/sysctl.conf 文件: nano /etc/sysctl.conf 添加该行内容 或 去除注释该行内容: net.ipv4.ip_forward=1 退出并保存,运行改行命令。 sysctl -p
上述方式,将会永久性地启动IP转发,并且立即生效。
总结
由于docker自身会创建一个网络,叫做bridge,跟系统的docker0是一个东西,在主机映射的端口是在系统的eth0上,这时候就需要开启IP转发,来将映射到主机IP:port的流量转发到bridge(docker0)上来。
|