設定例集#14: OpenVPNを利用したリモートアクセス


構成
設定開始前に
自動設定の確認と削除
システム時刻の設定
ルーターの設定
設定の保存
ファイアウォールログについて
OpenVPNクライアントの設定ファイル例
接続手順
備考
Tapモードの設定
ルーターのコンフィグ



Windows OSやMAC OS X等のOpenVPNクライアントからインターネット経由で本製品のLAN側プライベートネットワークにアクセスさせるリモートアクセス型VPNの設定例です。
本設定ではローカルRADIUSサーバーを用いて認証を行い、Tun(L3)モードのOpenVPN接続を行っています。
接続してきたOpenVPNクライアントに対しては、LAN側プライベートネットワークに加えて下記FQDN宛ての経路も通知します。

構成

ISPから提供された情報
ISP接続用ユーザー名 user@isp
ISP接続用パスワード isppasswd
PPPoEサービス名 指定なし
WAN側IPアドレス 10.0.0.1/32
接続形態 端末型(アドレスは動的割り当て)
ルーターの基本設定
WAN側物理インターフェース eth1
WAN側(ppp0)IPアドレス 10.0.0.1/32
LAN側(vlan1)IPアドレス(1) 192.168.10.1/24
LAN側(vlan2)IPアドレス(2) 192.168.30.1/24
OpenVPNトンネルインターフェース tunnel0(Tun(L3)モード)
OpenVPNトンネルインターフェースIPアドレス 192.168.20.1/24

OpenVPNクライアントのアカウント情報
OpenVPNユーザー
ユーザー名
パスワード
IPアドレス
ユーザーA userA passwdA 192.168.20.2/24
ユーザーB userB passwdB 192.168.20.3/24
ユーザーC userC passwdC 192.168.20.4/24
ユーザーD userD passwdD 192.168.20.5/24

設定開始前に

自動設定の確認と削除

本設定例に掲載されているコマンドは、設定がまったく行われていない本製品の初期状態(スタートアップコンフィグなしで起動した状態)から入力することを前提としています。

そのため、通常は erase startup-config を実行し、スタートアップコンフィグが存在しない状態で起動してから、設定を始めてください。

ただし、本製品はスタートアップコンフィグなしで起動した場合でも、特定の条件を満たすと自動的な設定を行うことがあるため、その場合は設定例にしたがってコマンドを入力しても、コマンドがエラーになったり、全体として意図した動作にならない可能性があります。

これを避けるため、設定開始にあたっては次のいずれかの方法をとることをおすすめします。
自動設定が行われる条件などの詳細については、AMF応用編のAMFネットワーク未検出時の拡張動作をご参照ください。

システム時刻の設定

ログなどの記録日時を正確に保ち、各種機能を適切に動作させるため、システム時刻は正確にあわせて運用することをおすすめします。
ご使用の環境にあわせ、次のいずれかの方法でシステム時刻を設定してください。

