web-dev-qa-db-ja.com

偽のデフォルトゲートウェイ情報をクライアントに送信するOpenVPNサーバー?

VPNクライアントはOpenVPNサーバーに正常に接続しますが、server.confにPush "redirect-gateway local def1"および/またはPush "route 10.240.0.0 255.255.0.0"の順列が配置/コメント/コメント解除されていても、誤った偽のゲートウェイを設定しているようです。ファイル。

Server.confファイルにはこの宣言server 10.8.0.0 255.255.255.0があり、実際にサーバーには10.8.0.1が割り当てられますが、何らかの理由で、クライアントはVPNの開始中に送信されたメッセージを解釈し、デフォルトゲートウェイを介してトラフィックをルーティングする必要があります。 10.8.0.5で。 Wiresharkによると、後続のパケットは10.8.0.5に送信され、応答を受信しません。これらのパケットがVPN TCPエンドポイントに到達するように、サーバーのtun0インターフェイスに到達しないようです。 (サーバー上のtcpdumpによると。

以下は、VPNに正常に接続した直後のルーティングテーブルの変更を示すOpenVPNクライアント(Tunnelblick)ログの関連行です。

2015-12-11 02:25:18 /sbin/ifconfig utun0 10.8.0.6 10.8.0.5 mtu 1500 netmask 255.255.255.255 up
2015-12-11 02:25:18 /Applications/Tunnelblick.app/Contents/Resources/client.up.tunnelblick.sh -d -f -m -w -pxxxxxxxxxxx utun0 1500 1543 10.8.0.6 10.8.0.5 init
                                        **********************************************
                                        Start of output from client.up.tunnelblick.sh
                                        No network configuration changes need to be made.
                                        Will NOT monitor for other network configuration changes.
                                        DNS servers '8.8.8.8 208.67.222.222' will be used for DNS queries when the VPN is active
                                        The DNS servers include only free public DNS servers known to Tunnelblick.
                                        Flushed the DNS cache via dscacheutil
                                        /usr/sbin/discoveryutil not present. Not flushing the DNS cache via discoveryutil
                                        Notified mDNSResponder that the DNS cache was flushed
                                        End of output from client.up.tunnelblick.sh
                                        **********************************************
                                        add net 104.196.7.35: gateway 192.168.0.1
                                        add net 0.0.0.0: gateway 10.8.0.5
                                        add net 128.0.0.0: gateway 10.8.0.5
                                        add net 10.240.0.0: gateway 10.8.0.5
                                        add net 10.8.0.0: gateway 10.8.0.5
2015-12-11 02:25:20 Initialization Sequence Completed

OpenVPNに正しい情報をクライアントに送信させる方法はありますか?または、私は間違っていて、OpenVPN TCPポートに正しく送信されたパケットがOpenVPNサーバーのtun0インターフェイスに到達しない別の理由がありますか?

2
nomizzz

いいえ、これは正しいです。

OpenVPNは「net30」トポロジーモードで動作します。このモードでは、OpenVPNプロセス自体がルーターです。実際には、仮想ネットワークスキーマは次のようになります。

                                   Client3
                                 10.8.0.14/30
                                    |
                                 10.8.0.13/30
Server 10.8.0.1/30 --- 10.8.0.2/30 OpenVPN 10.8.0.5/30 --- 10.8.0.6/30 Client1
                                 10.8.0.9/30
                                    |
                                 10.8.0.10/30
                                   Client2

サーバーを含むすべての人が10.8.0.x経由で追加のルート10.8.0.0/24を持っています(x-それぞれの内部OpenVPNネクストホップアドレス)。

つまり10.8.0.5は実際にはOpenVPNルーターのアドレスであり、「プロセス内に隠されています」。これは、WindowsをVPNに参加させる場合に必要です。これは、Windowsでは実際のTUNインターフェイスを作成できず、TAPと上記のセットアップでエミュレートされるためです。

これは、「iroute」オプションが存在する理由でもあります。この仮想ルーター内にルートを設定するために使用されます。

WindowsクライアントをVPNに含めたくない場合は、トポロジモードをp2pに設定し、クライアントで直接.1ルートを期待することができます。

詳細については、OpenVPNマニュアル https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage トポロジモードのセクションを参照してください。

3