LoginSignup
15
14

More than 5 years have passed since last update.

MacでL2TP over IPSecサーバを建てる(CUI編)

Posted at

MacでVPNサーバを建てたい時があるかと思います。
自分はスマートフォンのトラフィックをPCを経由させたくてVPNサーバを建てました。
Macには標準でvpndが入っているようで、これを使えば簡単です。
ただ、設定ファイルが結構めんどくさいのでメモとして残しておきます。

以下の手順でできると思いますが、もしできなければ教えて下さい。
なお、今回はL2TPを対象とします。

検証環境

  • Mac
    • OS X Yosemite(10.10.3)
  • VPN
    • L2TP over IPSec

参考ページ

使い方

設定ファイルとしてplistを用意します。

設定ファイル

com.apple.RemoteAccessServers.plist

vpndの起動時に必要なplistの設定です。
設定ファイルのパスは/Library/Preferences/SystemConfiguration/com.apple.RemoteAccessServers.plistです。
設定ファイルは以下になります。なかったら作ります。

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.l2tp</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>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>password</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>
    </dict>
</dict>
</plist>

上記の設定ファイルで設定しているのは以下になります。
値は状況に応じて変えてください。

設定項目
DNSサーバ(プライマリ) 8.8.8.8
DNSサーバ(セカンダリ) 8.8.4.4
DHCPサーバ アドレスレンジ(From) 192.168.1.10
DHCPサーバ アドレスレンジ(To) 192.168.1.100
共有シークレット password
logファイルのパス /var/log/ppp/vpnd.log

pppdの設定

man vpndすると書いてありますが、vpndはVPNで受け取ったデータをpppdに流しているので、ユーザー情報などはpppdの設定に書く必要があります。
pppdの設定は/etc/ppp/に書くらしいです。
参考サイトによると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>password</string>
         <key>User</key>
         <string>username</string>
 </dict>
 </plist>

上記ファイルでは認証を行うための情報を書いています。
設定項目は以下になります。値は状況に応じて変えてください。

設定項目
ユーザ名 username
パスワード password

起動

起動方法ですが、

$ sudo vpnd

とするとActiveServersに書かれているplistが読み込まれるみたいです。
なので、ActiveServersに複数書いてある場合は、

$ sudo vpnd -i com.apple.ppp.l2tp

のようにすると、明示的に起動できます。

確認

$ ps aux | grep vpnd
root            27055   0.0  0.0  2455448    804   ??  Ss   11:33AM   0:00.16 vpnd -i com.apple.ppp.l2tp

vpndが見えていれば大丈夫です。
見えていない場合は設定がおかしいかもしれません。 

停止

停止方法が見つかりませんでした。仕方ないのでkillallしております。
良い方法を見つけた人がいたら教えて下さい。

$ sudo killall vpnd

まとめ

設定ファイルだけ最初に書けば、次回以降はコマンド一つでVPNサーバが起動します。
色々と使い道はあると思うので試してみてください。

15
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14