ルーターの設定

  1. LANポートにおいて初期状態で有効化されているスパニングツリープロトコル(RSTP)を無効化します。これにはspanning-tree enableコマンドをno形式で実行します。
    スパニングツリープロトコルの詳細は「L2スイッチング」/「スパニングツリープロトコル」をご覧ください。
    no spanning-tree rstp enable
    
  2. WANポートeth1上にPPPoEインターフェースppp0を作成します。これには、encapsulation pppコマンドを使います。
    PPPの詳細は「PPP」/「一般設定」をご覧ください。
    interface eth1
     encapsulation ppp 0
    
  3. PPPインターフェースppp0に対し、PPPoE接続のための設定を行います。

    ・IPCPによるDNSサーバーアドレスの取得要求(ppp ipcp dns
    ・LCP EchoによるPPP接続状態の確認(keepalive
    ・IPCPによるIPアドレスの取得要求(ip address negotiated
    ・ユーザー名(ppp username
    ・パスワード(ppp password
    ・MSS書き換え(ip tcp adjust-mss

    PPPの詳細は「PPP」/「一般設定」をご覧ください。
    interface ppp0
     ppp ipcp dns request
     keepalive
     ip address negotiated
     ppp username user@isp
     ppp password isppasswd
     ip tcp adjust-mss pmtu
    
  4. VLANを作成します。
    これには、vlan databaseコマンドとvlanコマンドを使います。
    VLANの詳細は「L2スイッチング」/「バーチャルLAN」をご覧ください。
    vlan database
     vlan 2
    
  5. LANポート1.0.3~1.0.4をvlan2のタグなしポートに設定します。
    これには、switchport access vlanコマンドを使います。
    VLANについては「L2スイッチング」/「バーチャルLAN」をご覧ください。
    interface port1.0.3-1.0.4
     switchport access vlan 2
    
  6. LAN側インターフェースvlan1とvlan2にIPアドレスを設定します。これにはip addressコマンドを使います。
    IPインターフェースの詳細は「IP」/「IPインターフェース」をご覧ください。
    interface vlan1
     ip address 192.168.10.1/24
    interface vlan2
     ip address 192.168.30.1/24
    
  7. ファイアウォールやNATのルール作成時に使うエンティティー(通信主体)を定義します。
    エンティティー定義の詳細は「UTM」/「エンティティー定義」をご覧ください。

    内部ネットワークを表すゾーン「private」を作成します。
    これには、zonenetworkip subnetの各コマンドを使います。
    zone private
     network lan
      ip subnet 192.168.10.0/24
      ip subnet 192.168.20.0/24
      ip subnet 192.168.30.0/24
    
  8. 外部ネットワークを表すゾーン「public」を作成します。
    前記コマンドに加え、ここではhostip addressの各コマンドも使います。
    zone public
     network wan
      ip subnet 0.0.0.0/0 interface ppp0
      host ppp0
       ip address dynamic interface ppp0
    
  9. エンティティーはOpenVPNクライアントに通知する経路を定義するためにも使用できます。
    ここではゾーン「openvpn」を作成し、Windows Update用のホスト(FQDN)を2つ定義します。
    zone openvpn
     network url
      host microsoft
       ip address dynamic fqdn windowsupdate.microsoft.com
       ip address dynamic fqdn update.microsoft.com
    
  10. 外部からの通信を遮断しつつ、内部からの通信は自由に行えるようにするファイアウォール機能の設定を行います。
    これには、firewallruleprotectの各コマンドを使います。

    ・rule 10 - 内部から内部への通信を許可します
    ・rule 20 - 内部から外部への通信を許可します
    ・rule 30 - 外部から本製品のWAN側インターフェースへのOpenVPN通信を許可します

    ファイアウォールの詳細は「UTM」/「ファイアウォール」をご覧ください。
    firewall
     rule 10 permit any from private to private
     rule 20 permit any from private to public
     rule 30 permit openvpn from public.wan to public.wan.ppp0
     protect
    
  11. LAN側ネットワークに接続されているすべてのコンピューターがダイナミックENAT機能を使用できるよう設定します。
    これには、natruleenableの各コマンドを使います。
    NATの詳細は「UTM」/「NAT」をご覧ください。
    nat
     rule 10 masq any from private to public
     enable
    
  12. RADIUSクライアント機能が使用するRADIUSサーバーを登録します。これにはradius-server hostコマンドを使います。
    ここでは、本製品内蔵のローカルRADIUSサーバーを指定しています。
    RADIUSクライアント機能の詳細は「運用・管理」/「RADIUSクライアント」を、ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」をご覧ください。
    radius-server host 127.0.0.1 key awplus-local-radius-server
    
  13. OpenVPNで使用するRADIUSサーバーを指定します。これにはaaa authentication openvpnコマンドを使います。
    aaa authentication openvpn default group radius
    
  14. ローカルRADIUSサーバーにOpenVPNユーザーを登録します。
    これには、radius-server localserver enablegroupattributeuserの各コマンドを使います。
    ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」をご覧ください。

    crypto pki trustpointcrypto pki enrollnasは、radius-server localコマンドの初回実行時に自動実行されるため、手動で入力する必要はありませんが、入力してもかまいません。
    crypto pki trustpoint local
    crypto pki enroll local
    radius-server local
     server enable
     nas 127.0.0.1 key awplus-local-radius-server
     group userA
      attribute Framed-IP-Address 192.168.20.2
      attribute Framed-IP-Netmask 255.255.255.0
      attribute Framed-Route "192.168.10.0/24 192.168.20.1"
      attribute Framed-Route "192.168.30.0/24 192.168.20.1"
     group userB
      attribute Framed-IP-Address 192.168.20.3
      attribute Framed-IP-Netmask 255.255.255.0
      attribute Framed-Route "192.168.10.0/24 192.168.20.1"
      attribute Framed-Route "192.168.30.0/24 192.168.20.1"
     group userC
      attribute Framed-IP-Address 192.168.20.4
      attribute Framed-IP-Netmask 255.255.255.0
      attribute Framed-Route "192.168.10.0/24 192.168.20.1"
      attribute Framed-Route "192.168.30.0/24 192.168.20.1"
     group userD
      attribute Framed-IP-Address 192.168.20.5
      attribute Framed-IP-Netmask 255.255.255.0
      attribute Framed-Route "192.168.10.0/24 192.168.20.1"
      attribute Framed-Route "192.168.30.0/24 192.168.20.1"
     user userA password passwdA group userA
     user userB password passwdB group userB
     user userC password passwdC group userC
     user userD password passwdD group userD
    
  15. OpenVPN Tun(L3)トンネルインターフェースtunnel0を作成します。
    トンネルインターフェースの詳細は「VPN」/「トンネルインターフェース」を、OpenVPNの詳細は「VPN」/「OpenVPN」をご覧ください。

    これには、interfaceコマンドでトンネルインターフェースを作成し、以下の情報を設定します。

    ・トンネルインターフェースのIPアドレス(ip address
    ・エンティティー「openvpn」で定義した経路をOpenVPNクライアントに通知する設定(tunnel openvpn route
    ・トンネリング方式(tunnel mode openvpn tun
    ・トンネルインターフェースにおけるMSS書き換え設定(ip tcp adjust-mss
    interface tunnel0
     ip address 192.168.20.1/24
     tunnel openvpn route openvpn
     tunnel mode openvpn tun
     ip tcp adjust-mss 1260
    
  16. エンティティー「openvpn」内で使用しているFQDNホスト定義を動作させるため、DNSリレーとDNSキャッシュを有効にします。
    これには、ip dns forwardingip dns forwarding cacheの各コマンドを使います。
    DNSリレー、DNSキャッシュの詳細は「IP付加機能」/「DNSリレー」を、FQDNホスト定義の詳細は「UTM」/「エンティティー定義」をご覧ください。
    ip dns forwarding
    ip dns forwarding cache size 10000
    
  17. 同様に、FQDNホスト定義を動作させるため、自装置のDNS問い合わせをDNSリレー経由で行うよう設定します。
    これには、ip domain-lookupコマンドのvia-relayオプションを使います。
    ip domain-lookup via-relay
    
  18. デフォルト経路をPPPインターフェースppp0に向けます。これにはip routeコマンドを使います。
    IP経路設定の詳細は「IP」/「経路制御」をご覧ください。
    ip route 0.0.0.0/0 ppp0
    
  19. 以上で設定は完了です。
    end
    

設定の保存

■ 設定が完了したら、現在の設定内容を起動時コンフィグとして保存してください。これには、copyコマンドを「copy running-config startup-config」の書式で実行します。
awplus# copy running-config startup-config
Building configuration...
[OK]

また、write fileコマンド、write memoryコマンドでも同じことができます。
awplus# write memory
Building configuration...
[OK]

その他、設定保存の詳細については「運用・管理」/「コンフィグレーション」をご覧ください。

ファイアウォールログについて

■ ファイアウォールのログをとるには、次のコマンド(log(filter))を実行します。
awplus(config)# log buffered level informational facility local5

■ 記録されたログを見るには、次のコマンド(show log)を実行します。ここでは、ファイアウォールが出力したログメッセージだけを表示させています。
awplus# show log | include Firewall

OpenVPNクライアントの設定ファイル例

OpenVPNクライアントの設定ファイルは、通常拡張子「.ovpn」のテキストファイルとして保存します。
以下は本構成に対応する設定ファイルのサンプルです(Windows、MacOS X、Android版クライアント用)。
# OpenVPNサーバー(ルーター)と接続先ポートの指定
remote 10.0.0.1 1194 udp

# 経路情報等をサーバーから取得する
pull

# TLSクライアントを有効にする
tls-client

# 使用する暗号形式
cipher AES-128-CBC

# デジタル署名形式
auth SHA1

# TLSのバージョン
tls-version-min 1.2

# TLSの形式
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA

explicit-exit-notify

# ユーザー名・パスワード認証を有効にする
auth-user-pass

# ルーターから取得したローカルCAの自署ルート証明書
ca cacert.pem

# keepaliveの送信間隔とタイムアウトの時間
keepalive 10 120

# 使用するモード(Tunモード)
dev tun

# インターフェースのIPをサーバーから取得する
float

# IPv6のトンネリングを有効にする(Tunモードのみ)
tun-ipv6

# トンネルを有効にする(Tunモード時必須)
topology subnet

# 暗号化前のパケットのTOS値を暗号化後のパケットにコピーする
passtos

# 接続に使用するポート番号
port 1194

# ログのレベル(0~7)。0はログを生成せず、数が大きくなるほど詳細なログを表示する
verb 3

# パスワードの保存を無効にする
setenv ALLOW_PASSWORD_SAVE 0

なお、iOS版クライアントを使用する場合は、上記クライアント設定ファイルに下記の2行を追加してください。
詳しくはOpenVPN解説編の「iOS版クライアントを使用する場合」をご覧ください。
route 192.168.10.0 255.255.255.0
setenv CLIENT_CERT 0

接続手順

  1. ルーターの設定を行う。
  2. ルーター内蔵ローカルCAの自署ルート証明書を取得する (crypto pki export local pem url FILEPATH_TO_EXPORT)。
  3. OpenVPNクライアントの設定ファイル(.ovpnファイル)を作成する。
  4. OpenVPNクライアントの設定ファイル(.ovpnファイル)と、ルーター内蔵ローカルCAの自署ルート証明書をクライアントに移す(移し方はクライアントアプリによって変わる)。
  5. クライアントから接続を開始する。

備考

本構成例のようにOpenVPNのTun(L3)モードを使用する場合は、クライアントへのIP設定情報提供にRADIUS属性を使う必要があります。

しかし、もう一つのモードであるTap(L2)モードを使用する場合は、RADIUS属性だけでなくDHCPでIP設定情報を提供することも可能です。

Note
Android版およびiOS版クライアントではTap(L2)モードでのOpenVPN接続は未サポートです。

OpenVPN Tap(L2)モード構成時に本製品のDHCPサーバー機能を利用してIP設定情報を提供する場合は、ローカルRADIUSサーバーの設定はユーザー認証に関する部分だけでよく、ユーザーグループの設定は不要です。また、DHCPサーバーの設定は、OpenVPN Tap(L2)トンネルインターフェースのサブネットに対応するDHCPプールを作成すれば完了です。

Tapモードの設定

Tapモード時は、上記のTunモード時の設定のローカルRADIUSとトンネルインターフェースの設定を以下のように変更し、DHCPプールの設定を加えてください。
Note
DHCPによるIPアドレス払い出しをしたい場合は以下のように設定してください。ただし、本設定の場合、FQDNにて指定したエンティティ定義のルート情報をクライアントに通知することはできません。
radius-server local
 server enable
 nas 127.0.0.1 key awplus-local-radius-server
 user userA password passwdA
 user userB password passwdB
 user userC password passwdC
 user userD password passwdD
!
interface tunnel0
 ip address 192.168.20.1/24
 tunnel mode openvpn tap
 ip tcp adjust-mss 1260
!
ip dhcp option 121 name Classless-Static-Route hex
!
ip dhcp pool pool10
 network 192.168.20.0 255.255.255.0
 range 192.168.20.2 192.168.20.10
 option Classless-Static-Route 18c0a80ac0a8140118c0a81ec0a81401
 lease 0 2 0
 subnet-mask 255.255.255.0
!
service dhcp-server
Note
本製品のDHCPサーバー機能を利用してOpenVPNクライアントにIPアドレスを提供する場合は、ip dhcp optionコマンドで定義した DHCPオプション121(Classless Static Route Option)を用いてスタティック経路を通知してください。
optionコマンドで指定している 18c0a80ac0a8140118c0a81ec0a81401 は、各経路の「宛先ネットワークマスク長、宛先ネットワークアドレス、ネクストホップアドレス」を16進数表記で連結したもので、次のように解釈します。
16進表記
10進表記
説明
経路エントリー #1 (宛先 192.168.10/24 ネクストホップ 192.168.20.1)
18 24 宛先マスク長
c0 a8 0a 192 168 10 宛先アドレス
c0 a8 14 01 192 168 20 1 ネクストホップアドレス
経路エントリー #2 (宛先 192.168.30/24 ネクストホップ 192.168.20.1)
18 24 宛先マスク長
c0 a8 1e 192 168 30 宛先アドレス
c0 a8 14 01 192 168 20 1 ネクストホップアドレス

ルーターのコンフィグ

!
no spanning-tree rstp enable
!
interface eth1
 encapsulation ppp 0
!
interface ppp0
 ppp ipcp dns request
 keepalive
 ip address negotiated
 ppp username user@isp
 ppp password isppasswd
 ip tcp adjust-mss pmtu
!
vlan database
 vlan 2
!
interface port1.0.3-1.0.4
 switchport access vlan 2
!
interface vlan1
 ip address 192.168.10.1/24
interface vlan2
 ip address 192.168.30.1/24
!
zone private
 network lan
  ip subnet 192.168.10.0/24
  ip subnet 192.168.20.0/24
  ip subnet 192.168.30.0/24
!
zone public
 network wan
  ip subnet 0.0.0.0/0 interface ppp0
  host ppp0
   ip address dynamic interface ppp0
!
zone openvpn
 network url
  host microsoft
   ip address dynamic fqdn windowsupdate.microsoft.com
   ip address dynamic fqdn update.microsoft.com
!
firewall
 rule 10 permit any from private to private
 rule 20 permit any from private to public
 rule 30 permit openvpn from public.wan to public.wan.ppp0
 protect
!
nat
 rule 10 masq any from private to public
 enable
!
radius-server host 127.0.0.1 key awplus-local-radius-server
!
aaa authentication openvpn default group radius
!
crypto pki trustpoint local
crypto pki enroll local
radius-server local
 server enable
 nas 127.0.0.1 key awplus-local-radius-server
 group userA
  attribute Framed-IP-Address 192.168.20.2
  attribute Framed-IP-Netmask 255.255.255.0
  attribute Framed-Route "192.168.10.0/24 192.168.20.1"
  attribute Framed-Route "192.168.30.0/24 192.168.20.1"
 group userB
  attribute Framed-IP-Address 192.168.20.3
  attribute Framed-IP-Netmask 255.255.255.0
  attribute Framed-Route "192.168.10.0/24 192.168.20.1"
  attribute Framed-Route "192.168.30.0/24 192.168.20.1"
 group userC
  attribute Framed-IP-Address 192.168.20.4
  attribute Framed-IP-Netmask 255.255.255.0
  attribute Framed-Route "192.168.10.0/24 192.168.20.1"
  attribute Framed-Route "192.168.30.0/24 192.168.20.1"
 group userD
  attribute Framed-IP-Address 192.168.20.5
  attribute Framed-IP-Netmask 255.255.255.0
  attribute Framed-Route "192.168.10.0/24 192.168.20.1"
  attribute Framed-Route "192.168.30.0/24 192.168.20.1"
 user userA password passwdA group userA
 user userB password passwdB group userB
 user userC password passwdC group userC
 user userD password passwdD group userD
!
interface tunnel0
 ip address 192.168.20.1/24
 tunnel openvpn route openvpn
 tunnel mode openvpn tun
 ip tcp adjust-mss 1260
!
ip dns forwarding
ip dns forwarding cache size 10000
!
ip domain-lookup via-relay
!
ip route 0.0.0.0/0 ppp0
!
end



(C) 2015 - 2024 アライドテレシスホールディングス株式会社

PN: 613-002107 Rev.BC