フロートリンクによる多店舗型IPsec-VPN(スター型)

一つのセンター拠点と多数のオフィスや店舗間でインターネットVPNを構成する場合の設定例。

始める前に

  • SMFv2サービスのサービスアダプタとして登録する必要があります。
  • PPPoE接続サービスの契約が必要です。

このタスクについて

  • フロートリンク機能を使用することで各拠点のグローバルIPアドレスを自発的に解決できます。
  • メッシュ型ではなくスター型とすることで、拠点追加時の設定変更はセンター拠点のみで済みます。

構成イメージ

Central siteの設定

サンプルコンフィグ - Central Site

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

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

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

interface.ipsec1.floatlink.address-family : ipv4
interface.ipsec1.floatlink.my-address     : pppoe0
interface.ipsec1.floatlink.key            : ${floatlink_key}
interface.ipsec1.floatlink.name-service   : ${floatlink_name-service}
interface.ipsec1.floatlink.my-node-id     : ${my-node-id}
interface.ipsec1.floatlink.peer-node-id   : ${office1_node-id}
interface.ipsec1.preshared-key            : ${office1_preshared-key}
route.ipv4.10.destination                 : ${office1_lan}
route.ipv4.10.gateway                     : ipsec1

interface.ipsec2.floatlink.address-family : ipv4
interface.ipsec2.floatlink.my-address     : pppoe0
interface.ipsec2.floatlink.key            : ${floatlink_key}
interface.ipsec2.floatlink.name-service   : ${floatlink_name-service}
interface.ipsec2.floatlink.my-node-id     : ${my-node-id}
interface.ipsec2.floatlink.peer-node-id   : ${office2_node-id}
interface.ipsec2.preshared-key            : ${office2_preshared-key}
route.ipv4.20.destination                 : ${office2_lan}
route.ipv4.20.gateway                     : ipsec2

interface.ipsec3.floatlink.address-family : ipv4
interface.ipsec3.floatlink.my-address     : pppoe0
interface.ipsec3.floatlink.key            : ${floatlink_key}
interface.ipsec3.floatlink.name-service   : ${floatlink_name-service}
interface.ipsec3.floatlink.my-node-id     : ${my-node-id}
interface.ipsec3.floatlink.peer-node-id   : ${office3_node-id}
interface.ipsec3.preshared-key            : ${office3_preshared-key}
route.ipv4.30.destination                 : ${office3_lan}
route.ipv4.30.gateway                     : ipsec3

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

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

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}

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

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

用意するパラメータ

項目 設定箇所 値の例 備考
接続サービスから指定されたID ${pppoe0_id} s1user@s1.example.jp
接続サービスから指定されたパスワード ${pppoe0_password} s1passowrd
Central siteのLAN側アドレス ${lan_address} 192.168.0.1
Central site LANのサブネットマスク ${lan_prefixlen} /24
DHCPのアドレスプールの先頭 ${pool_address} 192.168.0.101
DHCPのアドレスプールの個数 ${pool_count} 150
NAPT適用範囲 ${napt_private} 192.168.0.0-192.168.255.255
Central site のフロートリンクID ${my-node-id}
  • tsX0000000
SAコードの流用を推奨
各OfficeのフロートリンクID
  • ${office1_node-id}
  • ${office2_node-id}
  • ${office3_node-id}
  • tsX0000001
  • tsX0000002
  • tsX0000003
SAコードの流用を推奨
各OfficeのLANのネットワークアドレス
  • ${office1_lan}
  • ${office2_lan}
  • ${office3_lan}
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24
IKEの事前共有鍵
  • ${office1_preshared-key}
  • ${office2_preshared-key}
  • ${office3_preshared-key}
  • office1_*******
  • office2_*******
  • office3_*******
フロートリンクのネームサーバ ${floatlink_name-service} https://floatlinkurl/example 機種により異なる
フロートリンクのグループキー ${floatlink_key} 61!LOX4S@CutRoH 全拠点共通
NTPサーバアドレス ${ntp_address} 192.0.2.123

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

[name],[sa_label],pppoe0_id,pppoe0_password,lan_address,lan_prefixlen,napt_private,pool_address,pool_count,ntp_address
[default],,,,,,,,,

