web-dev-qa-db-ja.com

ブリッジモードでOpenVPNを機能させるために、OpenVPN TAPインターフェイスでブリッジされたLAN物理インターフェイスが必要なのはなぜですか?

ここにいくつかの(少し異なるかもしれない)質問がありますが、互いに関連しているので、1つの質問でそれらを尋ねることを好みました。

OpenVPNクライアント(OpenVPNはブリッジモードでセットアップされています)がDockerコンテナーに接続できるようにしようとしています。
既知のように、Dockerコンテナーはすべて、ブリッジ(docker0ブリッジなど)を介して相互に接続されています。

私はいつもホームサーバーで自分のブリッジ(br0)を使用していました。そこでは、そのブリッジ(br0)を使用するようにDockerをセットアップし、そのブリッジでOpenVPNインターフェイス(tap0)と物理インターフェイス(eth0)をブリッジします。 LAN経由でホームルーターに接続しました。そして、それは常に私にとってはうまくいき、すべてのOpenVPNクライアントは常にbr0でブリッジされた各Dockerコンテナにアクセスできました(OpenVPNクライアントとDockerコンテナの両方が私のLAN範囲内のIPを持っています)。

数日前、私はVPSをレンタルしました。この場合、物理インターフェイスはインターネットに直接接続されています(一意のパブリックIPがあります)。
以前と同じことを行い(すべてのコンテナーにbr0を使用するようにDockerを設定)、tap0でOpenVPNbr0をブリッジしました。

私が直面した問題は、OpenVPNクライアントがDockerのコンテナーにpingまたはアクセスできなかったことです(コンテナーは他のDockerのコンテナーにpingを実行してアクセスできましたが、OpenVPNクライアントにはアクセスできませんでした)。また、クライアントは相互にpingを実行できませんでした。

物理インターフェイスがブリッジされていないということはありますか?はいの場合、OpenVPN TAPインターフェイスに加えてサーバーのインターフェイス(LAN経由でルーターに接続されている可能性があります)をブリッジして、ブリッジモードで機能するOpenVPNを取得する必要があるのはなぜですか?

そして、その問題は私の心に別の関連する質問を提起しました:クライアントがとにかくtap0インターフェースの一部である限り、なぜ彼らは何らかの理由でTAPインターフェースから出ることなくお互いに単純にアクセスできないのですか?私の物理インターフェースが果たす役割は何ですか?

私の問題が本当にブリッジされた物理インターフェイスがないことが原因であった場合、その物理インターフェイスなしでブリッジモードでOpenVPNを完全に機能させるにはどうすればよいですか(または、物理インターフェイスが直接接続されている限り、少なくともその解決策はありますか? LANのないインターネット)?

誰かがそのOpenVPNを機能させるのを手伝ってくれることを願っています

追加:

いくつかのビデオを見た後、私はまだその質問があります。2つのTAPインターフェースがある場合、それらのすべてが1つのvirtualboxシステムにマップされます。 tap0 -> vb0tap1 -> vb1、および両方のtap0 and tap1はブリッジbr0(物理インターフェイスには接続されていません)に接続されていますが、tap0tap1のみがブリッジされていますが、vb0 and vb1は相互にpingを実行できますか? (私は今、どん​​な種類の外部接続にも興味がありません)。 @ shodanshok の答えによると、いいえ、そうではありませんよね?今まで理解できなかった理由がよくわかりませんが、その点を詳しく説明していただけますか?

3

OK、たくさんの実験の後、今、私は私の質問に答えて、私の経験を共有することができます:

ブリッジモードでOpenVPNを実行するには、ブリッジ(Linuxではbr0など)が必要ですか?

いいえ!私はいつも反対のことを考えていましたが、今のところ、OpenVPNを正しく設定するとすぐに、すべてのOpenVPNクライアントに直接接続できることを確認できます。 、およびそれらは独自の分離されたネットワークになります。つまりtap0インターフェースはブリッジの一部ではありません。したがって、tap0でブリッジされた物理インターフェイスも必要ありません。正しく構成されたOpenVPNを備えたtap0のみが機能します。

なぜ最初はうまくいかなかったのですか? (今では動作します!)

問題は実際にはクライアント側にありました!私はいつも、OpenVPNクライアントがすべて私のLAN IP範囲にあることを使用していました。したがって、追加のファイアウォール設定は必要ありませんでしたが、現在、IP範囲は異なります。 (ネットワークは新しい分離されたネットワークです)したがって、すべてのクライアントのWindowsファイアウォールは、他のクライアントからのすべてのpingを単にドロップしていました。それを無効にすると(またはOpenVPN IPプール範囲を許可すると)、すべてが完全に機能しました!!

Dockerはどうですか?コンテナをtap0でブリッジし、OpenVPNクライアントからコンテナに接続できましたか?

はい!非常に単純な構成(ネットマスクとIP範囲は同じ)、ネットマスク/24を使用しましたが、すべてが機能することを確認するために、すべてが非常に基本的でした。うまくいった!

0

OpenVPN tapインターフェースはISO/OSIモデルのレイヤー2で動作するため、レイヤー2が必要(読み取り:ブリッジ/スイッチ) )メインの実際のインターフェースへの接続。

スタックの上位レベル(レベル3)で動作することにより、メインインターフェイスへのブリッジ接続を必要としない(パケットをルーティングする)tunインターフェイスを使用するようにOpenVPN接続を再構成することを強くお勧めします。ルーティングテーブルで指定されているとおり)。

詳細については、 openvpnのマニュアルページ の「server-bridge」セクションを参照してください。

5
shodanshok