Re:シルの日々の戯言。

散財が生き甲斐になりかけている、デジタルガジェット大好き自称黄色いネズミの戯言。

衝動買いしたRTX830向けにconfigを書き起こす(MAP-E+PPPoEでVPN)

先週の話になりますが、RTX830を購入しました。
sylve.hatenablog.jp


私にしては大変珍しく現行最新モデルを新品購入したルーターなので、今をときめく様々な技術に対応したギークな人としては楽しめる超お高級価格*1ルーターです。

そして設定(config)の互換性が高いので今の今まで利用してきたルーターのconfigをそのまま移し替えることが可能なので、RTX1100から継ぎ足し継ぎ足しの秘伝のタレと化したconfigをそのまま打ち込むことが可能です。

sylve.hatenablog.jp
sylve.hatenablog.jp

ただし、今回RTX830を購入した最大の動機はMAP-E方式でIPv4の通信を利用することです。このMAP-E方式と言うものは比較的最近の接続方式のため、手持ちのRTX1200では利用出来ない(+ファームウェア更新でも対応しない)ので従来のconfigを単純に引き継ぐだけでは駄目です。・・・なので今回心機一転でconfigを作ることとします。

・・・いや、まぁ、configをわざわざ書かなくとも今はWebコンソール経由でチョチョっと設定するだけで良いので完全にやらなくてもいい苦労を率先してやってるのですが・・・。*2

今回のルーター設定方針について

先にヅラヅラと綴っていますが、今回のルーターの設定方針を箇条書きでザクッと綴っておくこととします。

  • 接続設定は基本的にIPoEで設定する。
    • 従来利用してきたPPPoEは近年の通信需要増加により通信速度・安定性が低下しているので、基本的には利用しない。
      • PPPoEが遅くなりIPoEだと大丈夫な理由は長くなるので細かいことは省略*3しますが、PPPoEは通信経路上にボトルネックとなる部分が存在するので、需要が増えると遅くなりやすい・・・と言う表現に留めます。
    • IPoEを利用すると言うことは基本的にIPv6のみに対応となる。
  • このままではIPv4のWebサイトを利用出来ないため、IPv4 over IPv6のトンネル技術を利用する必要があり、その中の一つであるMAP-E方式を利用する。
    • MAP-E以外にも方法はあるが、利用しているプロバイダ(OCN)の都合でMAP-Eを利用せざるを得ないと言う事情がある。
      • それなりに知名度がある方式だとDS-LiteIIJ系列で採用されているようですね。
  • スマートフォンタブレットからVPN接続させるためのVPN設定(L2TP/IPsec)は引き続き含める。
    • しかしMAP-Eの仕様上、そのままではL2TP/IPsecの設定は含める事ができないのでVPN専用にPPPoE接続は残す。
      • これはMAP-Eではポート番号が動的に割り当てられるため(厳密には外部公開用に割り振られるポート番号が勝手に指定されるため)、特定のポート番号を利用することが出いない。
      • VPNに限らず一昔前に流行った自宅サーバ*4を外部公開する場合でも、一般的な80番(HTTP)/443番(HTTPS)も利用出来ないことを意味する。
    • ただしゲートウェイ周りの設定に手を入れ、通常通信はMAP-E経由、VPN周り限定でPPPoE経由と振り分けが必要となる。

PPPoEの完全廃絶は行なえませんでした。スマホタブレット(+帰省などのタイミングで持ち出すMacBookPro 13-inch)から利用するVPN接続をやめればPPPoEの排除はできるのですが、なにかあった時に便利と言う呪縛に囚われて排除出来ませんでした。

そんなこんなで今回のイメージ略図(ショボショボAA)*5はこんな感じです。

 [Internet]
  |       |
(MAP-E) (PPPoE)
  |       |
  +-------+
      |
    [VDSL]
      |(WAN)
  +--------+
  | RTX830 |
  +--------+
      |(LAN)
   各種機器

RTX830なのでWAN側は1系統しかないのでスッキリ。しかし論理的には2セッション張ることになるので、ショボショボAA風イメージ図だとこんな感じになります。

configについて

基本的には既存のconfigのキメラです。

www.rtpro.yamaha.co.jp
network.yamaha.com
network.yamaha.com

YAMAHA公式のナレッジ・設定例に加えて、VPN周りの通信をPPPoEに流す設定・・・の情報である以下の記事のconfigも拝借します。

rabbit-note.com

