解决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就好了

 

发表回复