pve创建ubuntu24虚拟机中部署docker桥接模式双网段配置
·
1.虚拟机中执行,测试虚拟机是否可以访问
ip route del 192.168.2.0/22 dev enp6s18 2>/dev/null
ip route add 192.168.2.0/24 src 192.168.2.100 dev enp6s18
2.配置网络永久生效
路径: /etc/netplan/
network:
version: 2
renderer: networkd
ethernets:
enp6s18:
dhcp4: false
addresses:
- 192.168.1.X/22
- 192.168.2.X/22
nameservers:
addresses: [192.168.1.6, 8.8.8.8]
routes:
- to: default
via: 192.168.1.6 //宿主机IP
# 你要的永久路由 ✅ 正确语法
- to: 192.168.2.0/24
scope: link
from: 192.168.2.X # 192.168.2.X/22的IP 都走192.168.2.0/24
3.修改docker-compose 文件
robot-server:
image: ruoyi/ruoyi-server:5.5.3
container_name: robot-server
restart: unless-stopped
environment:
# 时区上海
TZ: Asia/Shanghai
SERVER_PORT: 8080
SNAIL_PORT: 28080
MONITOR_USERNAME: ruoyi
MONITOR_PASSWORD: 123456
ports:
- "8081:8080"
volumes:
# 修正路径拼写错误,保持和其他服务一致的路径规范
- /mn/dockerfile/robotserver:/opt/robotserver
# LibreOffice临时目录挂载(持久化,避免容器重启丢失)
- /mn/dockerfile/robotserver/lo_shared:/tmp/lo-shared
# skywalking 探针
# - /docker/skywalking/agent/:/ruoyi/skywalking/agent
privileged: true
sysctls:
net.ipv4.conf.all.src_valid_mark: 1
networks:
- ruoyi-network
必须要有:
privileged: true
sysctls:
net.ipv4.conf.all.src_valid_mark: 1
4.添加规则
安装持久化工具
sudo apt update
sudo apt install -y iptables-persistent
-
- 清空旧规则
iptables -t nat -F POSTROUTING
- 2.加第一条规则:容器访问 192.168.2.0/24 强制源 IP
iptables -t nat -A POSTROUTING \
-s 172.20.0.0/16 \
-d 192.168.2.0/24 \
-j SNAT --to-source 192.168.2.100
解释(你只要知道:这是容器网段 → 强制源 IP)
172.18.0.0/16 = 你的 Docker 桥接网段
192.168.2.0/24 = 目标网段(2 段所有设备)
–to-source 192.168.2.100 = 容器访问时伪装成这个 IP
- 3.加第二条规则:容器访问其他所有网络 正常走 NAT(保证 1 段能通)
iptables -t nat -A POSTROUTING \
-s 172.20.0.0/16 \
! -d 192.168.2.0/24 \
-j MASQUERADE
- 4.永久保存规则
netfilter-persistent save
- 5.重启容器
docker-compose up -d robot-server
现在 1 网段 和 2 网段 都通了
• 访问 192.168.2.180 → 自动用源 IP 192.168.2.100 ✅
• 访问 192.168.1.x、外网、网关 → 正常访问 ✅
• 重启服务器不失效 ✅
• 桥接 Docker 完全正常 ✅
查看最终正确规则
iptables -t nat -L POSTROUTING -n
你会看到:
SNAT all -- 172.20.0.0/16 192.168.2.0/24 to:192.168.2.100
MASQUERADE all -- 172.20.0.0/16 !192.168.2.0/24
这就是双网段配置
现在测试:
- 容器访问 192.168.2.180 ✅ 通
- 容器访问 192.168.1.6 ✅ 通
- 容器访问外网 ✅ 通
更多推荐
所有评论(0)