2018.02.16(金)
iMac に VPN Server を構築する
macOS High Sierra
macOS 10.13.4 (17E202)
iMac (Retina 5K, 27-inch, Late 2015)
経過:
iMac で VPN の研究を始めたのは日頃使っている AirMac Extreme に VPN Server 機能がないことを知った時からである。
AirMac Extreme に VPN Server 機能が無いのは Mac に別途 macOS Server というアプリがあるからだと思われる。
私はだいぶ以前から Web Server を Mac に Nginx を入れて構築しいるので、VPN Server を構築するために macOS Server を使う気にはなれなかった。
こんなとき、AirMac Extreme の上流にある NTT東日本の PR500KI に VPN Server 機能があることに気が付いた。この PR500KI は PPPoEブリッジに設定してルーター機能を外してある。
そこで、PR500KI をルーターにして iMac に VPN Server を構築し、手元にある MacBook を VPN Cliant にして WAN 接続を試みたところ簡単に成功した。
しかし、iMac の Web Server をローカルで見ることが出来なくなり、調べてみると PR500KI には ヘアピン NAT といわれる機能がないためであることがわかった。
AirMac Extreme には ヘアピン NAT があるので、この機能は全てのルーターに備わっているものと思い違いをしていたことも解った。
そこで、この両方の機能を持っているルーターを探してみたところ、Amazon で EdgeRouter X ( Wi-Fi 機能は無い ) を見つけることが出来た。
PR500KI 下流の EdgeRouter X に VPN Server とヘアピン NAT を設定し、更に下流に AirMac Extreme をブリッジ接続し Wi-Fi を設定した。
これで、外出先から MacBook で自宅 Web Server と自宅 VPN Server を利用することが出来るようになり、神保町で開かれたセミナーに出掛けたとき、MacBook を使ってこれらのサーバーが働いていることを確認した。
暫くして Safari で「Macですべてのターミナルコマンドを一覧表示する方法」を見つけたので iMac のターミナルを使って調べ vpnd というコマンドが存在しているのを知った。
https://moshbox.jp/?p=27311
そこで、vpnd の man ページを見てみると次のようであった。
・・・・・・・始まり・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
vpnd(8)BSDシステム管理者マニュアルvpnd(8)
名
vpnd – Mac OS XのVPNサービスデーモン
シノプシス
vpnd [-d | -n | -x] [-i server_id]
vpnd [-h]
DESCRIPTION
vpndを使用すると、外部ホストがL2TP over IPSec経由またはPPTP経由のトンネリングを許可します。
安全でない外部ネットワーク(インターネットなど)を「安全な」ネットワークにして、
企業ネットワークなどの内部ネットワーク。すべてのトラフィック
L2TP / IPSecを使用してトンネルを暗号化して安全な通信を提供する
PPTPより高いレベルのセキュリティを提供します。
vpndは着信接続をリッスンし、それぞれの接続を使用可能なものとペアにします
内部IPアドレスを取得し、pppd(8)への接続を適切な値で渡します。
パラメータを求めた。 vpndのパラメータは、システム構成で指定されます。
(plist)ファイルをXML形式で保存します。このファイルには、
各図は、server_idと呼ばれるキーによって識別されます。パラメ –
トンネルプロトコル、割り当てられるIPアドレス
クライアント、PPPパラメータなど
vpndは、-iオプションを使用して特定の構成に対して起動されます。
server_idが引数として実行されます。 vpndを実行することもできます
-iオプションを使用しないでください。この場合、設定ファイルをチェックします
実行される構成のリストを含む特別な配列
各server_idのvpndのコピーをforkして実行します。ランニング
特定のプロトコルに対して複数のvpndプロセスが同時に実行されない
許可されます。
vpndは、ブートプロセス中に起動項目によって起動されます。
フィールドVPNSERVERは、/ etc / hostconfigに値-YES-で定義されています。 Typ-
この場合、-iオプションなしで起動され、
構成ファイルをチェックして、どの構成を使用するかを決定します。
実行される。
vpndは、対象の項目をシステムログに記録します。別のログパスで
構成ファイルで指定する必要があります。
オプション
次のオプションを使用できます。
-dバックグラウンドに移動してログ文字列を端末に出力しないでください。
-h使用法の要約を表示して終了します。
-i設定するplistファイルのServer_id
走る
-nバックグラウンドに移動せず、ログ情報を端末に出力し、
引数リストを検証した後に終了します。
-xバックグラウンドに移動しません。
使用例
デフォルトの呼び出し、
vpnd
設定ファイルから実行する設定のリストを読み込みます
それらを起動します。このデフォルト構成は、起動時に
VPNSERVERを-YES-に定義します。
使用する特定の構成を指定するには
vpnd -i server_id
ファイルとフォルダ
/ usr / sbin / vpnd
/ etc / hostconfig
/システム/ライブラリ/ StartupItems / NetworkExtensions
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
関連項目
pppd(8)vpnd(5)
Mac OS X 2003年8月21日Mac OS X
・・・・・・・終わり・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
そこで、関連項目 vpnd (5) を見てみると次のようであった。
sudo man vpnd -s 5
・・・・・・・始まり・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
vpnd(5)BSDファイル形式マニュアルvpnd(5)
名
vpnd – Mac OS XのVPNリモートアクセスサーバーファイル
DESCRIPTION
このマニュアルページでは、
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plistファイル。
このファイルがターゲットOS Xシステムに存在しない場合、
このマニュアルページにテンプレートファイルが提供されています。
ユーザーは、PLISTファイルエディタ(提供されています)を使用してこのファイルの内容を操作できます
すべてのMac OS Xシステム)、または任意のテキストエディタ。この場合、ユーザは、
プロパティリストの基本的な理解、およびそれらを操作する方法について説明します。
このページの目標は、この設定ファイルのデータベースに関するドキュメントを提供することです。
L2TPまたはPPTPの構成と展開を容易にするための構造体とデータフィールド
特定のサーバープロファイルを指定せずにvpndを起動することにより、
/ ActiveServers
現在使用可能なサーバーIDを一覧表示します。これらのサーバーは
vpnd -i <server_id>パラメータの大文字で始まりました。
/サーバー
DNS、IPv4、Interface、PPP、Radius、Server(common);次の辞書を定義します。
IPSec、L2TP(L2TPトンネルのみ)
/ Servers / <server_id>
<server_id>で識別される、ユーザー定義の名前付きVPNプロファイル構成を示します。
vpnd(8)で定義されたパラメータ
使用可能なデフォルトのサーバー構成には、com.apple.ppp.l2tpと
com.apple.ppp.pptp
・・・・・・途中略・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
構成ファイルをテンプレート化する
このファイルを適切に抽出するには、次のコマンドを実行します。man 5 vpnd | col-b>
com.apple.RemoteAccessServers.plistファイルから非XMLテキストを切り取り、コピーします。
ファイルを適切なディレクトリにコピーします。
—- CUT HERE —-
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>ActiveServers</key>
<array>
<string>com.apple.ppp.l2tp</string>
<string>com.apple.ppp.pptp</string>
</array>
<key>Servers</key>
<dict>
<key>com.apple.ppp.l2tp</key>
<dict>
<key>DNS</key>
<dict>
<key>OfferedSearchDomains</key>
<array>
<string>Replace with DNS search domain(s) – remove if not needed</string>
</array>
<key>OfferedServerAddresses</key>
<array>
<string>Replace with IPv4 DNS server address(es) – remove if not needed</string>
</array>
</dict>
<key>IPSec</key>
<dict>
<key>AuthenticationMethod</key>
<string>SharedSecret</string>
<key>IdentifierVerification</key>
<string>None</string>
<key>LocalCertificate</key>
<data></data>
<key>LocalIdentifier</key>
<string></string>
<key>RemoteIdentifier</key>
<string></string>
<key>SharedSecret</key>
<string>com.apple.ppp.l2tp</string>
<key>SharedSecretEncryption</key>
<string>Keychain</string>
</dict>
<key>IPv4</key>
<dict>
<key>ConfigMethod</key>
<string>Manual</string>
<key>DestAddressRanges</key>
<array>
<string>Replace with Starting VPN address – IPv4 address</string>
<string>Replace with End VPN address – IPv4 address</string>
</array>
<key>OfferedRouteAddresses</key>
<array>
<string>Replace with Offered Routes addresses – remove if not needed</string>
</array>
<key>OfferedRouteMasks</key>
<array>
<string>Replace with Offered Route Masks – remove if not needed</string>
</array>
<key>OfferedRouteTypes</key>
<array>
<string>Replace with Offered Route Type(s) – remove if not needed</string>
</array>
</dict>
<key>Interface</key>
<dict>
<key>SubType</key>
<string>L2TP</string>
<key>Type</key>
<string>PPP</string>
</dict>
<key>L2TP</key>
<dict>
<key>Transport</key>
<string>IPSec</string>
</dict>
<key>PPP</key>
<dict>
<key>ACSPEnabled</key>
<integer>1</integer>
<key>AuthenticatorACLPlugins</key>
<array>
<string>DSACL</string>
</array>
<key>AuthenticatorEAPPlugins</key>
<array>
<string>EAP-KRB</string>
</array>
<key>AuthenticatorPlugins</key>
<array>
<string>DSAuth</string>
</array>
<key>AuthenticatorProtocol</key>
<array>
<string>MSCHAP2</string>
</array>
<key>DisconnectOnIdle</key>
<integer>1</integer>
<key>DisconnectOnIdleTimer</key>
<integer>7200</integer>
<key>IPCPCompressionVJ</key>
<integer>0</integer>
<key>LCPEchoEnabled</key>
<integer>1</integer>
<key>LCPEchoFailure</key>
<integer>5</integer>
<key>LCPEchoInterval</key>
<integer>60</integer>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
<key>Radius</key>
<dict>
<key>Servers</key>
<array>
<dict>
<key>Address</key>
<string>Replace with Primary Server IPv4 Address</string>
<key>SharedSecret</key>
<string>Replace with Server Shared Secret string</string>
</dict>
<dict>
<key>Address</key>
<string>Replace with Secondary Server IPv4 Address</string>
<key>SharedSecret</key>
<string>Replace with Secondary Server Shared Secret string</string>
</dict>
</array>
</dict>
<key>Server</key>
<dict>
<key>LoadBalancingAddress</key>
<string>Replace with IPv4 address</string>
<key>LoadBalancingEnabled</key>
<integer>0</integer>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MaximumSessions</key>
<integer>128</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
</dict>
<key>com.apple.ppp.pptp</key>
<dict>
<key>DNS</key>
<dict>
<key>OfferedSearchDomains</key>
<array>
<string>Replace with DNS search domain(s) – remove if not needed</string>
</array>
<key>OfferedServerAddresses</key>
<array>
<string>Replace with IPv4 DNS server address(es) – remove if not needed</string>
</array>
</dict>
<key>IPv4</key>
<dict>
<key>ConfigMethod</key>
<string>Manual</string>
<key>DestAddressRanges</key>
<array>
<string>Replace with Starting VPN address – IPv4 address</string>
<string>Replace with End VPN address – IPv4 address</string>
</array>
<key>OfferedRouteAddresses</key>
<array>
<string>Replace with Offered Routes addresses – remove if not needed</string>
</array>
<key>OfferedRouteMasks</key>
<array>
<string>Replace with Offered Route Masks – remove if not needed</string>
</array>
<key>OfferedRouteTypes</key>
<array>
<string>Replace with Offered Route Types – remove if not needed</string>
</array>
</dict>
<key>Interface</key>
<dict>
<key>SubType</key>
<string>PPTP</string>
<key>Type</key>
<string>PPP</string>
</dict>
<key>PPP</key>
<dict>
<key>ACSPEnabled</key>
<integer>1</integer>
<key>AuthenticatorACLPlugins</key>
<array>
<string>DSACL</string>
</array>
<key>AuthenticatorEAPPlugins</key>
<array>
<string>EAP-RSA</string>
</array>
<key>AuthenticatorPlugins</key>
<array>
<string>DSAuth</string>
</array>
<key>AuthenticatorProtocol</key>
<array>
<string>MSCHAP2</string>
</array>
<key>CCPEnabled</key>
<integer>1</integer>
<key>CCPProtocols</key>
<array>
<string>MPPE</string>
</array>
<key>DisconnectOnIdle</key>
<integer>1</integer>
<key>DisconnectOnIdleTimer</key>
<integer>7200</integer>
<key>IPCPCompressionVJ</key>
<integer>0</integer>
<key>LCPEchoEnabled</key>
<integer>1</integer>
<key>LCPEchoFailure</key>
<integer>5</integer>
<key>LCPEchoInterval</key>
<integer>60</integer>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MPPEKeySize128</key>
<integer>1</integer>
<key>MPPEKeySize40</key>
<integer>0</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
<key>Radius</key>
<dict>
<key>Servers</key>
<array>
<dict>
<key>Address</key>
<string>Replace with Primary Server IPv4 Address</string>
<key>SharedSecret</key>
<string>Replace with Primary Server Shared Secret string</string>
</dict>
<dict>
<key>Address</key>
<string>Replace with Secondary Server IPv4 Address</string>
<key>SharedSecret</key>
<string>Replace with Secondary Server Shared Secret string</string>
</dict>
</array>
</dict>
<key>Server</key>
<dict>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MaximumSessions</key>
<integer>128</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
</dict>
</dict>
</dict>
</plist>
—- CUT HERE —-
SEE ALSO
vpnd(8)
Mac OS X 17 August 2009 Mac OS X
(END)
・・・・・・・終わり・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
VPN Server の構築
VPND 設定ファイル
/Library/Preferences/SystemConfiguration/ を調べる。
そこで、/Library/Preferences/SystemConfiguration/ を調べてみると com.apple.RemoteAccessServers.plist が存在していないことが解ったので、「vpnd – Mac OS XのVPNリモートアクセスサーバーファイル」の中から —- CUT HERE —- 以下のテンプレートファイルを切り取り com.apple.RemoteAccessServers.plist ファイルとして次の通り設置した。
com.apple.RemoteAccessServers.plist の設定。
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
Owner: kojimatakumi (502) – qqqqqq
Group: wheel (0) System Group
Octal: 644
この com.apple.RemoteAccessServers.plist ファイルをどのように操作し設定したらよいのか「VPNActivator」を使って調べる。
「VPN Activator」を通常のアプリ同様にインストールする。
http://www.netputing.com/applications/vpn-activator/
VPN Activator の設定
Client IP Address Range
クライアント側に割り振るIPアドレスを設定する。
(私の場合)
From: 192.168.0.10
To: 192.168.0.100
DNS
クライアント側が参照するDNSを設定する。
(私の場合)
デフォルトで入力されている googleのDNS の数値 ( 8.8.8.8 , 8.8.4.4 ) をそのまま使用する。
User Setting
クライアント側で設定するアカウント及びユーザー認証パスワードを設定する。
任意の User name , Password を設定する。
(私の場合)
User name: yyyyyyy
Password: xxxxx
L2TP Config
クライアント側でL2TP接続する際に必要なコンピュータ認証するための「共有シークレット」を設定する。
任意の Shared Secret を設定する。
(私の場合)
Shared Secret: zzzzzz
VPN Activatorのサービス開始
VPN Activatorの左側のスイッチをONにする。
(管理者のパスワードを求められるので入力しOKをクリックする。
VPN Activator の設定によってVPND 設定ファイル com.apple.RemoteAccessServers.plist がどのように設定されたかを調べる
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
Owner: 管理者ユーザー (502) – qqqqqq
Group: wheel (0) System Group
Octal: 644
com.apple.RemoteAccessServers.plist が VPN Activator に依って編集された結果は次の通りである。
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>ActiveServers</key>
<array>
<string>com.apple.ppp.pptp</string>
<string>com.apple.ppp.l2tp</string>
</array>
<key>Servers</key>
<dict>
<key>com.apple.ppp.l2tp</key>
<dict>
<key>DNS</key>
<dict>
<key>OfferedSearchDomains</key>
<array/>
<key>OfferedServerAddresses</key>
<array>
<string>8.8.8.8</string>
<string>8.8.4.4</string>
</array>
</dict>
<key>IPv4</key>
<dict>
<key>ConfigMethod</key>
<string>Manual</string>
<key>DestAddressRanges</key>
<array>
<string>192.168.1.10</string>
<string>192.168.1.100</string>
</array>
</dict>
<key>Interface</key>
<dict>
<key>SubType</key>
<string>L2TP</string>
<key>Type</key>
<string>PPP</string>
</dict>
<key>L2TP</key>
<dict>
<key>IPSecSharedSecret</key>
<string>zzzzzz</string>
<key>Transport</key>
<string>IPSec</string>
</dict>
<key>PPP</key>
<dict>
<key>AuthenticatorProtocol</key>
<array>
<string>MSCHAP2</string>
</array>
<key>LCPEchoEnabled</key>
<integer>1</integer>
<key>LCPEchoFailure</key>
<integer>5</integer>
<key>LCPEchoInterval</key>
<integer>60</integer>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
<key>Server</key>
<dict>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MaximumSessions</key>
<integer>128</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
</dict>
<key>com.apple.ppp.pptp</key>
<dict>
<key>DNS</key>
<dict>
<key>OfferedSearchDomains</key>
<array/>
<key>OfferedServerAddresses</key>
<array>
<string>8.8.8.8</string>
<string>8.8.4.4</string>
</array>
</dict>
<key>IPv4</key>
<dict>
<key>ConfigMethod</key>
<string>Manual</string>
<key>DestAddressRanges</key>
<array>
<string>192.168.1.10</string>
<string>192.168.1.100</string>
</array>
</dict>
<key>Interface</key>
<dict>
<key>SubType</key>
<string>PPTP</string>
<key>Type</key>
<string>PPP</string>
</dict>
<key>PPP</key>
<dict>
<key>AuthenticatorProtocol</key>
<array>
<string>MSCHAP2</string>
</array>
<key>CCPEnabled</key>
<integer>1</integer>
<key>CCPProtocols</key>
<array>
<string>MPPE</string>
</array>
<key>LCPEchoEnabled</key>
<integer>1</integer>
<key>LCPEchoFailure</key>
<integer>5</integer>
<key>LCPEchoInterval</key>
<integer>60</integer>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MPPEKeySize128</key>
<integer>1</integer>
<key>MPPEKeySize40</key>
<integer>0</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
<key>Server</key>
<dict>
<key>Logfile</key>
<string>/var/log/ppp/vpnd.log</string>
<key>MaximumSessions</key>
<integer>128</integer>
<key>VerboseLogging</key>
<integer>1</integer>
</dict>
</dict>
</dict>
</dict>
</plist>
com.apple.RemoteAccessServers.plist について VPN Activator で編集される前と後の違いを調べる。
/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plist
Owner: 管理者ユーザー(502) – qqqqq
Group: wheel (0) System Group
Octal: 644
この plist ファイルのどこがどのように編集されているかその差分を調べるための道具として DiffMerge を使う。
DiffMerge を通常のアプリ同様にインストールする。
http://www.sourcegear.com/diffmerge/
SourceGear DiffMerge User Manual, Version 4.2
DiffMerge の設定
起動画面 SourceGear DiffMerge のメニューアイコンは左から、フォルダのDiff、ファイルのDiff、ファイルのmerge 。
ファイルのDiff
Left File (for Older or Original Version) テンプレートファイル
Right File (for Newer or Modified Version) VPN Activatorで編集したファイル
右下の OK ボタンを押す。
com.apple.RemoteAccessServers.plist ファイルのDiffの結果
Left File (for Older or Original Version) 264行
Right File (for Newer or Modified Version) 143行 121行が削除されている。
com.apple.ppp.l2tp の設定の他 com.apple.ppp.pptp の設定もなされているが、使用するのは com.apple.ppp.l2tp であり、com.apple.ppp.pptp の設定は使用されないので削除せずにおく。
ルーター AirMac Extreme で UDP ポートを解放する。
UDPポート→500, 1701, 4500
TCPポート→80
転送先は、サーバのローカルIPアドレス→192.168.1.60
AirMacユーティリティー – ネットワーク – DHCPの予約: 及び ポート設定:を使って設定する。
(私の場合)
ルーターモード: DHCPとNAT
DHCPの範囲: 192.168.1.2~192.168.1.200
チェック NATポートマッピング・プロトコルを有効にする
DHCPの予約: +ボタンを押し新規画面に次のように入力する。
アドレスの予約方法: MACアドレス
MACアドレス: xx.xx.xx.xx.xx.xx
IPv4アドレス: 192.168.1.60
ポート設定: +ボタンを押し新規画面に次のように入力する。
ファイアウォール・エントリー・タイプ: IPv4ポートマッピング
説明: パーソナルウエブ共有
パブリックTCPポート: 80
プライベートIPアドレス: 192.168.1.60
プライベートTCPポート: 80
ポート設定: +ボタンを押し新規画面に次のように入力する。
説明: Server VPN – L2TP
パブリックUDPポート: 500,1701,4500
プライベートIPアドレス: 192.168.1.60
プライベートUDPポート: 500,1701,4500
以上ネットワーク設定後 アップデート ボタン を押す。
システム環境設定 で MTU の値を変更する。
システム環境設定 – ネットワーク を使って MTU:1453 に変更設定する。
Wi-Fi
詳細…
ハードウエア
MACアドレス:xx.xx.xx.xx.xx.xx
構成:手動
MTU:カスタム1453 (1280~1500)標準 (1500)
右下の OK ボタンを押す。
以上ネットワーク設定後 アップデート ボタン を押す。
システム環境設定 で画面共有の設定をする。
画面共有の設定
システム環境設定 – 共有 – コンピュータ名:iMac
サービス – 画面共有:オン (チェックを入れる) vnc://192.168.1.60/
接続の開始
1. メニューバーのアイコンをクリックし VPN (L2TP) X をクリックする。
アイコンの右横に経過時間が表示される。
2. システム環境設定 – ネットワーク – VPN (L2TP) X を選択し接続ボタン をクリックする。
ネットワーク画面
状況:接続済み
接続時間:時 分 秒送信:バー緑色表示
IPアドレス:192.168.1.10受信:バー緑色表示
3. メニューバーの移動をクリック
サーバーへ接続…
サーバーアドレス:vnc://192.168.1.60
接続 ボタンを押す。
”192.168.1.60”ようの名前とパスワードを入力してください。
登録ユーザとして接続選択
名前:iMac 管理者名
パスワード: iMac 管理者パスワード
接続 ボタンを押す。
4. メニューバーに 画面共有 が表示される。
FinderiMac.vncloc ファイルが開く
VPN Activator で編集された pppd 設定ファイル /etc/ppp/users.plist 及び /etc/ppp/chap-secrets がどのように設定されているか調べる。
PPPD 設定ファイル:users.plist
/private/etc/ppp/users.plist
Owner: root (0) System Administrator
Group: wheel (0) System Group
Octal: 644
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>Password</key>
<string>xxxxx</string>
<key>User</key>
<string>yyyyyyy</string>
</dict>
</plist>
PPPD 設定ファイル:chap-secrets
/private/etc/ppp/chap-secrets
Owner: root (0) System Administrator
Group: wheel (0) System Group
Octal: 644
yyyyyyy * xxxxx *
iMac 起動時に vpnd を起動 ( VPN Activator はオフにする)させるため launchctl に vpnd を登録する。
参考資料::
launchctl 設定ファイル
/Library/LaunchDaemons/com.apple.vpnd.plist
Owner: root (0) System Administrator
Group: wheel (0) System Group
Octal: 644
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>com.apple.vpnd</string>
<key>Program</key>
<string>/usr/sbin/vpnd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/vpnd</string>
<string>-x</string>
<string>-i</string>
<string>com.apple.ppp.l2tp</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
スリープによるシステム一時停止の回復で VPN の自動再接続の設定。
システム環境設定 で Power Nap を有効にする。
チェック無 ディスプレイがオフのときにコンピュータを自動でスリープさせない
チェック有 可能な場合はハードディスクをスリープさせる
チェック有 ネットワークアクセスによるスリープ解除
チェック無 停電後に自動的に起動
チェック有 Power Nap を有効にする
以上で iMac に VPN Server が構築された。