我最近安装了privacy vpn,结果发现启用了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 有以下版本字符串
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
最佳答案
解决方案 (TL;DR;)
使用以下内容创建 /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
。
将以下两行添加到您的配置中:
script-security 2
route-up /etc/openvpn/fix-routes.sh
说明
Openvpn 为以下网络添加路由:0.0.0.0/1
和 128.0.0.0/1
(这些路由覆盖整个 IP 范围),而 docker 不能查找 IP 地址范围以创建它自己的专用网络。
您需要添加一个默认路由(通过 openvpn 路由所有内容)并禁用这两个特定路由。 fix-routes
脚本就是这样做的。
openvpn 添加自己的路由后调用此脚本。要执行脚本,您需要将 script-security
设置为 2
,这允许从 openvpn 上下文执行 bash 脚本。
谢谢
感谢author of this comment on github , 还要感谢 ovpn support .
关于docker - 如何使 openvpn 与 docker 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692255/