ぶっちゃけ、便利な記事の丸パクで良いんじゃね?となりますが、該当の記事では基本的にWebコンソールで設定の上、差分で投入が必要なconfigのみ掲載されているので丸パクリと言う訳には行きません。
そんなこんなでいつも通り公式のconfigを組み合わせてのキメラconfigもとい自分の思ったとおりのconfigとして作り込むことにします。*6

個人的なconfig晒し

そんなこんなで自分で作り込んだconfigを晒して行こうと思います。

LAN周り

とりあえずは内部LAN向けの設定をゴニョゴニョ。
VPNでゴニョゴニョするので代理ARPの設定を入れていますが、基本的にはローカル側のLAN設定とDHCP有効化だけです。

# Local LAN conf.
ip lan1 address 192.168.xxx.1/24(ルーターIPアドレス)
ip lan1 proxyarp on

# DHCP conf.(Local LAN)
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.xxx.xxx-192.168.xxx.xxx/24(DHCPの範囲とするIPアドレス)

MAP-E/IPoE周り

MAP-E方式と言うか、IPoE周りの設定を入れていきます。
最初にIPoEの接続設定、その後MAP-Eの設定を入れていきます。フィルタ(ファイヤーウォール)周りは後に細かい定義を記載しますが、この段階で設定してしまいます。

なお、私の環境下はひかり電話契約が無い場合の設定になります。ひかり電話がある場合はYAMAHA公式の情報を元にひかり電話ありの設定を入れ込んで下さい。

# IPv6(IPoE) conf.
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 secure filter in 200030 200031 200038 200039
ipv6 lan2 secure filter out 200099 dynamic 200080 200081 200082 200083 200084 200098 200099
ipv6 lan2 dhcp service client ir=on

# IPv6(MAP-E) conf.
tunnel select 1
  tunnel encapsulation map-e
  tunnel map-e type ocn
  ip tunnel mtu 1460
  ip tunnel nat descriptor 1000
  tunnel enable 1

MAP-Eの設定について、プロバイダがOCNの場合のパラメータになっています。もしOCN以外の場合は「tunnel map-e type v6plus」と設定して下さい。*7

PPPoE周り

VPN専用として残すPPPoE設定。極めて普通で平凡な設定で、公式情報の設定通りです。
異色点としてはNetVolante(YAMAHA提供のVPN向けDDNS)の設定を入れてることくらいでしょうか。

# IPv4(PPPoE) conf.
pp select 1
  pp always-on on
  pppoe use lan2
  pp auth accept pap chap
  pp auth myname xxxxxxxx(認証ID) xxxxxxxx(認証パスワード)
  ppp lcp mru on 1454
  ppp ipcp ipaddress on
  ppp ipcp msext on
  ip pp mtu 1454
  ip pp secure filter in 200020 200030 200050 200051 200052 200053 200039
  ip pp secure filter out 200010 200011 200012 200013 200014 200015 200040 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
  ip pp nat descriptor 2000
  netvolante-dns hostname host pp server=1 xxxxxxxx(NetVolanteで取得するホスト名)
  pp enable 1

NetVolanteで割り当てられるホスト名を指定すると、「xxxxxxxx.aax.netvolante.jp」の形式でnetvolanteドメインが発行され、スマートフォンタブレットVPN設定する際に設定・指定することが可能です。

DNS周り

DNS周りの設定ですが、私の環境下ではPi-holeを利用しているので明示的にPi-holeのアドレスを指定しています。人によってはGoogle DNSで「8.8.8.8」とか「8.8.4.4」辺りを指定したりするかと思います。

sylve.hatenablog.jp

# DNS conf.
dns server 192.168.xxx.xxx(Pi-holeのアドレス)
dns server dhcp lan2
dns private address spoof on

デフォルトゲートウェイ周り

デフォルトゲートウェイ周りのゴニョゴニョ、これは参考情報を元に設定しています。
フィルタ周りは後に記載しますが、VPN関連の通信のみPPPoEを経由するような設定となっています。

# Gateway conf.
ip route default gateway tunnel 1 gateway pp 1 filter 100001 100002 100003 100004

NAT周り

これは設定例通り。まぁMAP-EとPPPoEで2つあるのでそこんとこだけ注意。

nat descriptor type 1000 masquerade
nat descriptor address outer 1000 map-e
nat descriptor type 2000 masquerade
nat descriptor masquerade static 2000 1 192.168.xxx.1(ルーターIPアドレス) udp 500
nat descriptor masquerade static 2000 2 192.168.xxx.1(ルーターIPアドレス) udp 4500
nat descriptor masquerade static 2000 3 192.168.xxx.1(ルーターIPアドレス) esp

