リモートアクセスサーバ:L2TP/IPsec

PPPACによるL2TP/IPsecリモートアクセスサーバを提供する設定例。

始める前に

  • グローバルIPv4アドレスを1個、固定で割り当てられるPPPoE型のインターネット接続サービスを契約しているものとします。ここではアクセス回線にNTT フレッツ・光ネクスト、ISPにIIJ FiberAccess/F サービス(1/256C)を使用するものとします。

このタスクについて

  • インターネットアクセスルータ(IPv4 PPPoE)とリモートアクセスサーバを兼ねる設定例です。リモートアクセスクライアントはVPN接続時に本装置を経由してインターネットへもアクセス可能です。

構成イメージ

サンプルコンフィグ

hostname : ${hostname}
interface.pppoe0.id       : ${pppoe0_id}
interface.pppoe0.password : ${pppoe0_password}

interface.ge1.ipv4.address : ${lan_address}${lan_prefixlen}

interface.pppac0.authentication.1.user.1.name     : ${user1_name}
interface.pppac0.authentication.1.user.1.password : ${user1_password}
interface.pppac0.authentication.1.user.2.name     : ${user2_name}
interface.pppac0.authentication.1.user.2.password : ${user2_password}

interface.pppac0.ipv4.address : ${pppac0_address}
interface.pppac0.ipcp.pool.99.address : ${pppac_pool_address}
interface.pppac0.ipcp.pool.99.count   : ${pppac_pool_count}
interface.pppac0.ipcp.pool.99.type    : dynamic
interface.pppac0.ipcp.dns-server.0.ipv4.address : ${pppac0_address}
interface.pppac0.l2tp.service                 : enable
interface.pppac0.l2tp.authentication.1.method : chap
interface.pppac0.l2tp.authentication.2.method : mschapv2
interface.pppac0.l2tp.ipsec.requirement       : required
interface.pppac0.l2tp.ipsec.preshared-key     : ${ipsec_pskey}

route.ipv4.0.destination : default
route.ipv4.0.gateway     : pppoe0

nat.ipv4.napt.0.private   : ${napt_private}
nat.ipv4.napt.0.interface : pppoe0

dns-forwarder.service                 : enable
dns-forwarder.0.address               : ipcp
dns-forwarder.listen.ipv4.0.interface : ge1
dns-forwarder.listen.ipv4.1.interface : pppac0

dhcp.server.service         : enable
dhcp.server.0.interface     : ge1
dhcp.server.0.pool.address  : ${pool_address}${lan_prefixlen}
dhcp.server.0.pool.count    : ${pool_count}
dhcp.server.0.dns.0.address : ${lan_address}

ntp.service          : enable
ntp.client.0.address : ${ntp_address}
 
resolver.service   : enable
resolver.0.address : ipcp

filter.ipv4.0.action              : pass
filter.ipv4.0.interface           : any
filter.ipv4.0.direction           : in
filter.ipv4.0.source.address      : 202.221.49.0/24
filter.ipv4.0.destination.address : self
filter.ipv4.0.logging             : off
filter.ipv4.2.action              : pass
filter.ipv4.2.interface           : any
filter.ipv4.2.direction           : in
filter.ipv4.2.source.address      : 202.221.50.0/23
filter.ipv4.2.destination.address : self
filter.ipv4.2.logging             : off

route.ipv4.10001.destination : 202.221.49.0/24
route.ipv4.10001.gateway     : pppoe0
route.ipv4.10001.distance    : 1
route.ipv4.10002.destination : 202.221.49.0/24
route.ipv4.10002.gateway     : discard
route.ipv4.10002.distance    : 100
route.ipv4.10003.destination : 202.221.50.0/23
route.ipv4.10003.gateway     : pppoe0
route.ipv4.10003.distance    : 1
route.ipv4.10004.destination : 202.221.50.0/23
route.ipv4.10004.gateway     : discard
route.ipv4.10004.distance    : 100

用意するパラメータ

項目 設定箇所 サンプル拠点 備考
ホスト名 ${hostname} SA01
リモートアクセスユーザ1のユーザ名 ${user1_name} user01
リモートアクセスユーザ1のパスワード ${user1_password} user01password
リモートアクセスユーザ2のユーザ名 ${user2_name} user02
リモートアクセスユーザ2のパスワード ${user2_password} user02password
事前共有鍵 ${ipsec_pskey} PreSharedKey
トンネル終端アドレス ${pppac0_address} 192.168.2.1
リモートアクセスクライアント用アドレスプールの先頭 ${pppac_pool_address} 192.168.2.10
リモートアクセスクライアント用アドレスプールの個数 ${pppac_pool_count} 200 192.168.2.10-192.168.2.210の範囲
PPPoE接続サービスから指定されたID ${pppoe0_id} s1user@s1.example.jp 置換必須
PPPoE接続サービスから指定されたパスワード ${pppoe0_password} s1passowrd 置換必須
SAのLAN側アドレス ${lan_address} 192.168.1.1
LANのサブネットマスク ${lan_prefixlen} /24
NAPT適用範囲 ${napt_private} 192.168.1.0-192.168.2.255
DHCPのアドレスプールの先頭 ${pool_address} 192.168.1.2
DHCPのアドレスプールの個数 ${pool_count} 253 192.168.1.2-192.168.1.254の範囲
NTPサーバアドレス ${ntp_address} 192.0.2.123 置換必須/無指定時はNTPが動作しない
サンプルCSV(SACMテンプレートセット向け)
【ダウンロード】

