网络拓扑说明
实验环境由两台物理机(主机 1 和主机 2),两台路由器(路由器 1 和路由器 2)组成。
![](https://img.haomeiwen.com/i9767009/03d80f38afdb46c5.png)
主机 1 和网关 1 处在同一个子网中,主机 2 和网关 2 处在同一个子网中。主机 1 所有的外网包均由网关 1 进行路由,主机 2 所有外网包由网关 2 进行路由,docker 容器所有外网包由主机 2 的物理网卡(图中红点)进行路由。主机 1 的路由表包含了 0.0.0.0/0 192.168.1.1
,主机 2 的路由表包含了 0.0.0.0/0 10.0.0.1
,docker 容器的路由表包含了 0.0.0.0/0 172.17.0.1
。
主机 2 和 docker 容器在一个子网内,由 arp 协议生成静态路由:172.17.0.2/32 172.17.0.2
。
tips
路由表是收集了所有网卡的信息之后生成的
![](https://img.haomeiwen.com/i9767009/ca5111e5e1d501f3.png)
建立起虚拟专用网之后对路由表造成的影响
主机 2 作为虚拟专用网的 server,主机 1 为虚拟专用网的 client。
虚拟专用网的功能是在逻辑上把主机安排到同一个子网中。建立起虚拟专用网后的逻辑拓扑如下所示。
![](https://img.haomeiwen.com/i9767009/7228f031e0a790f6.png)
主机 1 路由表中增加了一项 0.0.0.0/24 10.8.0.1
。10.8.0.1 就是主机 2 的地址。
![](https://img.haomeiwen.com/i9767009/ba12812da08353db.png)
主机 1 发送一个地址为 172.16.0.2 的包,就会遵循路由 0.0.0.0/24 10.8.0.1
转发给 10.8.0.1,也就是发送给了主机 2。
主机 2 分析包的目的地是 172.17.0.2,满足主机 2 路由表中的 172.17.0.2/32 172.17.0.2
,于是将这个包转发给 172.17.0.2。最终主机 1 的包正确发送给了 docker 容器。
结果展示
docker 容器在 8000 端口运行一个简单的 ftp 服务器。建立起虚拟专用网之后,主机 1 用内网 ip 访问 docker 容器。
![](https://img.haomeiwen.com/i9767009/582ef14b017dc438.png)
网友评论