Mac OSおよびiOSクライアントにVPNルートを通知するにはどうすればよいですか?


0

ホームネットワーク(10.0.1.0/24)には、MacとiOSデバイスがあります(他のデバイスは関係ありません)。LANクライアントは、Comcastのケーブルモデムに接続されたAirport Extreme(AEBS)を介してIPv4およびIPv6(ネイティブ)アクセスを取得します(これ以上の選択肢はありません)。いくつかの$ workリソースにアクセスするにはVPNが必要です。VPNが手元にあるどの画面でも「機能した」場合は便利です。各デバイスでVPNクライアントを管理しないように、サーバー(10.0.1.252)でOpenVPNを実行しています。

VPNへの接続時に、サーバーは一般的な静的ルートを取得し、転送とNATを有効にしました。そのため、$ private_lan->からのトラフィック<vpn_netblocks>は、VPNトンネル(tun0)を適切にNATルーティングされます。私のDNS再帰はそのサーバーで実行され、特定のDNS要求を内部DNSサーバーに転送することを認識しています。それはすべて動作します。

最後のビットは、LANクライアントにVPNを認識させることです。デフォルトルートはAEBS(10.0.1.1)です。AEBSとケーブルモデムには独自のバッテリーが搭載されており、電源が切れてもネットワークが長時間稼働するため、これは理想的です。LANクライアントがVPNアクセスを取得するには、サーバーで利用可能なより具体的なルートを知る必要があります。Mac OSでは、次のような静的ルートを手動で追加します:

route add 10.7.0.0/16 10.0.1.252

問題は、これらのルートが利用可能であることをMacおよびiOSデバイスに自動的に通知する方法です。AEBSに静的ルートを追加することはできません(間違っていることが証明されてうれしいです!)。サーバーを指すようにデフォルトのIPv4ルートを変更するのが私の最後の手段です。

RFC 3442に記載されているように、静的ルート(dhcpオプションコード121)としてdhcpd.confにルートを追加しようとしました。dhcpd.confの関連部分は次のとおりです。

# options for static routes
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

subnet 10.0.1.0 netmask 255.255.255.0 {
      option rfc3442-classless-static-routes 16, 10,7, 10,0,1,252;
      option ms-classless-static-routes      16, 10,7, 10,0,1,252;
      # needed b/c this overrides option routers
      option rfc3442-classless-static-routes  0, 10,0,1,1;
      option ms-classless-static-routes       0, 10,0,1,1;
}

オプションはdhcpdによって提供されていますが、Mac OS Xでは無視されます。ある:

  1. 動作する他のDHCPオプションはありますか?
  2. OSPFまたはRIPをセットアップすると、MacとiOSの両方のデバイスで「正常に動作しますか?」
  3. IPv4の近隣探索プロトコルのようなものですか?

動作することがわかっているドキュメントへのポインタは大歓迎です。

更新

  1. 私の設定を示すdhcpd.confを追加しました
  2. RFC 3442のサポートがないことを引用するAppleディスカッションへのリンクを追加

ちなみに、私はあなたがそこまで得たことに感銘を受けました!素晴らしい解決策であり、私はこれに従って、どこに行くかを確認します。
-SaxDaddy

回答:


0

LANクライアントのデフォルトゲートウェイをOpenVPNサーバーを指すように設定することはできませんか?それはすでにルーターであり、すべての正しいルートを知っているはずです。

ローカルクライアントが到達できるようにLAN上にあると思います。ものをOpenVPNネットワークに転送することがわかります。ものを境界ルーターに転送するか、インターネットと通信しようとするシステムにICMPリダイレクトを送信します。


そして、「サーバーを指すようにデフォルトのIPv4ルートを変更するのが私の最後の手段です」と自分自身を引用します。
マットシマーソン

0

Ad.1私はOS Xの専門家ではありませんが、次のようにDHCPオプション249(ms-classless-static-routes)をセットアップすることができます。

option ms-classless-static-routes 24, 192, 168, 16, 192, 168, 6, 1; 
24 - mask (number of bits)
192, 168, 16 - network address
192, 168, 6, 1 - gateway

DHCPオプション33(単一ルート)もあります:-https : //ercpe.de/blog/advanced-dhcp-options-pushing-static-routes-to-clients

シングルルート

単一のルートをプッシュするのは非常に簡単です。設定値は、16進数の2つのIPアドレスペアで構成されます。最初のアドレスは宛先ホストで、2番目のアドレスはルーターです。

例:

Destination: 192.168.123.234 (Hex: C0:A8:7B:EA)
Router: 10.34.72.42 (Hex: 0A:22:48:2A)