コンフィグの説明

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アドレスとなるため通常は適用されません。
DNS中継 (dns-forwarder...)
LAN内のホストからDNSクエリを受信し中継することができます。キャッシュ機能は持ちません。
PPPoE接続サービスではアドレス情報をIPCPで取得できるため、それによって取得したDNSを中継先に使用します。
DHCPサーバ (dhcp.server...)
LAN内のホストがアドレス設定を自動構成するための情報を提供します。
アドレスプールの個数は、払い出す先頭のアドレスからブロードキャストアドレスを含まない範囲を指定します。
NTPクライアント (ntp...)
システムの時刻合わせによりログ等の確認がしやすくなります。
ここではNTPクライアント機能のみ使用しNTPサーバ機能は無効化(デフォルト)しています。
注: NTPサーバ機能を有効化する場合はオープンNTPとならないよう適切なフィルタリングを設定する必要があります。
リゾルバ (resolver)
SA自身が名前解決に使用します。
SMFv2モードでは必ず設定しなければなりません。
注: リゾルバの設定誤りはSMFv2モードでモジュール同期が失敗する原因になります。
IPフィルタ (filter.ipv4...)
サンプルではSMFv2サービスの通信要件に当たるネットワークを明示的にパスしていますが、これを含む範囲をブロックするフィルタを設定しない場合は省略できます。
LAN側ネットワークはプライベートアドレスであり、かつ、NAPTを適用しているため、基本的にWAN側が起点となる通信はLAN側へ到達しません。

Office 1の設定

サンプルコンフィグ

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

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

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

interface.ipsec0.floatlink.address-family : ipv4
interface.ipsec0.floatlink.my-address     : pppoe0
interface.ipsec0.floatlink.key            : ${floatlink_key}
interface.ipsec0.floatlink.name-service   : ${floatlink_name-service}
interface.ipsec0.floatlink.my-node-id     : ${my-node-id}
interface.ipsec0.floatlink.peer-node-id   : ${central_node-id}
interface.ipsec0.preshared-key            : ${office1_preshared-key}
route.ipv4.1.destination                  : ${vpn_private}
route.ipv4.1.gateway                      : ipsec0

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

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

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}

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

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

用意するパラメータ

項目 設定箇所 値の例 備考
接続サービスから指定されたID ${pppoe0_id} s1user@s1.example.jp
接続サービスから指定されたパスワード ${pppoe0_password} s1passowrd
Office 1のLAN側アドレス ${lan_address} 192.168.1.1
Office 1のLANのサブネットマスク ${lan_prefixlen} /24
VPNのLANを包括するネットワークアドレス ${vpn_private} 192.168.0.0/16
NAPT適用範囲 ${napt_private} 192.168.0.0-192.168.255.255
DHCPのアドレスプールの先頭 ${pool_address} 192.168.1.2
DHCPのアドレスプールの個数 ${pool_count} 253
Officeの 1のフロートリンクID ${my-node-id} tsX0000001 SAコードの流用を推奨
Central siteのフロートリンクID ${central_node-id} tsX0000000 SAコードの流用を推奨
IKEの事前共有鍵 ${office1_preshared-key} office1_*******
フロートリンクのネームサーバ ${floatlink_name-service} https://floatlinkurl/example 機種により異なる
フロートリンクのグループキー ${floatlink_key} 61!LOX4S@CutRoH 全拠点共通
NTPサーバアドレス ${ntp_address} 192.0.2.123

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

[name],[sa_label],pppoe0_id,pppoe0_password,lan_address,lan_prefixlen,napt_private,pool_address,pool_count,ntp_address
[default],,,,,,,,,

コンフィグの説明

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アドレスとなるため通常は適用されません。
DNS中継 (dns-forwarder...)
LAN内のホストからDNSクエリを受信し中継することができます。キャッシュ機能は持ちません。
PPPoE接続サービスではアドレス情報をIPCPで取得できるため、それによって取得したDNSを中継先に使用します。
DHCPサーバ (dhcp.server...)
LAN内のホストがアドレス設定を自動構成するための情報を提供します。
アドレスプールの個数は、払い出す先頭のアドレスからブロードキャストアドレスを含まない範囲を指定します。
NTPクライアント (ntp...)
システムの時刻合わせによりログ等の確認がしやすくなります。
ここではNTPクライアント機能のみ使用しNTPサーバ機能は無効化(デフォルト)しています。
注: NTPサーバ機能を有効化する場合はオープンNTPとならないよう適切なフィルタリングを設定する必要があります。
リゾルバ (resolver)
SA自身が名前解決に使用します。
SMFv2モードでは必ず設定しなければなりません。
注: リゾルバの設定誤りはSMFv2モードでモジュール同期が失敗する原因になります。
IPフィルタ (filter.ipv4...)
サンプルではSMFv2サービスの通信要件に当たるネットワークを明示的にパスしていますが、これを含む範囲をブロックするフィルタを設定しない場合は省略できます。
LAN側ネットワークはプライベートアドレスであり、かつ、NAPTを適用しているため、基本的にWAN側が起点となる通信はLAN側へ到達しません。