テンプレート用サンプルCSV

[name],[sa_label],hostname,user1_name,user1_password,user2_name,user2_password,ipsec_pskey,pppac0_address,pppac_pool_address,pppac_pool_count,pppoe0_id,pppoe0_password,lan_address,lan_prefixlen,napt_private,pool_address,pool_count,ntp_address
[default],,,,,,,,,,,,,,,,,,
<sa-Code>,サンプル拠点,SA01,user01,user01password,user02,user02password,PreSharedKey,192.168.2.1,192.168.2.10,200,s1user@s1.example.jp,s1passowrd,192.168.1.1,/24,192.168.1.0-192.168.2.255,192.168.1.2,253,192.0.2.123
注:
<SA-Code> を実在するSAコードに書き換える必要があります。
警告:
CSV操作に関する注意
インポート操作は取り消せません。
変数や所属SAが存在するテンプレートセットにインポートするときは、必ず事前にバックアップとしてエクスポートしてください。
インポートは、当該テンプレートの所属SAのリスト全体を置き換えます。CSVに含まれないサービスアダプタは所属が解除され変数は初期化されます。

コンフィグの説明

リモートアクセスのユーザ名とパスワード (interface.pppac0.authentication...)
リモートアクセスユーザがクライアント端末に設定するユーザ名とパスワードを指定します。
リモートアクセス用アドレスプール (interface.pppac0.ipcp.pool)
リモートアクセスクライアントに割り当てるIPアドレスの範囲を設定します。
他のネットワークと重複しないアドレスを使用してください。
ここでは ...type : dynamic を指定し動的割当としています。
PPPACインタフェースのIPアドレス (interface.pppac0.ipv4.address)
VPNトンネルのトンネル終端アドレスを指定します。一般的に他のネットワークと重複しないプライベートアドレスを使用します。
ここではリモートアクセスクライアントに通知するDNSサーバアドレスとしても使用しています。
L2TP/IPsecサービス (interface.pppac0.l2tp...)
L2TP/IPsecのPPP認証にCHAPおよびMS-CHAPv2を使用します。
IPsecを必須(IPsecを使用しないL2TP接続を禁止)とし、事前共有鍵を設定します。
PPPoE (interface.pppoe0...)
IDとパスワードを設定するのみで接続可能です。設定が反映され次第接続を開始し、接続状態を維持します。
サービスから払い出されるIPアドレスが1個のサービスでは接続時にIPアドレスを自動取得可能なため、PPPoEインタフェースにアドレスを設定する必要はありません。
静的経路 (route.ipv4...)
デフォルト経路を設定し、ゲートウェイにPPPoEインタフェースを指定します。
サンプルでは末尾にSMFv2サービスの通信要件に当たる経路を記載していますが、デフォルト経路とゲートウェイが同一のため省略できます。
LANインタフェース (interface.ge1...)
LANのプライベートアドレスを設定します。
NAPT (nat.ipv4.napt...)
指定範囲に一致するプライベートアドレスを送信元とするパケットをPPPoEインタフェースから送信するときNAPTが適用されます。
SA自身がPPPoEインタフェースから送信する自発パケットは、送信元アドレスはPPPoEインタフェースのIPアドレスとなるため通常は適用されません。
ここではLANのプライベートアドレスとリモートアクセスクライアント用のアドレスプールを包含する指定しています。
DNS中継 (dns-forwarder...)
LAN内のホストからDNSクエリを受信し中継することができます。キャッシュ機能は持ちません。
PPPoE接続サービスではアドレス情報をIPCPで取得できるため、それによって取得したDNSを中継先に使用します。
リモートアクセスクライアント向けにも提供するため、リクエストを受け付けるインタフェースにpppac0を追加しています。
DHCPサーバ (dhcp.server...)
LAN内のホストがアドレス設定を自動構成するための情報を提供します。
アドレスプールの個数は、払い出す先頭のアドレスからブロードキャストアドレスを含まない範囲を指定します。
NTPクライアント (ntp...)
システムの時刻合わせによりログ等の確認がしやすくなります。
ここではNTPクライアント機能のみ使用しNTPサーバ機能は無効化(デフォルト)しています。
注:
NTPサーバ機能を有効化する場合はオープンNTPとならないよう適切なフィルタリングを設定する必要があります。
リゾルバ (resolver)
SA自身が名前解決に使用します。
SMFv2モードでは必ず設定しなければなりません。
注:
リゾルバの設定誤りはSMFv2モードでモジュール同期が失敗する原因になります。
IPフィルタ (filter.ipv4...)
サンプルではSMFv2サービスの通信要件に当たるネットワークを明示的にパスしていますが、これを含む範囲をブロックするフィルタを設定しない場合は省略できます。
LAN側ネットワークはプライベートアドレスであり、かつ、NAPTを適用しているため、基本的にWAN側が起点となる通信はLAN側へ到達しません。