我最近安装了隐私vpn,事实证明启用的openvpn会破坏docker。
当我尝试运行时,出现docker-compose up以下错误
docker-compose up
ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
禁用vpn可以解决此问题(但是我宁愿不禁用它)。有什么办法可以使这两者和平共处?我使用debian jessie,并且我的openvpn具有以下版本字符串
OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 26 2017
很多人通过禁用openvpn来“解决”此问题,因此我专门询问如何使这两个工具同时工作。
如果这有什么不同,我的vpn提供程序是:https : //www.ovpn.com/,这里是(有些编辑)配置文件:
client dev tun proto udp remote host port remote-random mute-replay-warnings replay-window 256 push "dhcp-option DNS 46.227.67.134" push "dhcp-option DNS 192.165.9.158" remote-cert-tls server cipher aes-256-cbc pull nobind reneg-sec 432000 resolv-retry infinite comp-lzo verb 1 persist-key persist-tun auth-user-pass /etc/openvpn/credentials ca ovpn-ca.crt tls-auth ovpn-tls.key 1
创建/etc/openvpn/fix-routes.sh具有以下内容的脚本:
/etc/openvpn/fix-routes.sh
#!/bin/sh echo "Adding default route to $route_vpn_gateway with /0 mask..." ip route add default via $route_vpn_gateway echo "Removing /1 routes..." ip route del 0.0.0.0/1 via $route_vpn_gateway ip route del 128.0.0.0/1 via $route_vpn_gateway
将可执行位添加到文件:chmod o+x /etc/openvpn/fix-routes.sh。将此文件的所有者更改为root :chown root:root /etc/openvpn/fix-routes.sh。
chmod o+x /etc/openvpn/fix-routes.sh
chown root:root /etc/openvpn/fix-routes.sh
通过以下两行将其添加到您的配置中:
script-security 2 route-up /etc/openvpn/fix-routes.sh
Openvpn添加了以下网络的路由:0.0.0.0/1和128.0.0.0/1(这些路由覆盖整个IP范围),而docker无法找到IP地址范围来创建自己的专用网络。
0.0.0.0/1
128.0.0.0/1
您需要添加默认路由(通过openvpn路由所有路由)并禁用这两个特定路由。fix-routes脚本可以做到这一点。
fix-routes
openvpn添加自己的路由后,将调用此脚本。要执行脚本,您需要设置script-security为2允许从openvpn上下文执行bash脚本。
script-security
2
我要感谢github上此评论的作者,也感谢ovpn的支持。