1. ホーム
  2. docker

dockerでopenvpnを動作させる方法

2023-10-10 18:14:03

質問

最近、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を無効にすると問題が解決します(しかし、私は無効にしたくないのです)。この2つを平和的に共存させる方法はないのでしょうか?私は 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を無効にすることでこの問題を解決しているので、この2つを同時に動作させる方法について具体的に聞いています。

参考文献

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

もしこれが何か違いをもたらすなら、私の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 .

設定に以下の2行を追加してください。

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

説明

Openvpnは、以下のネットワークに対するルートを追加します。 0.0.0.0/1128.0.0.0/1 (これらのルートは IP 範囲全体をカバーします) で、docker は独自のプライベートネットワークを作成するための IP アドレスの範囲を見つけることができません。

デフォルトルート (すべてを openvpn 経由でルーティングする) を追加し、これら 2 つの特定のルートを無効にする必要があります。 fix-routes スクリプトがそれを行います。

このスクリプトは、openvpnが独自のルートを追加した後に呼び出されます。スクリプトを実行するために script-security から 2 で、openvpn コンテキストから bash スクリプトの実行が可能になります。

ありがとうございます。

私は githubのこのコメントの作者 に感謝します。 ovpn サポート .