VPN周り(ユーザ設定周り)

VPN設定のうちのユーザ認証周り。必要なユーザー数だけ作成しますが、RTX830の製品位置付け的には後述のトンネル設定数が限定されるので注意されたし。

# VPN conf.
## user setting.
pp select anonymous
  pp bind tunnel2(tunnel1はMAP-Eで指定しているので2以降の値)
  pp auth request mschap-v2
  pp auth username xxxxxxxx(VPN接続時のユーザID) xxxxxxxx(VPN接続時のパスワード)
  ppp ipcp ipaddress on
  ppp ipcp msext on
  ip pp remote address pool 192.168.xxx.xxx(VPN接続時に割り当てるIPアドレス)
  ip pp mtu 1258
  pp enable anonymous

上記の記載例ではVPN接続ユーザは1つにしているが、2ユーザ以上の場合は「pp bind tunnel2-tunnel5」のように複数のトンネルを指定しておくこと。合わせてユーザ・VPN接続時の割当IPアドレスも必要数だけ設定・準備すること。

なお認証タイプはmschap-v2を指定していますが、設定例に倣っているだけなのでお好きなものをどうぞ。

VPN周り(Tunnel設定)

認証周りの次はTunnel設定。必要なTunnel数だけ作成します。ただしRTX830は最大で20個までしか作成されず、更にMAP-Eで1個使用しているため今回の場合は最大19個までとなります。*8

# VPN conf.
## Tunnel setting.
tunnel select 2
  tunnel encapsulation l2tp
  ipsec tunnel 102
    ipsec sa policy 102 2 esp aes-cbc sha-hmac
    ipsec ike keepalive use 2 off
    ipsec ike local address 2 192.168.xxx.1(ルーターIPアドレス)
    ipsec ike nat-traversal 2 on
    ipsec ike pre-shared-key 2 text xxxxxxxx(事前共有キー/ご自由に)
    ipsec ike remote address 2 any
  l2tp tunnel disconnect time off
  l2tp keepalive use on 10 3
  l2tp keepalive log on
  l2tp syslog on
  ip tunnel tcp mss limit auto
  tunnel enable 2

認証のアルゴリズム・暗号化アルゴリズムは設定例に倣っているのでお好きなものをどうぞ。ただし、スマホの機種や搭載バージョンによって対応が対応可否が変わるので、関連ドキュメントの確認と実際に設定したいスマートフォンと実証実験が必要になるかと思います。*9

www.rtpro.yamaha.co.jp

VPN周り(その他)

その他VPN周りで必要となる設定をまとめて記載。
IPsecのゴニョゴニョとL2TPサービスの有効化ですね。

# VPN conf.
## IPsec transport setting
ipsec auto refresh on
ipsec transport 2 102 udp 1701

## enable L2TP service.
l2tp service on

IPsecのトランスポートは必要なトンネル数だけ作成する必要があります。(ipsec tunnelで指定した番号に合わせる必要があるので注意。)

最後にL2TPのサービスを有効化しておかないと意味がないので、サービス有効化を入れておきます。

フィルタ周り(IPv4)

先程から数字だけで記載されていたフィルタ(ある意味ファイヤーウォール)周りの設定。IPv4IPv6は別々の設定となるので、最初はIPv4から晒していきます。

# IPv4 filter conf.
ip filter 100001 pass * * udp 500 *
ip filter 100002 pass * * udp 4500 *
ip filter 100003 pass * * udp 1701 *
ip filter 100004 pass * * esp
ip filter 200010 reject * * udp,tcp 135 *
ip filter 200011 reject * * udp,tcp * 135
ip filter 200012 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200013 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200014 reject * * udp,tcp 445 *
ip filter 200015 reject * * udp,tcp * 445
ip filter 200020 reject 192.168.xxx.0/24 *
ip filter 200030 pass * 192.168.xxx.0/24 icmp * *
ip filter 200039 reject * *
ip filter 200040 pass * *
ip filter 200050 pass * 192.168.xxx.1(ルーターIPアドレス) esp
ip filter 200051 pass * 192.168.xxx.1(ルーターIPアドレス) udp * 500
ip filter 200052 pass * 192.168.xxx.1(ルーターIPアドレス) udp * 4500
ip filter 200053 pass * 192.168.xxx.1(ルーターIPアドレス) udp * 1701
ip filter 200097 pass * * icmp * *
ip filter 200098 pass * * tcp * *
ip filter 200099 pass * * udp * *
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 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp

