实现在两台宿主机下的docker container 中实现多机器通讯

基于我的实验背景

上位机:ubuntu 20.04 (docker humble 22.04)
下位机:ubuntu 22.04(docker noetic 20.04)

目标:实现在上位机中的docker container 容器的22.04环境去成功远程访问 非同网段的下位机的20.04的container容器

具体的参考链接

参考连接
参考链接
参考链接
参考链接

实现流程

我的下位机再此命名为:sunrise
我的上位机在此命名为:zhaobojun
构建自定义网桥:目的是实现在不同网段的docker 通讯

构建网桥

zhaobojun

#创建网桥
docker network create --driver bridge --ipam-driver default --subnet 192.168.20.0/24 --gateway 192.168.20.1 docker-net-bridge
# 查看网桥
docker network ls 
3fc08758bacc   docker-net-bridge   bridge    local

sunrise

#创建网桥
docker network create --driver bridge --ipam-driver default --subnet 192.168.25.0/24 --gateway 192.168.25.1 docker-net-bridge

构建网桥能够避免修改docker 0 的默认固定的172.17.0.1的网段 我觉得有一定的好处

添加路由规则

zhaobojun

#上位机zhaobojun中添加下位机的路由规则(主机2的IP和网段)
route add -net 192.168.25.0/24 gw 192.168.31.67

sunrise

#创建网桥(在主机2中添加主机1的ip和网段)
route add -net 192.168.20.0/24 gw 192.168.31.105

参考防火墙规则
最终参考文章

添加防火墙规则

请添加图片描述

zhaobojun

#开启路由转发
iptables -P FORWARD ACCEPT

iptables -P FORWARD ACCEPT
iptables -A FORWARD -s 192.168.31.0/24 -j ACCEPT #允许下位机的网关 
#配置上位机zhaobojun的iptables规则
iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -d 192.168.25.0/24 -j MASQUERADE

sunrise

sudo route add -net 192.168.20.0/24  gw 192.168.31.105

sudo iptables -t nat -F POSTROUTING
sudo iptables -A FORWARD -s 192.168.31.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.25.0/24 -d 192.168.20.0/24 -j MASQUERADE

路由持久化

zhaobojun

sudo vim / etc/rc.local
route add -net 192.168.25.0/24 gw 192.168.31.105

sunrise

sudo vim / etc/rc.local
route add -net 192.168.20.0/24 gw 192.168.31.67

每个容器内部需要的net工具包

#安装测试工具
apt-get update
#安装ping工具
apt-get install inetutils-ping -y
#安装ip查看工具
apt-get install net-tools -y
#通过nmtui去配置网桥是很好的方法 ——推荐
sudo nmtui
然后添加网桥即可

zhaobojun
请添加图片描述sunrise
请添加图片描述最后成功通讯的结果

请添加图片描述
超宝藏博客

# 查看是否开启ip转发,如果为1则开启
 cat /proc/sys/net/ipv4/ip_forward
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值