web-dev-qa-db-ja.com

OpenVPNでのクライアント静的IPのこの割り当てが失敗するのはなぜですか?

OpenVPNサーバーを実行していて、特定のクライアントに静的IPを割り当てたいのですが。

これは私のserver.confです。 I thinkこれにより、仮想IPのプールが10.5.24.209から10.5.24.223に及ぶように構成されます。

port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.5.24.208 255.255.255.240
#This netmask should span IPs .208-.223.
ifconfig-pool-persist ipp.txt
Push "redirect-gateway def1 bypass-dhcp"
Push "dhcp-option DNS 168.xx.xx.xx"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
client-to-client
client-config-dir ccd

これは/etc/openvpn/ccd/W7LocalVMのコンテンツです。W7LocalVMはクライアントの共通名です。このディレクティブの機能はよくわかりませんが、最初のIPはクライアントに必要な静的IPであり、2番目のIPはサーバーのIPでなければなりません。

ifconfig-Push 10.5.24.210 10.5.24.209

しかし、このサーバー構成でクライアントを接続しようとすると、次のエラーが発生します。

Mon Aug 07 14:07:34 2017 Set TAP-Windows TUN subnet mode network/local/netmask = 10.5.24.208/10.5.24.210/10.5.24.209 [SUCCEEDED]
Mon Aug 07 14:07:34 2017 MANAGEMENT: Client disconnected
Mon Aug 07 14:07:34 2017 ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet
Mon Aug 07 14:07:34 2017 Exiting due to fatal error

IP 10.5.24.210はサーバー側で定義されたサブネット内にあると思いましたが、このエラーが発生する理由がわかりません。誰かが私を助けてくれませんか?

8
Magnus

この問題は、openvpnがifconfigオプションをIPとそれに続くサブネットマスクとして解析しようとしているために発生します。

マニュアルページによると:

-トポロジモード

...

サブネット-ポイントツーポイントトポロジーではなく、ローカルIPアドレスとサブネットマスクを使用してtunインターフェースを構成するサブネットを使用します。これは、-devタップとイーサネットブリッジングモードで使用されるトポロジーと同様です。このモードは、接続しているクライアントごとに単一のIPアドレスを割り当て、Windowsでも機能します。サーバーとクライアントがOpenVPN 2.1以降、または--topologyディレクティブコードで手動でパッチされているOpenVPN 2.0.xの場合にのみ使用できます。 Windowsで使用する場合、バージョン8.2以降のTAP-Win32ドライバーが必要です。 * nixで使用する場合、tunドライバーが、リモートエンドポイントIPアドレスの代わりにサブネットを設定するifconfig(8)コマンドをサポートする必要があります。

このオプションは、OpenVPN 2.1以降に存在します。

注:--topologyサブネットを使用すると、-ifconfigの引数の解釈が「アドレスネットマスク」を意味するように変更され、「ローカルリモート」ではなくなります。

-ifconfig l rn

TUN/TAPアダプターのパラメーターを設定します。 lは、ローカルVPNエンドポイントのIPアドレスです。ポイントツーポイントモードのTUNデバイスの場合、rnはリモートVPNエンドポイントのIPアドレスです。 TAPデバイスの場合、または--topologyサブネットで使用されるTUNデバイスrnは、作成または接続されている仮想ネットワークセグメントのサブネットマスクです。仮想ポイントツーポイントIP接続を容易にするTUNデバイスの場合(--topology net30またはp2pモードで使用される場合)、-ifconfigの適切な使用法は、既存のサブネットのメンバーではない2つのプライベートIPアドレスを使用することです。使用中です。 IPアドレスは連続している場合があり、リモートピアでは順序を逆にする必要があります。 VPNが確立された後、rnにpingを実行すると、VPNを介してpingが実行されます。

提供するTAPデバイスの場合...

サーバーコード内で、トポロジをsubnetに設定し、serverステートメントを使用してトポロジをクライアントにプッシュします。

上記のドキュメントによると、「ローカル」、「リモート」アドレスを使用してifconfigをプッシュする代わりに、「/ etc/openvpn/ccd/W7LocalVM」に以下を追加する必要があります。

ifconfig-Push 10.5.24.210 255.255.255.252
Push route 10.5.24.210 255.255.255.252
# ifconfig 10.5.24.209 255.255.255.252

最後の行はおそらく不要ですが、接続を機能させるためにサーバー側でifconfig-Pushが「すべき」ことの例として残されています。

4
Ferrybig