解决docker-compose 和 openvpn共存

769次阅读
没有评论

在我使用 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 就好了

 

正文完
 
ddn
版权声明:本站原创文章,由 ddn 2017-12-28发表,共计768字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。