yuichiro.__blog__

MacのVPNサーバー機能

Qiitaで読む

1/4/2015 GitHubで開く

MacでVirtualPrivateNetwork

仮想専用回線、と漢字に書くと難しく聞こえるこの機能、ビジネスで注目を浴びているそうですが、出先と自宅をつなぐっていうごく個人的な用途に使っても十分便利だったりします。

いろいろなVPNサーバーのプログラムがあると思いますが、macには標準でL2PT,PPTPを使ったvpndが搭載されています。Macのサーバーを購入するとGUIも標準でついてくるのですが、買わなくとも設定ファイルの場所と記述さえ把握していれば、TerminalからVPNサーバーが立てられるのです。

#サードパーティ製GUIアプリ
面倒くさいこと抜きにVPNやりたいって方はVPN Activatarがおすすめです。これから説明することを全部自動でやってくれます。

設定ファイル

man vpndを読むとわかりますが、vpndの起動には専用のplistがいることが分かります。
man vpnd -s 5に詳しい説明と、サンプルのplistがあるので、ここでは深い話を割愛させていただきます。

vpndの設定ファイルのパスは/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plistです。
ファイルが存在しない場合、上記のmanページに書いてあるものを切り取って新しく作ることが出来ます。

サンプルとして載ってるサーバーは2種類あり、L2TP over IPSecのものとPPTPを使ったものです。ぱっとググってみたところ、L2TPは256bit暗号化、低速(といってもPPTPより2割ほどの速度減であるそうです)、PPTPは128bit暗号化、高速といった具合のようです。
お好きな方を選んでください。
サポート機器を増やすには両方起動することが望ましいと思いますが多分安全だったり楽なのは、一つだけ起動するものであると思います。

VPNDの説明にもありますがVPNDはVPNで受け取ったデータをPPPDに流しているので、ユーザー情報などはPPPDの設定に書く必要があります。
PPPDの設定は/etc/ppp/に置きます。
ここで必要なのはユーザーの情報だけです。
サンプルのVPND用plistにはMSCHAPv2認証を使うように書いてあったと思います。
他の認証方法だと設定の方法も変わってくるのかな。

/etc/ppp/users.plist

users.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>Password</key>
         <string><!-- パスワード --></string>
         <key>User</key>
         <string><!-- ユーザー名 --></string>
 </dict>
 </plist>

みたいに書けば大丈夫です。

起動

は驚くほど簡単。
sudo vpnd
これだけです。

launchctlに登録

マシン起動時に毎回スタートして欲しいので、launchctlに書きます。
/etc/hostconfigに登録する方法もあって(てかそれがおすすめらしいけど)簡単ですが、VPNだけのために/etcにファイルを作ったりするのもあれだし、管理しやすくするためにlaunchctlを使おうと思います

root権限で起動して欲しいので、/Library/LaunchDaemonsにcom.apple.vpnd.plistをパーミッション:644 root:wheel で作成します。

com.apple.vpnd.plist
<?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>

あとは
sudo launchctl load /Library/LaunchDaemons/com.apple.vpnd.plist
を実行すればOKです。

なぜこれを書いたか

VPNActivatorを使ってたんだけど、なんか自前で同じことをしたくなって設定ファイルを探し始めたら思ったよりめんどくさかったから

< さくらのVPS初期設定備忘録日本語版のmanページをMacで開く(groffアップデート) >

関連記事

Macのキーボードの隠しコマンド

3/19/2019

Macのキーボード周りにはいろいろな秘密がつまっている! プログラミングをするときなどIDEの機能で行ごと上下に移動したり一気にインデントしたり、キーボード周りの入力で長い文字列を作成する手間を省こうとしますが、 Pages…

続きを読む

日本語版のmanページをMacで開く(groffアップデート)

12/31/2014

groff Fatal error 先日「vimをアップデートすると同時にHomebrew管理に移行する」という投稿をしたんですが、その後vimのmanページを開こうとすると、 何やら出てきて怒られてしまいました。 突然manが見られなくなったと思ったらgroff…

続きを読む

vimをアップデートすると同時にHomebrew管理に移行する

12/28/2014

あらすじ viとvi-improved Linuxに触りたての頃、cdでディレクトリ移動、lsでフォルダ内を表示、rmで削除、っていう流れで、ファイル編集はviコマンド!と間違えてるような間違えてないような、適当な感じで覚え、.bashrc一つ編集するのに四苦八苦しながら:wq…

続きを読む

プリインストールのzshからHomebrewのzshに移行した

7/17/2014

Why? なんかよさげだったから(コナミカン バージョンが上だし アップデートもしやすそうだし みんなそれでやってるっぽいから(結論) 実際にやってみる とりあえずbrew info zshしてみる なるほど。デフォルトのzshが5.0.2だったから5.0.…

続きを読む

さくらのVPS初期設定備忘録

1/5/2015

次にまたサーバーを建てるときに忘れないように。こういうのを書く代わりにDockerとかVagrantとか使ったらいいのかな? qiitaとドットインストール行ったり来たりしつつ、やりながら書いていきます。 1. rootパスワード変更 2. 作業用ユーザ作成 3. wheel…

続きを読む