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

| 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 |
| ユーザー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 を実行し、スタートアップコンフィグが存在しない状態で起動してから、設定を始めてください。
ただし、本製品はスタートアップコンフィグなしで起動した場合でも、特定の条件を満たすと自動的な設定を行うことがあるため、その場合は設定例にしたがってコマンドを入力しても、コマンドがエラーになったり、全体として意図した動作にならない可能性があります。
これを避けるため、設定開始にあたっては次のいずれかの方法をとることをおすすめします。
- ネットワークケーブルを接続せずに起動する。
起動時に自動設定が実行されるための条件の一つに、特定インターフェースのリンクアップがあります。
ネットワークケーブルを接続しない状態で起動することにより、自動設定の適用を回避できます。
- 自動設定を手動で削除してから設定を行う。
前記の方法を採用できず自動設定が適用されてしまった場合は、「自動的な設定内容の削除」にしたがって、これらを手動で削除してから設定を開始してください。
システム時刻の設定
ログなどの記録日時を正確に保ち、各種機能を適切に動作させるため、システム時刻は正確にあわせて運用することをおすすめします。ご使用の環境にあわせ、次のいずれかの方法でシステム時刻を設定してください。
- 手動で設定する方法 - 「運用・管理」/「システム」
- NTPで自動設定する方法 - 「運用・管理」/「NTP」
ルーターの設定
- LANポートにおいて初期状態で有効化されているスパニングツリープロトコル(RSTP)を無効化します。これにはspanning-tree enableコマンドをno形式で実行します。
スパニングツリープロトコルの詳細は「L2スイッチング」/「スパニングツリープロトコル」をご覧ください。
no spanning-tree rstp enable
- WANポートeth1上にPPPoEインターフェースppp0を作成します。これには、encapsulation pppコマンドを使います。
PPPの詳細は「PPP」/「一般設定」をご覧ください。
interface eth1 encapsulation ppp 0
- 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
- VLANを作成します。
これには、vlan databaseコマンドとvlanコマンドを使います。
VLANの詳細は「L2スイッチング」/「バーチャルLAN」をご覧ください。
vlan database vlan 2
- 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
- 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
- ファイアウォールやNATのルール作成時に使うエンティティー(通信主体)を定義します。
エンティティー定義の詳細は「UTM」/「エンティティー定義」をご覧ください。
内部ネットワークを表すゾーン「private」を作成します。
これには、zone、network、ip 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
- 外部ネットワークを表すゾーン「public」を作成します。
前記コマンドに加え、ここではhost、ip addressの各コマンドも使います。
zone public network wan ip subnet 0.0.0.0/0 interface ppp0 host ppp0 ip address dynamic interface ppp0
- エンティティーは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
- 外部からの通信を遮断しつつ、内部からの通信は自由に行えるようにするファイアウォール機能の設定を行います。
これには、firewall、rule、connection-limit、protectの各コマンドを使います。
・rule 10 - 内部から内部への通信を許可します
・rule 20 - 内部から外部への通信を許可します
・rule 30 - 外部から本製品のWAN側インターフェースへのOpenVPN通信を許可します
・connection-limit 1001 - DNSリレー等のppp0インターフェース発のセッション数を4096までとします
・connection-limit 1002 - OpenVPNを含む外部からWANインターフェース宛てのセッション数を5までとします
ファイアウォールの詳細は「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 connection-limit 1001 from public.wan.ppp0 with limit 4096 connection-limit 1002 from public.wan with limit 5 protect
- LAN側ネットワークに接続されているすべてのコンピューターがダイナミックENAT機能を使用できるよう設定します。
これには、nat、rule、enableの各コマンドを使います。
NATの詳細は「UTM」/「NAT」をご覧ください。
nat rule 10 masq any from private to public enable
- RADIUSクライアント機能が使用するRADIUSサーバーを登録します。これにはradius-server hostコマンドを使います。
ここでは、本製品内蔵のローカルRADIUSサーバーを指定しています。
RADIUSクライアント機能の詳細は「運用・管理」/「RADIUSクライアント」を、ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」をご覧ください。
radius-server host 127.0.0.1 key awplus-local-radius-server
- OpenVPNで使用するRADIUSサーバーを指定します。これにはaaa authentication openvpnコマンドを使います。
aaa authentication openvpn default group radius
- ローカルRADIUSサーバーにOpenVPNユーザーを登録します。
これには、radius-server local、server enable、group、attribute、userの各コマンドを使います。
ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」をご覧ください。
※ crypto pki trustpoint、crypto pki enroll、nasは、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
- 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
- エンティティー「openvpn」内で使用しているFQDNホスト定義を動作させるため、DNSリレーとDNSキャッシュを有効にします。
これには、ip dns forwarding、ip dns forwarding cacheの各コマンドを使います。
DNSリレー、DNSキャッシュの詳細は「IP付加機能」/「DNSリレー」を、FQDNホスト定義の詳細は「UTM」/「エンティティー定義」をご覧ください。
ip dns forwarding ip dns forwarding cache size 10000
- 同様に、FQDNホスト定義を動作させるため、自装置のDNS問い合わせをDNSリレー経由で行うよう設定します。
これには、ip domain-lookupコマンドのvia-relayオプションを使います。
ip domain-lookup via-relay
- デフォルト経路をPPPインターフェースppp0に向けます。これにはip routeコマンドを使います。
IP経路設定の詳細は「IP」/「経路制御」をご覧ください。
ip route 0.0.0.0/0 ppp0
- 以上で設定は完了です。
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 # トンネルを有効にする 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
接続手順
- ルーターの設定を行う。
- ルーター内蔵ローカルCAの自署ルート証明書を取得する (crypto pki export local pem url FILEPATH_TO_EXPORT)。
- OpenVPNクライアントの設定ファイル(.ovpnファイル)を作成する。
- OpenVPNクライアントの設定ファイル(.ovpnファイル)と、ルーター内蔵ローカルCAの自署ルート証明書をクライアントに移す(移し方はクライアントアプリによって変わる)。
- クライアントから接続を開始する。
備考
本構成例のようにOpenVPNのTun(L3)モードを使用する場合は、クライアントへのIP設定情報提供にRADIUS属性を使う必要があります。しかし、もう一つのモードであるTap(L2)モードを使用する場合は、RADIUS属性だけでなくDHCPでIP設定情報を提供することも可能です。
OpenVPN Tap(L2)モード構成時に本製品のDHCPサーバー機能を利用してIP設定情報を提供する場合は、ローカルRADIUSサーバーの設定はユーザー認証に関する部分だけでよく、ユーザーグループの設定は不要です。また、DHCPサーバーの設定は、OpenVPN Tap(L2)トンネルインターフェースのサブネットに対応するDHCPプールを作成すれば完了です。
Tapモードの設定
Tapモード時は、上記のTunモード時の設定のローカルRADIUSとトンネルインターフェースの設定を以下のように変更し、DHCPプールの設定を加えてください。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
ルーターのコンフィグ
! 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 connection-limit 1001 from public.wan.ppp0 with limit 4096 connection-limit 1002 from public.wan with limit 5 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