如何使openvpn与docker工作

我最近安装了隐私VPN,事实certificate,启用openvpn打破docker。

当我尝试运行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有以下版本的string

  OpenVPN 2.3.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jun 26 2017 

很多人通过禁用openvpn来“解决”这个问题,所以我特别要求如何让这两个工作同时进行。

参考文献:

  1. https://stackoverflow.com/a/45377351/7918
  2. https://stackoverflow.com/a/42499393/7918

如果这有什么区别,我的VPN提供商是: https : //www.ovpn.com/这里是(有点编辑)configuration文件:

 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 

解决scheme(TL; DR;)

使用以下内容创build/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

添加到您的configuration下面两行:

  script-security 2 route-up /etc/openvpn/fix-routes.sh 

说明

Openvpn为以下networking添加路由: 0.0.0.0/1128.0.0.0/1 (这些路由覆盖整个IP范围),而且128.0.0.0/1无法findIP地址范围来创build自己的专用networking。

您需要添加一条默认路由(通过openvpn路由所有路由)并禁用这两条特定路由。 fix-routes脚本做到这一点。

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

谢谢

我想感谢github上这个评论的作者 ,也感谢ovpn的支持 。