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でも載せましょうかしら。