100000番台がゲートウェイ向けに利用する定義、200000番台がリファレンスに記載されているフィルタ定義です。・・・厳密には200050番台がVPN周りで追加した定義ですが、こまけぇこたーいいんだよ!(良くないです)

100000番台と200050番台の定義内容が非常に類似していますが、片方はゲートウェイの通過用・もう片方がPPPoE経由で侵入を許可する定義です。似たような定義だから流用して大丈夫やろwwと堕落から手を抜くとVPN経由で繋がらずに泣きを見ます。(1敗)

フィルタ周り(IPv6)

IPoEを利用するので当然こちらもフィルタ定義が必要です。・・・ただしこちらは完全に設定例そのままなので特記すべき部分は何一つありません。

# IPv6 filter conf.
ipv6 filter 200030 pass * * icmp6 * *
ipv6 filter 200031 pass * * 4
ipv6 filter 200038 pass * * udp * 546
ipv6 filter 200039 reject * *
ipv6 filter 200099 pass * * * * *
ipv6 filter dynamic 200080 * * ftp
ipv6 filter dynamic 200081 * * domain
ipv6 filter dynamic 200082 * * www
ipv6 filter dynamic 200083 * * smtp
ipv6 filter dynamic 200084 * * pop3
ipv6 filter dynamic 200098 * * tcp
ipv6 filter dynamic 200099 * * udp

フィルタ周り(その他)

セキュリティ対策などの理由で2つの設定を入れ込みます。

www.rtpro.yamaha.co.jp
www.rtpro.yamaha.co.jp

# Other filter conf.
ip filter source-route on
ip filter directed-broadcast on

今のところは問題なく利用出来ている

導入して1週間近く経ちましたが、今のところは問題なく動作しています。
自宅内からのインターネット接続はMAP-E(IPoE)経由で接続が行えており、バックグラウンドで余計なダウンロードが走らなければVDSL上限値に近い90Mbpsで常時安定して通信出来ています。通信が安定したお陰か、YouTubeAmazonビデオで冒頭の超低画質映像の時間が短くなりました。*10
外部からのVPNも問題なく行え、打ち合わせなどで已む無く出社した場合のお戯れでも、休日に通院などで外出したついでに繋いだ際も問題なく利用出来ています。

そのため、私のRTX830に対するconfigは一旦これで完成・・・ですが、少し悪い癖が出てきてだいぶ前に手放したUSB LTEトングルをくっつけてバックアップ回線云々とかもやってみたいような気がしなくは無いですね・・・。

とは言え、一旦完成したconfigに手を加えると別のところに問題が出てしまうかと出てしまうと思うと言うか、過去に中途半端に設定が残ってたパラメータが問題になってしまった苦い記憶があるので、とりあえずはこの状態で利用していこうかと思います。

*1:市販のWi-Fiルーターがモデル次第ですが店頭価格で2万前後なのに対しRTX830は店頭セールで約5万、通販で最安値付近の価格を見ても約4.5万くらいなのでスゴクタカイ!・・・いや本来は業務用機材なんですけど・・・。

*2:見る限りMAP-EもWebコンソールで設定出来そう・・・。さすが現行最新モデルです。

*3:それだけで戯言日記を書けるくらいになります・・・。

*4:具体的には自宅サーバWordPressあたりをぶち込んで公開するようなシチュエーション。この辺のパターンはほぼ完全にクラウドVPSに移った感がありますね。

*5:以前から出してますが、この略図ってはてなブログAA記法と言う(世間的には顔文字など向けの)アスキーアート表現用のタグ使ってるんだぜ・・・。

*6:基本的に公式のconfigそのままでは使わず、適宜カスタマイズは加えるものなので、別に「キメラ」でも何でもないんですけど・・・。

*7:OCNだけ変に特殊なことをやっているのか、パラメータに「OCN」と付いちゃってるが、何やってんでしょうかねぇ?いや「何やってんだろうねぇ?」じゃ無くてテメェで調べろと・・・。

*8:今まで利用してきたRTX1200だと最大100個までトンネルを作成出来るので、この部分ではグレードダウンしてます。

*9:ドキュメントは充実していますが、必ずしも最新バージョンまで追えているとは限らないので、最終的には自分自身での確認が必要です。

*10:PPPoE接続の頃はバッファーが十二分に貯まるまでは超低画質で再生されていましたし、YouTubeに至っては糞回線認定で手動で設定を買えないと360p程度の糞画質で再生となっていましたorz