dockerでopenvpnを動作させる方法
質問
最近、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つを同時に動作させる方法について具体的に聞いています。
参考文献
もしこれが何か違いをもたらすなら、私の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/1
と
128.0.0.0/1
(これらのルートは IP 範囲全体をカバーします) で、docker は独自のプライベートネットワークを作成するための IP アドレスの範囲を見つけることができません。
デフォルトルート (すべてを openvpn 経由でルーティングする) を追加し、これら 2 つの特定のルートを無効にする必要があります。
fix-routes
スクリプトがそれを行います。
このスクリプトは、openvpnが独自のルートを追加した後に呼び出されます。スクリプトを実行するために
script-security
から
2
で、openvpn コンテキストから bash スクリプトの実行が可能になります。
ありがとうございます。
私は githubのこのコメントの作者 に感謝します。 ovpn サポート .
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] Docker Dockerコンテナからホストへのファイルコピー
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Dockerで1つ以上のポートを公開するには?
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み] Ansibleの二重中括弧のエスケープ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Docker "ERROR: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network".
-
[解決済み] docker login unknown shortorthand flag: 'e'
-
[解決済み] Dockerのデタッチドモード
-
[解決済み] ドッカーENVとRUNエクスポートの比較
-
[解決済み] docker-composeで--add-hostやextra_hostsを使用する。
-
[解決済み] Docker ENTRYPOINTとKubernetesコンテナ仕様COMMANDの違い?
-
[解決済み] Docker - 死んだコンテナを削除できない
-
[解決済み] dockerを1.12にアップデートした後、イメージをpull/pushすることができません。
-
[解決済み] docker swarmスタック内の1つのサービスを再起動する
-
[解決済み] Dockerのimportとloadの違いは何ですか?