站点图标 星露谷值班站长

解决docker-compose 和 openvpn共存

在我使用 docker-compose 的时候出现了报错,报错如下

Docker“ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network”

如果你出现这个问题,请确认你主机上面是否存在 openvpn,如果不存在则是别的原因。

说明:

Openvpn 为以下网络添加路由:0.0.0.0/1128.0.0.0/1(这些路由覆盖整个 IP 范围),并且 docker 无法找到 IP 地址范围来创建它自己的专用网络。

您需要添加一条默认路由(通过 openvpn 路由所有路由)并禁用这两条特定路由

这个脚本是在 openvpn 添加自己的路由之后调用的。要执行脚本,您需要设置 script-security2允许从 openvpn 上下文执行 bash 脚本。

解决方法:

编辑脚本:fix-routes.sh

#!/bin/sh

echo "Adding default route to $route_vpn_gateway with /0 mask..."
/usr/sbin/ip route add default via $route_vpn_gateway

echo "Removing /1 routes..."
/usr/sbin/ip route del 0.0.0.0/1 via $route_vpn_gateway
/usr/sbin/ip route del 128.0.0.0/1 via $route_vpn_gateway

加上权限

chmod o+x fix-routes.sh

编辑 openvpn 客户端配置文件加入下面两个参数

script-security 2
route-up  你的脚本路径 /fix-routes.sh

重启 openvpn,然后再次使用 docker-compose 就好了

 

退出移动版