22
2025
05
22:25:56

云手机全球落地实战:用策略路由实现Docker容器网络自由切换

在实际的云手机项目上云手机技术揭秘!低成本实现1台电脑变百部"虚拟手机"实战,我们有时会需要让不同的终端通过不同的网络出口访问互联网。如果是物理网络,可以参考我们之前的企业路由器进行配置连WiFi就能切IP!揭秘企业级路由器多VPN出口黑科技!。但云手机基于Docker网络,将源IP地址暴露出来不是一个好方案,所以我们可以结合策略路由来操作一下。

为了直观进行展示,我们重新构建一个Ubuntu系统的docker镜像,安装好常用的命令工具。Dockerfile文件内容如下:






nano Dockerfile# 创建 Dockerfile 文件FROM ubuntu:24.04# 安装基础工具包RUN apt-get update && apt-get install -y iproute2 tar wget lshw ethtool iputils-ping traceroute curl

然后,我们使用Dockerfile文件来构建Docker镜像,并命名为ubuntu2204:0520。


docker build -t ubuntu2404:0520 .

图片

这样,我们就得到了一个Ubuntu系统的Docker镜像。

接下来,我们先看一下默认的Docker网络。

图片

默认情况下,Docker容器可以通过连接到bridge驱动类型的docker0网络,获取172.17.0.1/16网段的IP地址;在访问互联网时,查找系统路由表进行转发。

那我们就创建一个名为Singapore的Docker网络,驱动类型选择为bridge,设置子网为10.1.11.0/24,命令如下:




docker network create -d bridge \  --subnet=10.1.11.0/24 \  Singapore

图片

可以看到,网络创建成功,使用docker network ls查看的名称为Singapore,但是查看IP地址时显示的网卡名称却是br-7172fe7c7488,多少有点不方便。

回顾一下Docker网络从入门到精通:7个核心命令实战详解,我们可以使用-o指定网络选项com.docker.network.bridge.name,将值指定为Singapore。






docker network create -d bridge \  --subnet=10.1.11.0/24 \  -o com.docker.network.bridge.name=Singapore \  Singapore

图片

这样,我们就得到了一个完整的Singapore网络。

接下来,我们创建一个Docker容器,并将其网络连接到Singapore网络。





docker run -it --rm \  --name=Singapore \  --network=Singapore \  ubuntu2404:0520

图片

可以看到,该容器自动获取到了Singapore网络的子网地址10.1.11.2/24。此时,容器的流量还没有转发到新加坡网络。

图片

接下来,我们创建一个名为Singapore的路由表,编号ID为101。


echo "101 Singapore" >> /etc/iproute2/rt_tables

图片

然后,就是创建策略路由。我们假设你已经参考之前的文章完成了全球网络的搭建(netmaker),指定该路由表的网络出口下一跳为新加坡,同时指定源地址为Singapore网络的查此表进行转发。



ip route add default via 10.33.5.1 table 101ip rule add from 10.1.11.0/24 lookup 101 priority 1001

图片

此时,我们再查看容器的网络出口,就变成新加坡了。

图片

按照这个做法,我们再新建一个名为Quanzhou的Docker网络,驱动类型选择为bridge,设置子网为10.1.12.0/24,命令如下:





docker network create -d bridge \  --subnet=10.1.12.0/24 \  -o com.docker.network.bridge.name=Quanzhou \  Quanzhou

图片

再创建一个指定泉州网络出口的策略路由。






echo "102 Quanzhou" >> /etc/iproute2/rt_tablesip route add default via 192.168.200.1 table 102ip rule add from 10.1.12.0/24 lookup 102 priority 1002ip rule show

图片

最后,我们再创建一个Docker容器,并将其网络连接到Quanzhou网络。





docker run -it --rm \  --name=Quanzhou \  --network=Quanzhou \  ubuntu2404:0520

图片

可以看到,这个容器的出口网络直接就是泉州网络了。

最后,我们完整展示一下,如何将容器连接到不同的网络出口。

图片

怎么样?这里的Docker容器使用的是Ubuntu系统,如果换成云手机的系统,不就可以实现随心落地全球网络了吗?




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://zblog.hqyman.cn/post/11325.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: