OpenVPN はプール内の IP を除外します

OpenVPN はプール内の IP を除外します

Linux Ubuntu ボックスで OpenVPN サーバーを実行しています。このサーバーには複数のクライアント (500 以上) が接続するため、server-bridge オプションを次のように設定します。

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254

これは完璧に動作します。クライアントは動的 IP アドレスを取得し、クライアント数が 255 を超えると、200 ブロックから 201 ブロックに移動します。

これらのクライアントに接続する内部アプリケーションがありますが、このアプリケーションは IP アドレス 10.0.200.255 および 10.0.201.0 でクラッシュします。

これらの IP アドレスは私が指定した範囲内ですが、使用できません。

彼らをプールから除外する方法はありますか?

それとも設定を変更する必要がありますか?

答え1

単一の構成ファイルを使用する OpenVPN の組み込み DHCP サーバーでは、複数の IP 範囲を使用したり、特定の IP を除外したりすることは直接できません。

私は3つの解決策を提案します:

  • 回避策ただし、動作は保証されません
  • DHCPプロキシモードシンプル、クリーン、そして他のオプションも多数
  • 複数のインスタンスより複雑であれば、パフォーマンス上の利点がある可能性がある

ただし、問題の根本的な原因である、欠陥のある内部アプリケーションを修正することをお勧めします。

回避策

サーバー構成ファイルに以下を追加します。

server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.210.254
ifconfig-pool-persist ipp.txt 0

0ディレクティブの末尾にある は、読み取り専用の設定ファイルとしてifconfig-pool-persist扱います。ipp.txt

ファイルを作成します/etc/openvpn/ipp.txt:

reserved-not-used-cn-1,10.0.200.255
reserved-not-used-cn-2,10.0.201.0
reserved-not-used-cn-3,10.0.201.255
...

予約済みのすべての IP アドレスを という形式でこのファイルに追加します<Common-Name>,<IP-address>。フィールドの値には、<Common-Name>どのクライアント証明書でも使用されない値を選択します。

OpenVPN のマニュアルページに記載されているように、これが常に機能するとは限りません。

このファイルのエントリは、OpenVPNでは、共通名とIPアドレスの過去の関連付けに基づいて提案としてのみ扱われることに注意してください。指定された共通名が常に指定されたIPアドレスを受け取ることを保証するものではありません。割り当てを保証するには、--ifconfig-push

DHCPプロキシモード

使用しているのはタップセットアップでは、これが最善の解決策かもしれません。これにより、フル機能のDHCPサーバー構成に応じて、サーバー側のサブネット上またはサーバー自体上にあります。イーサネット ブリッジを構成するには、まず OS のブリッジ機能を使用して、TAP インターフェイスを別のインターフェイスとブリッジする必要があります。

オープンVPNサーバー設定:

server-bridge

この指令は次のように拡張されます。

mode server
tls-server
push "route-gateway dhcp"

DHCPDサーバー設定:

subnet 10.0.100.1 netmask 255.255.0.0 {
  range 10.0.200.1 10.0.200.254;
  range 10.0.201.1 10.0.201.254;
  range 10.0.202.1 10.0.202.254;
  range 10.0.203.1 10.0.203.254;
  ...
}

複数のインスタンス

別の方法としては、複数の構成ファイルを使用して、サブネットごとに個別の openvpn インスタンスを作成する方法があります/24。ただし、この方法ではインスタンスごとに異なるポートを使用する必要があります。

インスタンス 1 の構成ファイル:

port 11941
server-bridge 10.0.100.1 255.255.0.0 10.0.200.1 10.0.200.254

インスタンス 2 の構成ファイル:

port 11942
server-bridge 10.0.100.1 255.255.0.0 10.0.201.1 10.0.201.254

...

これには以下が必要です:

  • IP範囲固有のクライアント設定とそれぞれのポート番号、
  • または、例えばiptablesポートの着信接続に負荷分散を使用し1194、インスタンス間で均等に分散する

このソリューションは、前述の通り、パフォーマンス上の利点がある可能性がある。ここ

関連情報