値は次のとおりです。C0:A8:7B:EA:0A:22:48:2A

注:これはpfsenseの構成です。dhcpdで使用するには、16進数を10進数に変換する必要があります。

間違いを犯した可能性があります。dhcpdの設定を見せていただけますか?

非常に良い説明はこちら:https : //ercpe.de/blog/pushing-static-routes-with-isc-dhcp-server

ネットワークおよびルーターの情報を生の16進値として指定する必要があるため、pfsenseを使用してdhcpクライアントに静的ルートをプッシュすることは困難でした。ISC DHCPサーバーを使用して同じタスクを実行する方が簡単です。まず、グローバルスコープでdhcpオプションをサーバーに宣言する必要があります。

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

2行目はWindowsクライアント用です。これは、MSが既存の121ではなくdhcpオプション249を使用することを決定したためです。次のステップは、サブネット定義でこれらのオプションを宣言することです。

 subnet 192.168.1.0 netmask 255.255.255.0 {
     ... other options ....
     option rfc3442-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2;
     option ms-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, ;
 }

オプションの形式は次のとおりです。

<netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>

値0のバイトは省略されます。繰り返しますが、dhcpクライアントはオプションrouter xxxxオプションを無視することが許可されているため、デフォルトルートをオプションに含める必要があります。そのため、回線オプション rfc3442-classless-static-routes 24、192、168、123、10、10、10、1、0、192、168、1、2は、次のルーティング情報を指定します。

24, 192, 168, 123, 10, 10, 10, 1: 192.168.123.0/24 via 10.10.10.1 0,
192, 168, 1, 2: 0.0.0.0 via 192.168.1.2 (default route)

コメントも必ず読んでください。

役に立つかもしれない他のスレッド@ serverfaultもあります:

https://serverfault.com/questions/248821/does-the-os-x-dhcp-client-support-classless-static-routes-rfc3442

もう1つ:OpenVPNのプッシュオプションを知っていますか?次のようなオプションを追加することで、OpenVPNサーバー経由でルートを直接プッシュできます。

push "route 192.168.16.0 255.255.255.0 192.168.6.1" 

つまり、ネットワーク192.168.16.0のクライアントに静的ルートを渡し、192.168.6.1を介して255.255.255.0をマスクします。


おかげでミカル。質問には実際には答えていません(MacおよびiOSデバイスにルートをプッシュする方法はまだありません)が、役に立つ参考文献がいくつか含まれています。十分な評判を得たら、投票します。FTR、DHCPオプション249も含めてテストしましたが、どちらも機能しませんでした。質問を更新して、dhcpd.confを表示します。
マットシマーソン

DHCPオプション33も試しましたか?
ミハルソコロウスキ

DHCPオプション33は、単一のIPアドレスのルートを追加します。このようなケースでは、/ 16個のブロック(それぞれ65,534個の加算器)をルーティングする必要があるため、実際には役に立ちません。と思われるのQuaggaは、マックOS(MacPortsので利用可能)に、いくつかのルーティングデーモンを追加するようには、Mac OS Xのために働く可能性
マットSimerson

はい、OpenVPNのプッシュオプションを知っています。この場合、私のサーバーはOpenVPNクライアントであり、プッシュされたルートの受信者です。それは、「VPNへの接続時に、サーバーが追加された一般的な静的ルートを取得する」方法です。
マット・シマーソン

さて、今私はそれを得た。:)サーバー経由でVPNネットワークを指すメインルーターに静的ルートを追加することを考えましたか?
ミハルソコロウスキ

0

質問に対する正しい答えは、「できない」と思われます。

Mac OS X(およびiOS)はRFC 3442をサポートしていません。MacOS X 10.10にはルーティング用のマニュアルページが含まれていますが、バイナリは存在しません。

回避策があります。

  1. より具体的なルートのMAC OS Xクライアントに通知するためには、ソフトウェアパッケージと呼ばれる介して、Mac OS Xでのルーティングデーモンを実行することができますクアッガ(その後、サーバー上で同等のデーモンからOpenVPNのルートを知ることができるripdとospfdを含み、ルーティング、クアッガ、シマウマ)。これは、#2を回避するのに面倒です。

  2. (ルーターではなく)サーバーでデフォルトのIPv4ルートを指定し、短いDHCPリースを使用します。サーバーが利用できない場合、DHCPリースはすぐに期限切れになり、デバイスはデフォルトゲートウェイとして自身を使用してAEBSから新しいリースを取得します。

(はい、LANに2つのDHCPサーバーがあり、それを10年以上実行しています。サーバー上のdhcpdは、ダウンしている場合を除いて勝ちます。つまり、完全に動作します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.