さて、やっとこさ VPN の設定に入ります。今回は外出先から自宅の LAN 内にアクセスする「リモートアクセス VPN」と呼ばれる VPN の設定をしてみます。 対象ファームウェアは 1.9.1 です。
ER-X は PPTP と L2TP / IPSec に対応していますが、 PPTP はセキュリティ的にアレなので、今回は L2TP で設定してみようと思います。
リモートアクセス VPN とは
インターネッツ上の通信を暗号化する VPN と呼ばれる技術のうち、主に遠隔地から家庭や社内の LAN にアクセスするのに用いられるものを指します。リモートアクセス VPN で LAN に接続すると、まるでその LAN 内に直接繋がっているかのごとく、その LAN 内の他のサーバーや端末などにアクセスできるようになります。代表的プロトコルは L2TP / IPsec や PPTP などがあります。
またリモートアクセス VPN 経由でインターネットにアクセスできるようになり、地理的な制限を回避することができるようにもなります。例えば北米から日本の実家に L2TP で接続し、日本でしか視聴できないサイトを見られるようにしたり、中国から北米の自宅に接続し、 Facebook や Twitter 等中国国内では見られないサイトを見られるようにしたりできます。
L2TP は一般的なプロトコルなため、 Mac や iPhone も対応していて、難なく今回設定するサーバーに VPN 接続できるようになります。
今回はこのような作業になります。
- コマンドラインで L2TP / IPSec の設定をする
- 外部から L2TP / IPSec でアクセスできるよう Firewall を変更する
- iPhone で L2TP VPN の設定をする
コマンドラインで L2TP / IPsec の設定をする
では設定してみます。まずは WAN ポートが eth0
になっている場合です。今回は L2TP のクライアントのユーザー名を user1
、パスワードを password1
、そしてシークレットを secret1
としましたが、必ず各自変更して入力してください。
SSH でルーターにアクセス ## 設定モードに入る configure ## 基本的な IPsec の設定 set vpn ipsec ipsec-interfaces interface eth0 set vpn ipsec nat-networks allowed-network 0.0.0.0/0 set vpn ipsec nat-traversal enable set vpn ipsec auto-firewall-nat-exclude enable ## L2TP の WAN 側 IP アドレスが DHCP 経由で割り当てられると指定 set vpn l2tp remote-access dhcp-interface eth0 ## L2TP でアクセスしてきたクライアントに割り当てる IP アドレスの範囲を指定 set vpn l2tp remote-access client-ip-pool start 192.168.1.121 set vpn l2tp remote-access client-ip-pool stop 192.168.1.140 ## L2TP の「シークレット」を設定 ## secret1 の部分を任意のパスワードに変更して入力 set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret secret1 set vpn l2tp remote-access ipsec-settings ike-lifetime 3600 ## L2TP クライアントの認証方法をローカルに設定 set vpn l2tp remote-access authentication mode local ## L2TP クライアントのユーザー名とパスワードを設定 ## user1 と password1 の部分を変更して入力 set vpn l2tp remote-access authentication local-users username user1 password password1 ## L2TP の MTU を保守的に設定 set vpn l2tp remote-access mtu 1280 ## L2TP のクライアントが使う DNS をルーター自身と Google DNS に設定 set vpn l2tp remote-access dns-servers server-1 192.168.1.1 set vpn l2tp remote-access dns-servers server-2 8.8.8.8 ## ルーターの DNS が L2TP から使えるよう DNS Frowarding をルーター自身に設定 set service dns forwarding listen-on lo commit save
そして以下が WAN ポートが pppoe0
になっている場合です。この場合 dhcp-interface pppoe0
というコマンドが通らないので outside-address 0.0.0.0
を指定します。もちろん L2TP のクライアントのユーザー名を user1
、パスワードを password1
、そしてシークレットを secret1
としましたが、必ず各自変更して入力してください。
SSH でルーターにアクセス ## 設定モードに入る configure ## 基本的な IPsec の設定 set vpn ipsec ipsec-interfaces interface pppoe0 set vpn ipsec nat-networks allowed-network 0.0.0.0/0 set vpn ipsec nat-traversal enable ## WAN 側 IP アドレスが pppoe0 経由で割り当ての場合これを指定 set vpn l2tp remote-access outside-address 0.0.0.0 ## L2TP でアクセスしてきたクライアントに割り当てる IP アドレスの範囲を指定 set vpn l2tp remote-access client-ip-pool start 192.168.1.121 set vpn l2tp remote-access client-ip-pool stop 192.168.1.140 ## L2TP の「シークレット」を設定 ## secret1 の部分を任意のパスワードに変更して入力 set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret secret1 set vpn l2tp remote-access ipsec-settings ike-lifetime 3600 ## L2TP クライアントの認証方法をローカルに設定 set vpn l2tp remote-access authentication mode local ## L2TP クライアントのユーザー名とパスワードを設定 ## user1 と password1 の部分を変更して入力 set vpn l2tp remote-access authentication local-users username user1 password password1 ## L2TP の MTU を保守的に設定 set vpn l2tp remote-access mtu 1280 ## L2TP のクライアントが使う DNS をルーター自身と Google DNS に設定 set vpn l2tp remote-access dns-servers server-1 192.168.1.1 set vpn l2tp remote-access dns-servers server-2 8.8.8.8 ## ルーターの DNS が L2TP から使えるよう DNS Frowarding をルーター自身に設定 set service dns forwarding listen-on lo commit save
外部から L2TP / IPSec でアクセスできるよう Firewall を変更する
続いてルーターの WAN 側から L2TP / IPsec でアクセスできるよう Firewall の設定を変更します。具体的には UDP のポート 500
/ 1701
/ 4500
と、IP プロトコルの ESP
の通過を許可するルールを追加します。 Firewall のルールは順番が重要なので、順番がわかりやすい GUI で設定します。
ER-X に管理者アカウントでログインし、 Firewall/NAT タブをクリック Firewall Policies タブをクリック WAN_LOCAL の Actions ボタンを押し、 Edit Ruleset を選ぶ Add New Rule ボタンを押す [Basic] Description: Allow L2TP Action: Accept Protocol: UDP [Destination] Port: 500,1701,4500 (スペース無し) Save ボタンを押す Add New Rule ボタンを押す [Basic] Description: Allow ESP Action: Accept Protocol: choose protocal by name > esp Save ボタンを押す 追加した2つのルールを元からある Allow established/related と Drop invalid state の間に移動する Save Rule Order ボタンを押す WAN_LOCAL の設定ウィンドウを閉じる
これで Firewall が WAN 側から ER-X 方向への L2TP / IPsec を通すようになります。
注意事項
ちなみにこのポート 4500 番ですが、「どこでも My Mac (Back to My Mac)」とコンフリクトして、 L2TP が接続できなくなったりします。その際には LAN 内のすべての Mac / Airport Time Capsule でどこでも My Mac をオフにするか、 ER-X の UPnP2 をオフにするか、 UPnP2 でポート 4500 での Port Forward をブロックするよう設定してください。 UPnP2 でブロックする設定はこんな感じです。
service / UPnP2 / acl / rule / 10 action: deny description: Block port 4500 external-port: 4500 local-port: 4500 subnet: 192.168.1.0/24
iPhone で VPN クライアントの設定をする
続いて iPhone でいま設定した ER-X の L2TP VPN サーバーに接続する設定をします。
「設定」を開く 「一般」を選択 「VPN」を選択 「VPN構成を追加...」を選択 タイプ: L2TP 説明: 自宅 サーバ: yaberouter1.duckdns.org アカウント: user1 パスワード: password1 シークレット: secret1 全ての信号を送信: オン 「完了」を選択
これで iPhone の「設定」のトップに VPN という項目が現れ、出先から自宅の LAN 内の端末にアクセスしたり、もしくは外国から自宅経由でインターネットのサイトにアクセスしたりできるようになります。また VPN は回線が暗号化されているので、通信内容の秘匿が保たれます。街のカフェ等でまったくセキュリティのかかってないフリー WiFi なんかを使うと、通信内容を同じ WiFi を使っている誰かに見られる可能性がありますが、 VPN を使うことで防ぐことができます。
今回はこのページを参考にしました。
EdgeRouter – IPsec L2TP Server
以上、お疲れ様でした。
yabe.jp » Gadgets »