Yamahaといえば、 ルータと楽器とバイクですね。個人的には、業務やお家で扱っていた経験から大好きです。
さて、今回某紫髪のイケメンLync先生のお家とLAN間接続VPNを組むべくRTX810を購入しました。
手始めに固定IPを自宅にとったので、L2TP/IPSec環境を構築してみました。
今回は、初めてYamahaルータを触る人向けに設定例を紹介します。
固定IP で Yamaha RTXを使ってインターネット接続する
以前、愛用していたのがNetGenesis OPTシリーズでした。このルータは、固定IPのNAT変換もGUIで提供しており、説明の必要がないのですが、RTXはちょっとだけコマンドで設定が必要です。
簡単ですので見てみましょう。
ネットワーク設定例:
今回は、 グローバルIP (固定IP) を1つという設定でやってみましょう。
固定グローバルIP : x.x.x.x RTX810 LAN側IP : 192.168.100.254 プロバイダ名 : プロバイダ名 (ここは自分のわかりやすい名称でok) 接続 : 常時接続 (接続タイムアウトなし)
config例
ip route default gateway pp 1 ip lan1 address (RTX810のLAN側アドレス/サブネット) provider filter routing connection provider lan1 name LAN: provider lan2 name PPPoE/0/1/3/0/0:プロバイダ名 pp select 1 pp name PRV/1/1/3/0/0:プロバイダ名 pp keepalive interval 30 retry-interval=30 count=12 # キープアライブ間隔 pppoe use lan2 # kab2を利用するので pppoe auto disconnect off # 常時接続 pp auth accept pap chap # 認証方式 pp auth myname (プロバイダユーザ名) (パスワード) ppp lcp mru on 1454 # 自動だとこの値 (Pingなどで算定したり) ppp ipcp ipaddress on ppp ipcp msext on # Windows用 ppp ccp type none ip pp secure filter in 200003 # inbound の iptable filter (ここは例なので適当にしています。) ip pp secure filter out 200013 # outbound の iptable filter (ここは例なので適当にしています。) ip pp nat descriptor 1000 # 対応するnat descriptor 番号 pp enable 1 # 有効にする provider set 1 プロバイダ名 provider dns server pp 1 1 provider select 1 ip filter 200000 reject 10.0.0.0/8 * * * * # デフォルトのiptable filterはこんな感じ ip filter 200001 reject 172.16.0.0/12 * * * * ip filter 200002 reject 192.168.0.0/16 * * * * ip filter 200003 reject 192.168.100.0/24 * * * * # ルータのLAN側IPに合わせて自動設定されます # 他にも reject TCP 445 とかいわゆるお約束が続きます。 ip filter dynamic 200080 * * ftp #このあたりも自動で設定されたり ip filter dynamic 200081 * * domain ip filter dynamic 200082 * * www ip filter dynamic 200083 * * smtp ip filter dynamic 200084 * * pop3 ip filter dynamic 200098 * * tcp ip filter dynamic 200099 * * udp nat descriptor type 1000 masquerade # pp で紐づけた nat descriptor番号 1000 を指定してマスカレード nat descriptor address outer 1000 x.x.x.x # nat descriptor番号 1000 で 外側固定IP x.x.x.x を指定 dhcp service server # dhcpサービス利用 dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.100.110-192.168.100.120/24 # 100.110~10個利用
簡単ですねー。 ほぼGUIで設定できます。
その場合必要なのは、nat descriptor設定だけです。
nat descriptor type 1000 masquerade # pp で紐づけた nat descriptor番号 1000 を指定してマスカレード nat descriptor address outer 1000 x.x.x.x # nat descriptor番号 1000 で 外側固定IP x.x.x.x を指定
L2TP/IPsec で リモートアクセスVPNを構築する
ここまでできるなら、後は簡単です。
VPNとかだれでも簡単にできます。
一つの L2TPクライアント(アドレス不定)の接続を受け付ける
複数でも要領は変わらないのでさくっと行きましょう。
RTX810側ネットワーク設定例:
固定IP : x.x.x.x RTX810 LAN側IP : 192.168.100.254 L2TPクライアントへのIP配布 : 192.168.100.99 (固定で1つ) ipsec ike nat-traversal : プライベートIPを付与するため有効にする必要があります L2TPトンネル認証 : なし L2TPキープアライブ : 使用する インターバル10秒 ダウン検出までのカウント3回 L2TPキープアライブのログ出力 : 有り L2TPトンネルの切断タイマ : タイマ切断しない L2TPのコネクション制御に関するログ出力 : 有り
L2TPクライアント(iPhone)設定例:
IPアドレス : 不定 (3G接続) IPsec事前共有鍵 : hogehoge PPP認証ユーザー名 : fugafuga PPP認証パスワード : piyopiyo
RTX810 のファームウェアに注意
必ず最新のファームウェアにアップデートしてください。記事時点では最新のRTX810 Rev.11.01.19が推奨。
購入時の初期版RTX810 Rev.11.01.04では、たとえ設定が正しくても、L2TP接続時にinactivate ISAKMP socketと出て、接続が確率できません。
config例
インターネット接続に加えて必要な設定は以下です。 コマンド実行で簡単完了。
ip lan1 proxyarp on # route to rtx for outer to inner pp select anonymous # Accept L2TP VPN pp bind tunnel1 # create 1 tunnel pp auth request pap chap # iPhone could use mschap-v2 and pap chap pp auth username fugafuga piyopiyo # username / pass for ppp ppp ipcp ipaddress on ppp ipcp msext on ip pp remote address pool dhcp # assign from dhcp ip pp mtu 1258 pp enable anonymous # anonymous connection tunnel select 1 # configuration for tunnel 1 tunnel encapsulation l2tp # declare l2tp vpn ipsec tunnel 1 ipsec sa policy 1 1 esp aes-cbc sha-hmac # use esp as aes and sha-hmac (you cannot use sha256-hmac with iPhone) ipsec ike keepalive use 1 off ipsec ike local address 1 192.168.100.254 # Router address ipsec ike nat-traversal 1 on # required if assgin private address ipsec ike pre-shared-key 1 text hogehoge # password for l2tp ipsec ike remote address 1 any # accept any address l2tp tunnel disconnect time off # do not disconnect while connecting l2tp keepalive use on 10 3 # send keepalive packet while 10 second for 3 down detection l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto # limit for TCP session MSS tunnel enable 1 ip filter 200061 pass * 192.168.100.254 esp * * ip filter 200062 pass * 192.168.100.254 udp * 500 ip filter 200063 pass * 192.168.100.254 udp * 4500 ip filter 200064 pass * 192.168.100.254 udp * 1701 ip pp secure filter in 200061 200062 200063 200064 # enable incoming connection nat descriptor masquerade static 1000 1 192.168.100.254 esp nat descriptor masquerade static 1000 2 192.168.100.254 udp 500 nat descriptor masquerade static 1000 3 192.168.100.254 udp 4500 nat descriptor masquerade static 1000 4 192.168.100.254 udp 1701 ipsec transport 1 1 udp 1701 # ipsec transport mode for tunnel 1 ipsec auto refresh on dns private address spoof on # return NX Domain for private address PRT record request, not to transfer to senior server l2tp service on # enable l2tp service
L2TPクライアントを追加するのに合わせて、ppユーザーとtunnelとipsec transport設定をその分だけ追加します。
pp auth username fugafuga2 piyopiyo2 # username / pass for ppp tunnel select 2 # configuration for tunnel 2 tunnel encapsulation l2tp # declare l2tp vpn ipsec tunnel 2 ipsec sa policy 2 2 esp aes-cbc sha-hmac # use esp as aes and sha-hmac (you cannot use sha256-hmac with iPhone) ipsec ike keepalive use 2 off ipsec ike local address 2 192.168.100.254 # Router address ipsec ike nat-traversal 2 on # required if assgin private address ipsec ike pre-shared-key 2 text hogehoge # password for l2tp ipsec ike remote address 2 any # accept any address l2tp tunnel disconnect time off # do not disconnect while connecting l2tp keepalive use on 10 3 # send keepalive packet while 10 second for 3 down detection l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto # limit for TCP session MSS tunnel enable 2 ipsec transport 2 2 udp 1701 # ipsec transport mode for tunnel 1
ログの確認
ログを確認すると状況把握にいいでしょう。
# show log 2013/10/04 08:24:04: [IKE] respond ISAKMP phase to 接続先のグローバルIP 2013/10/04 08:24:08: [IKE] respond IPsec phase to 接続先のグローバルIP 2013/10/04 08:24:08: IP Tunnel[1] Up 2013/10/04 08:24:09: [L2TP] TUNNEL[1] connected from 接続先のグローバルIP 2013/10/04 08:24:09: [L2TP] TUNNEL[1] tunnel 13184 established 2013/10/04 08:24:09: [L2TP] TUNNEL[1] session 40428 established 2013/10/04 08:24:09: PP[ANONYMOUS01] Call detected from user 'ユーザー名' 2013/10/04 08:24:09: PP[ANONYMOUS01] PPP/IPV6CP up 2013/10/04 08:24:10: PP[ANONYMOUS01] PPP/IPCP up (Local: RTX810のローカルIP, Remote: 接続先に与えたプライベートIP) #
失敗するとエラーが出ますが、設定中は、デバッグとInfo、Noticeのログ段階全てを有効にしておくことを推奨します。
receive message from unknown gatewayと表示されて L2TP接続できない場合
接続テストで、L2TP接続を試みた際に、ログに "receive message from unknown gateway" と表示された場合は、以下のコマンドを実行すると解消します。
ipsec refresh sa
セッションの確認
あとは、セッションの確認だけです。
プロバイダとの接続状況
# show status pp 1
PP[01]:
説明:
PPPoEセッションは接続されています
接続相手: hogehogefugafuga
通信時間: 1時間20分33秒
受信: 46028 パケット [35637253 オクテット] 負荷: 0.0%
送信: 10227 パケット [10318326 オクテット] 負荷: 0.0%
PPPオプション
LCP Local: Magic-Number MRU, Remote: CHAP Magic-Number MRU
IPCP Local: IP-Address Primary-DNS(x.x.z.z) Secondary-DNS(x.x.z.z),
Remote: IP-Address
PP IP Address Local: x.x.x.x, Remote: x.x.x.y
CCP: None
#
NAT記述子の状態を確認
# show nat descriptor address
参照NATディスクリプタ : 1000, 適用インタフェース : PP[01](1)
Masqueradeテーブル
外側アドレス: x.x.x.x
ポート範囲: 60000-64095, 54096-59999 75個使用中
プロトコル 内側アドレス 宛先 マスカレード 種別
UDP 192.168.100.254.1701 *.*.*.*.* 1701 static
UDP 192.168.100.254.4500 *.*.*.*.* 4500 static
UDP 192.168.100.254.500 *.*.*.*.* 500 static
ESP 192.168.100.254.* *.*.*.*.* * static
-*- -*- -*- -*- -*- -*- -*- -*- -*- -*- -*-
No. 内側アドレス 使用中のポート数 制限数 種別
1 192.168.100.zz 74 10000 dynamic
2 192.168.100.254 1 10000 dynamic
---------------------
有効なNATディスクリプタテーブルが1個ありました
#
経路情報確認
# show ip route 宛先ネットワーク ゲートウェイ インタフェース 種別 付加情報 default - PP[01] static 192.168.100.0/24 192.168.100.254 LAN1 implicit 210.130.0.1/32 - PP[01] temporary 210.130.1.1/32 - PP[01] temporary 210.149.34.75/32 - PP[01] temporary #
SA情報を確認
接続していないと見えませんが。
# show ipsec sa Total: isakmp:1 send:1 recv:1 sa sgw isakmp connection dir life[s] remote-id ----------------------------------------------------------------------------- 1 1 - isakmp - 3595 zzz.zzz.zz.zz(接続しているクライアントIP) 2 1 1 tra[001]esp send 3596 zzz.zzz.zz.zz(接続しているクライアントIP) 3 1 1 tra[001]esp recv 3596 zzz.zzz.zz.zz(接続しているクライアントIP) #
L2TPの接続状況
# show status pp anonymous
ANONYMOUS[01]:
L2TPセッションは接続されています
接続相手: 接続相手
通信時間: 1分29秒
受信: 66 パケット [4254 オクテット]
送信: 55 パケット [10368 オクテット]
PPPオプション
LCP Local: CHAP Magic-Number MRU, Remote: Magic-Number
IPCP Local: IP-Address, Remote: IP-Address Primary-DNS(x.x.x.x(RTX810のIP))
PP IP Address Local: x.x.x.x(RTX810のIP), Remote: y.y.y.y(接続しているクライアントに与えたPrivateIP)
IPV6CP Local: Interface-ID, Remote: Interface-ID
PP Interface-ID Local: ccacccccccccac3, Remote: cc3ccccecccc0ccc
CCP: None
受けとったUserId: 接続ユーザー名
#
L2TPの状態
# show status l2tp
------------------- L2TP INFORMATION -------------------
Number of control table using
Tunnel Control: 1, Session Control: 1
TUNNEL[1] Information
Tunnel State: established
Local Tunnel ID: 13184
Remote Tunnel ID: 38
Local IP Address: x.x.x.x(RTX810のIP)
Remote IP Address: z.z.z.z(接続相手のグローバルIP)
Local Src Port: 1701
Remote Src Port: 29688
PP bind: ANONYMOUS[1]
Vendor:
Hostname: 接続相手
Tunnel has 1 session.
Session Information
Session State: established
Local Session ID: 40428
Remote Session ID: 943
Received: 95 packets [6246 octets]
Transmitted: 61 packets [10681 octets]
#
まとめ
後は、iPhoneでさくっと接続するだけ! 簡単YAMAHA最高ですね。設定に融通が効かない部分も一部ありますが好きです。
続きでは、 AWS VPCとのLAN間接続VPNとRTX810同志のLAN間接続VPNでも載せましょうかしら。