・・・いや、まぁ、configをわざわざ書かなくとも今はWebコンソール経由でチョチョっと設定するだけで良いので完全にやらなくてもいい苦労を率先してやってるのですが・・・。*2
今回のルーター設定方針について
先にヅラヅラと綴っていますが、今回のルーターの設定方針を箇条書きでザクッと綴っておくこととします。
- 接続設定は基本的にIPoEで設定する。
- 従来利用してきたPPPoEは近年の通信需要増加により通信速度・安定性が低下しているので、基本的には利用しない。
- PPPoEが遅くなりIPoEだと大丈夫な理由は長くなるので細かいことは省略*3しますが、PPPoEは通信経路上にボトルネックとなる部分が存在するので、需要が増えると遅くなりやすい・・・と言う表現に留めます。
- IPoEを利用すると言うことは基本的にIPv6のみに対応となる。
- このままではIPv4のWebサイトを利用出来ないため、IPv4 over IPv6のトンネル技術を利用する必要があり、その中の一つであるMAP-E方式を利用する。
- MAP-E以外にも方法はあるが、利用しているプロバイダ(OCN)の都合でMAP-Eを利用せざるを得ないと言う事情がある。
- スマートフォンやタブレットから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を晒して行こうと思います。
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周りの設定ですが、私の環境下では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とIPv6は別々の設定となるので、最初は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敗)
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
今のところは問題なく利用出来ている
導入して1週間近く経ちましたが、今のところは問題なく動作しています。
自宅内からのインターネット接続はMAP-E(IPoE)経由で接続が行えており、バックグラウンドで余計なダウンロードが走らなければVDSL上限値に近い90Mbpsで常時安定して通信出来ています。通信が安定したお陰か、YouTubeやAmazonビデオで冒頭の超低画質映像の時間が短くなりました。*10
外部からのVPNも問題なく行え、打ち合わせなどで已む無く出社した場合のお戯れでも、休日に通院などで外出したついでに繋いだ際も問題なく利用出来ています。
そのため、私のRTX830に対するconfigは一旦これで完成・・・ですが、少し悪い癖が出てきてだいぶ前に手放したUSB LTEトングルをくっつけてバックアップ回線云々とかもやってみたいような気がしなくは無いですね・・・。
とは言え、一旦完成したconfigに手を加えると別のところに問題が出てしまうかと出てしまうと思うと言うか、過去に中途半端に設定が残ってたパラメータが問題になってしまった苦い記憶があるので、とりあえずはこの状態で利用していこうかと思います。