web-dev-qa-db-ja.com

ipv4とipv6のクライアントが混在するOpenVPN

さまざまなクライアントを処理するVPNサーバーがあります。 ipv4のみを使用するもの、ipv4とipv6を使用するもの、ipv6のみを使用するものがあります。これらのクライアントの一部はローミングしているので、理想的には、使用可能な場合はipv6に接続し、使用できない場合はipv4にフォールバックする必要があります。

私の現在のセットアップでは、OpenVPNはipv4とipv6をリッスンします:

proto udp
proto udp6
dev tun

私の最初の質問はここにあります:これはうまくいくようですが、両方のプロトコルを1つの構成ファイルに含めることは安全で正しいですか?

クライアントの構成に2つのリモートインスタンスがあります。

remote vpn.domain.tld port udp6
remote vpn.domain.tld port udp

私の質問もここで機能しているようです(失敗した場合は最初にudp6を試すと、udpにフォールバックします)、これはこれを行う良い方法ですか?

11
Tuinslak

上手。

サーバー側では、「proto」を2回指定しても実際には何も行われません。「proto udp6」は、デュアルスタックソケットをバインドしてv4 + v6を処理し、前の行の「proto udp」を上書きします。

2.3のクライアントでは、2つのリモートがあり、「udp6」と「udp」を使用する方法が適しています。これは、古いソケットコードが適切にフェイルオーバーできないためです。

Git master(2.4-to-be)または3.0(OpenVPN Connect)クライアントでは、getudrinfo()を適切に呼び出し、サーバーとネットワークがサポートするすべてのIPプロトコルを使用するため、最初に1つのファミリを試し、 OSシグナルの設定(getaddrinfo()結果の順序付けを使用)を使用して、もう一方にフォールオーバーします。

ガート

11
user2156968