解决方案(TL; DR;)
创建
/etc/openvpn/fix-routes.sh具有以下内容的脚本:
#!/bin/shecho "Adding default route to $route_vpn_gateway with /0 mask..."ip route add default via $route_vpn_gatewayecho "Removing /1 routes..."ip route del 0.0.0.0/1 via $route_vpn_gatewayip route del 128.0.0.0/1 via $route_vpn_gateway
将可执行位添加到文件:
chmod o+x /etc/openvpn/fix-routes.sh。将此文件的所有者更改为root :
chownroot: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脚本。
谢谢
我要感谢github上此评论的作者,也感谢ovpn的支持。



