Androidの標準機能のL2TP/IPsec、iPhoneの標準機能であるCisco提供の
IPsecやL2TP/IPsec、及び接続ソフト「Cisco VPN Client」からASA5505へ
VPN接続する方法です。
脆弱性情報→2016.02.12 Cisco ASAシリーズに深刻な脆弱性、CVSS値は最大
※Androidから遠隔のPCへリモートデスクトップ接続するだけで有れば
SSHでポート転送してリモートデスクトップ、をした方が早いかもしれません。
その方法については、以下のページに記載しました。
またBUFFALO製品とかでも、昔はPPTPのみだったので少し安全性の面で微妙でしたが
最近の製品はスマホからIPsecで接続できます。
Cisco VPN Clientは既に生産/販売を終了している且つAnyConnectは
Android4.0以降からは使用するにあたってroot権限である必要が無くなったため
AnyConnectでの設定を検討しても良いかもしれませんね。
ASAのライセンスについて、ASAでAnyConnect Mobileを有効にするにはSSL VPN
PremiumユーザライセンスかAnyConnect Essentials VPNライセンスが必要など
少し留意点があります。購入前に販売者に確認する方が良いかと思います。
接続ソフトは何故か各所で配布されています。
※ASA5505の中や添付CDにもAnyConnectやCisco VPN Client等の
接続ソフトやASDM、CSD等が入っています。
また、iPhoneの標準機能のIPsec画面を表示させたところ
ciscoのロゴが有ったのが意外でした。
2008年7月 Apple iPhone 2.0 から Cisco ASAへの VPN 接続について
ASAのIPsecについて、使用した機器は以下です。
・ASA5505(VPN機器)
・ノートPC(リモートデスクトップされる側)
・Android端末(リモートデスクトップする側)
ASA5505は、新品で4万円位でヤフオクなど中古で3万円位です。
AndroidやiPhone端末は、以前はおおざっぱに言うとMNPで0円以下で購入可能で、
また0円以下での販売はあまり無いですがドコモの月々サポートが
高額な機種(iPhone6Plus等)だと実質0円です。
携帯番長
以下のことを実施します。
ただ接続するだけならば「②コンフィグの投入」のみで構いません。
また、この設定をしたのは2011年12月頃のため、現在とはASAの
OSバージョンなど相違点があるかと思います。
本ページの目次
ネットワーク構成は以下です。
図の作成についてはITILに準拠するため(嘘)、各機器を犬で示しました。
または
念のため、バックアップとしてOS、ASDM、csd、anyconnectをPCに
ダウンロードしておきます。
tftpサーバをダウンロードます。
※以下のciscoドキュメントで勧めているtftpd32を使用しました。
その後、工場出荷時のコンフィグは以下であるため
ASA5505のinterface Ethernet0/1にPCを接続しDHCPでIPアドレスを取得する。
PCからASA5505(192.168.1.1)へpingし、疎通が有ることを確認する。
tftpを起動します。
格納されているファイルを確認します。
または
ASA5505のdisk0のasa821-k8.binをPCのtftpへコピーします。
そのままEnterを押します。
PCのIPアドレスを入力しEnterを押します。
そのままEnterを押します。
PCのtftpd32フォルダへダウンロードされたことを確認します。
「delete disk0:?」でファイル名の確認が可能です。
上記の「ASA5505に入っているファイルのコピー」の逆です。
現在使用しているバージョンは
で確認可能です。
指定は以下。
androidからL2TPで接続する場合、mschapオプションが必要です。
iPhoneやCiscoVPNClient、また内部セグメントからのSSH接続する
ユーザーの場合はmschapオプション無しで良いです。
※その後、sh runし
と表示されることを確認します。
その後、以下のコンフィグを入れます。
「●~●」の箇所は自環境のプロバイダ設定と、事前共有鍵(パスワード)を入れます。
「---文字列---」の箇所はどんな項目を入れているか分かりやすいようにしました。
そのまま投入で問題ないですが、一括置換で任意の文字列を変更可能です。
またセキュリティを向上するには各パスワード設定を強固にして下さい。
vpdn group ---groupname--- request dialout pppoe
!
interface Ethernet0/0
!
interface Ethernet0/1
switchport access vlan 2
interface Vlan1
nameif outside
security-level 0
pppoe client vpdn group ---groupname---
ip address pppoe setroute
!
interface Vlan2
nameif inside
security-level 100
ip address 192.168.0.1 255.255.255.0
!
clock timezone JST 9
!
object network ---obj-192.168.0.0---
subnet 192.168.0.0 255.255.255.0
nat (inside,outside) dynamic interface
object network ---obj-172.16.0.0---
subnet 172.16.0.0 255.255.255.0
!
access-list ---splittunnel_acl--- standard permit 192.168.0.0 255.255.255.0
access-list ---inside_acl--- extended permit ip any any
!
access-group ---inside_acl--- in interface inside
!
logging enable
logging timestamp
logging buffered informational
logging trap notifications
logging asdm notifications
logging host Inside 192.168.0.10 format emblem
!
mtu Outside 1492
mtu Inside 1500
!
ip local pool ---pool_1--- 172.16.0.1-172.16.0.10 mask 255.255.255.0
ip local pool ---pool_2--- 172.16.0.11-172.16.0.20 mask 255.255.255.0
!
nat (inside,any) source static ---obj-192.168.0.0--- ---obj-192.168.0.0--- destination static ---obj-172.16.0.0--- ---obj-172.16.0.0---
■1行で投入しています。
!
aaa authentication ssh console LOCAL
http server enable
http 192.168.0.10 255.255.255.255 inside
!
crypto ipsec ikev1 transform-set ---transform_1--- esp-3des esp-sha-hmac
crypto ipsec ikev1 transform-set ---transform_2--- esp-3des esp-sha-hmac
crypto ipsec ikev1 transform-set ---transform_2--- mode transport
!
crypto dynamic-map ---dynamicmap_1--- 123 set ikev1 transform-set ---transform_1--- ---transform_2---
!
crypto map ---cryptomap_1--- 65535 ipsec-isakmp dynamic ---dynamicmap_1---
crypto map ---cryptomap_1--- interface outside
!
crypto ikev1 enable outside
crypto ikev1 policy 65535
authentication pre-share
encryption 3des
hash sha
group 2
lifetime 86400
!
ssh 192.168.0.10 255.255.255.255 inside
telnet timeout 15
ssh timeout 15
console timeout 15
!
vpdn group ---groupname--- request dialout pppoe
vpdn group ---groupname--- localname ●PPPoEのユーザー名(自宅ではsonetを使っています。)●
vpdn group ---groupname--- ppp authentication chap
vpdn username ●PPPoEのユーザー名● password ●PPPoEのパスワード●
!
webvpn
!
group-policy ---grouppolicy_1--- internal
!
group-policy ---grouppolicy_1--- attributes
vpn-tunnel-protocol ikev1
split-tunnel-policy tunnelspecified
split-tunnel-network-list value ---splittunnel_acl---
!
group-policy ---grouppolicy_2--- internal
!
group-policy ---grouppolicy_2--- attributes
vpn-tunnel-protocol ikev1 l2tp-ipsec
address-pools value ---pool_2---
!
tunnel-group DefaultRAGroup general-attributes
default-group-policy ---grouppolicy_2---
!
tunnel-group DefaultRAGroup ipsec-attributes
ikev1 pre-shared-key ●事前共有鍵●
!
tunnel-group ---tunnelgroup_2--- type remote-access
!
tunnel-group ---tunnelgroup_2--- general-attributes
address-pool ---pool_1---
default-group-policy ---grouppolicy_1---
!
tunnel-group ---tunnelgroup_2--- ipsec-attributes
ikev1 pre-shared-key ●事前共有鍵●
!
注意事項として内部セグメントから外部へ出る時はPAT(=NAPT)がかかって良いのですが
内部セグメントからVPN側へアクセスする際にはNAT免除させる以下の設定が必要です。
androidからのL2TP/IPSec接続時の注意事項
など
in側に全許可のアクセスリストを入れていますが
セキュリティレベルの高い方から低い方はデフォルトで全許可だったかと思うので
このin側にアクセスリストはいらないかもしれません。一応設定例として載せています。
上記例では外部側のIPアドレスは動的ですが、もし固定グローバルIPアドレスである時や
上位に機器が有るなどでASAの外部側インターフェースが固定IPアドレスの場合などの場合は
上記コンフィグのvpdnに関する設定を削除し、interface Ethernet0/0(interface Vlan1)を
固定IPに、且つデフォルトルート設定「route outside 0.0.0.0 0.0.0.0 ネクストホップ 1」を
入れる感じだと思います。
インターフェースを起動します。
コンフィグ投入後ASAから8.8.8.8へPing疎通できるかどうか、
WindowsPCからインターネット出来るかどうかを確認します。
WindowsPCは固定で
と設定しました。
このコンフィグの場合のシスログサーバのIPアドレス、
ASDM(https://192.168.0.1 )を使用してへアクセスできるPCのIPアドレス、
SSHを使用してへアクセスできるPCのIPアドレスは
全て192.168.0.10です。
SyslogはSyslog Viewer Liteを使用しました。
Windowsのサービスとして動作するため便利です。
またIPSWITCH WhatsUpGoldのサイトの無料シスログサーバなども有ります。
WindowsファイアウォールでUDP 514を開けておきます。
ダウンロードし解凍した「tsyslog」ディレクトリをDドライブ直下などに置きます。
「tsyslog」ディスクトリに「Log」ディレクトリを作成します。
このディレクトリを作成しておかないと以後のインストールコマンドで
エラーが出るかもしれません。
コマンドプロンプトにて以下を実行しインストールします。
多分、コマンドプロンプトを「管理者として実行」で無くても
いけると思います。
※Syslogディレクトリへ移動しています。
スタート→コンピュータの右クリックメニュー「管理」からサービスの中に
「Syslog Recive Service」が登録されているので開始させます。
「Log」ディレクトリにASAからのログが飛んできた時点で本日日付の
ログファイルができ、その後どんどん追記されていきます。
https://192.168.0.1 でASAへ接続します。
ユーザー、パスワードは無しです。
Tera Termを使用してSSH接続できることを確認します。
接続ユーザー名は「コンフィグの投入」で設定したものです。
ファイルの送受信はwinscpが便利です。
AndroidなどからIPSecでASAへ接続する場合、ASAのIPアドレスを入力し
接続しますが、ASAがPPPoE接続等で動的IPアドレスの場合、なかなか
ASAのIPアドレスを入力し接続することは困難です。
そのためIPアドレスでは無くドメイン名で入力し接続することにします。
ASAにもddnsコマンドが有るのですが以下のCiscoASAシリーズCLI
コンフィギュレーションガイドを見る限りはASAのDDNS機能は今回の用途では
無いようでした。
なので残念ですが、内部に有るサーバやPCからdyndnsへ、PPPoEでのIPアドレスが
変更した際などにアップデート情報を送信する方法にしました。
ダイナミックDNSのno-ipを使用する方法は2014年12月に以下のページに記載しました。
もしくはdyndnsとDiceという構成も挙げておきます。
Diceはここ数年更新しておられないようでした。
まず、dyndnsを使用しダイナミックDNSの登録を行います。
dyndnsの設定方法は以下が詳しいです。
dyndnsの設定後、Diceの設定を行います。
Diceのダウンロードページ
Diceの設定方法は以下が詳しいです。
接続元端末はGalaxyNexus(SC-04D)を使いました。
回線はdocomoのspモード(プライベートIPアドレス)で試行しました。
PPTPではなくL2TPで接続するのでプライベートIPアドレスで問題ありません。
※公衆無線LANではホテルのインターネット環境など、VPNを使用不可としている所が多いです。
また、稀ですが一部プロバイダとwimaxの組み合わせ等の特定環境でもVPN使用不可として
いたかもしれません。
事前に自宅等のWindowsPCのリモートデスクトップ接続許可設定を行なっておきます。
自宅のPCは、慣例で何となくリモートデスクトップで使うポートを3389から変更しています。
その後AndroidのGoogle Playからリモートデスクトップ接続ソフト
Microsoft Remote Desktopや「Pocket Cloud」をインストールしておきます。
また、ifconfigというAndroidのIPアドレスを確認するソフトとPing&DNSという
ping実行ソフトもダウンロード、インストールしておきます。
VPN接続自体はAndroid標準の機能を使用します。
で設定完了です。
作成した「ASA」を押し、接続できればOKです。
先ほどのシスログに接続しに来たログが出ています。
接続できない場合、原因は色々有ります。
シスログを確認して原因を推測します。
以下の点などを確認するのも良いかもしれません。
※CiscoVPNClientは既に生産/販売を終了しています。
Androidの設定とほぼ同じですが1つ設定項目が増えて
名前にトンネルグループ名、上記のコンフィグでは「---tunnelgroup_2---」
の入力が増えます。
iphoneでもリモートデスクトップには「Pocket Cloud」を使用します。
「Microsoft Remote Desktop」や「Pocket Cloud」で
WindowsPCへリモートデスクトップします。
Pocket Cloudの設定は以下が詳しいです。
設定時、google認証は使用せず手動設定で大丈夫です。
いつの間にか、DELLが買収したんですかね。
リモートデスクトップ出来ない場合はNAT免除設定あたりを見直す感じです。
以上です。