AND OR  

YAMAHA RTX

ここではYAMAHA製ルーター RTXシリーズについての情報を整理する。

  • 環境
    機器: ''YAMAHA RTX830'' (Rev.15.02.09以降)
    回線: ドコモ光タイプA(GMO とくとくBB) ひかり電話契約無し(RA)
    接続方式: IPv6 IPoE + Ipv4 over IPv6 (v6プラス)
    ONU -> RTX830 -> RT-AC86U
     600x400

IPv4 over IPv6 (MAP-E)

RTX830はRev.15.02.03以降でMAP-E方式に正式対応。YAMAHA公式サイトの設定例で特に問題なく接続できた。

  • v6プラスでインターネット接続 : コマンド設定
    よく言われることだけどGUI設定と混在すると躓きやすい。2019/07現在、MAP-E対応はGUIだとまだできないのでCUIで全て設定した方が良い。
    ルーターとONU直結、ひかり電話無しのシンプルな構成ならコンフィグは公式サイト通りでOK。
  • コンフィグ 接続確認

MAP-E アドレス/ポートレンジ計算

MAP-Eアドレス/ポートレンジ計算を手動でやって設定すれば、MAP-E正式対応前のファームウェアでも既存のコマンドで接続できるらしい。BRのIPv6アドレスとマップルールを知っていれば計算手順自体は簡単かと。

NAT

MAP-E対応しているとNATについて調べることが増えたので個別に整理する。

ファストパス

パケット転送を高速に行うためにファストパスと呼ばれる技術が利用されている。

  • ファストパス
    フローテーブルのサイズを越えたフローはノーマルパスで処理されるため速度が落ちるので注意。定義しているパケットフィルタは整理しておいた方が通信が安定する。不要なフィルタは消そう。フローテーブルサイズはRTX830だと131072、RTX810だと32768となっており結構差があるようだ。

DHCP

予約アドレスの設定

IPアドレスを割り当てるDHCPクライアントを固定的に設定する。

dhcp scope bind [scope_num] [ip_address] [mac_address]
例:
# dhcp scope bind 1 192.168.100.2 2C:FD:A1:CE:29:1A

Yamaha Network Organizer (YNO)

ヤマハが提供するクラウド型のネットワーク統合管理サービス

セキュリティ

パケットフィルタ

静的パケットフィルタのコマンドは以下のフォーマットとなっている。IPv6の場合は以下 ip の部分を ipv6 に変更するだけで良い。

ip filter [フィルタ番号] [アクション] [送信元IP] [宛先IP] [プロトコル] [送信元ポート] [宛先ポート]

アクションは以下の9種類、passは通過、rejectは破棄、restrictは回線が接続しているときは通過、切断しているときは破棄するアクションとなり、それぞれログ出力有りと無しの指定ができる。

pass/pass-log/pass-nolog/reject/reject-log/reject-nolog/restrict/restrict-log/restrict-nolog

また、プロトコルの指定方法は定義済プロトコル(ニーモニック)の他、プロトコルを示す十進数指定も可能。ポート指定にもニーモニックが利用できる。

静的パケットフィルタの適用は以下のコマンドの通り。

ip [インタフェース名] secure filter [方向 in/out] [フィルタリスト]

動的パケットフィルタのコマンドは以下のフォーマットとなっている。

ip filter dynamic [フィルタ番号] [送信元IP] [宛先IP] [サービス] [オプション]

ニーモニックを指定するだけでトリガーパケットとして設定できる。動的パケットフィルタはパケットを通過させるときに利用するので、破棄するパケットは静的パケットフィルタで定義することになる。動的パケットフィルタの適用は以下のコマンドの通り。静的パケットフィルタと併せて適用する必要があるので以下のような書式となっており、dynamic の後に動的パケットフィルタのIDを列挙する。

ip [インタフェース名] secure filter [方向 in/out] [フィルタリスト] dynamic [フィルタリスト]

パケットフィルタの詳細な挙動等については公式サイトを参照

不正アクセス検知 (IDS)

シグネチャベースの不正アクセス検知システム。動的パケットフィルタと連動するタイプがあるので、動的パケットフィルタの設定も併せて行う必要がある。

 ip intrusion detection [方向 in/out] [パケット種別] [機能スイッチ on/off] [オプション]

パケット種別は以下の通り。

ip/ip-option/fragment/icmp/udp/tcp/ftp/winny/share

オプションは不正なパケットを検知したときのアクションであり、reject=on (パケット破棄する)と refect=off (パケット破棄しない)を指定できる。

Luaスクリプト機能

ヤマハルーターではLuaスクリプト実行環境が搭載されている。

プロトタイプベースのOOP言語なので、一昔前のJavaScriptと同じ感覚で使える。ただし、ルーターに実装されている処理系だと機能制限されているので注意。標準関数であっても利用できないものがある。

# show status lua
Luaライブラリバージョン:        Lua 5.1.5
Luaスクリプト機能バージョン:    1.08

[running]
走行中のLuaスクリプトはありません

[history]
(1)
走行トリガー:        'lua' コマンド
コマンドライン:      lua -e "print(\"Hello, world!\")"
走行回数:            1
エラー発生回数:      0
初回の開始日時:      2019/07/06 00:31:47
前回の開始日時:      2019/07/06 00:31:47
前回の終了日時:      2019/07/06 00:31:47
前回の走行結果:      正常終了

Luaのバージョンはファームウェア配信でアップデートされるらしい。2019/07現在は5.1.5なのでけっこう古め。Luaスクリプト機能バージョンというのは、ファームウェアによって独自に追加された機能等を管理するリビジョン番号のようなもの。各バージョン毎のchangelogは上記サイト内に記載されている。ヤマハルーター専用 APIは面白そうなのでいろいろ使ってみて整理する予定。

また、ブログの方にLuaスクリプト環境についてのメモ記事、GitHubにサンプルスクリプトを上げる。

管理

初期設定

工場出荷時の設定は以下のようになっている。
LAN1のIPアドレス: 192.168.100.1/24
ログインパスワード/管理パスワード: 無し

文字コード

以下のコマンドでUTF-8に設定できる。

console character ja.utf8

SSH

SSH接続可能にするには[管理] -> [アクセス管理] -> [各種サーバーの設定]から設定できる。
アクセスはLANのみ、あるいは外部踏み台サーバ経由して接続するようにした。
また、RTX830が対応している暗号アルゴリズムは以下のようになっていた、新しめの鍵は対応していないらしい。デフォルトではリストの上3つのみ有効になっていた。

aes128-ctr (デフォルトで有効)
aes192-ctr (デフォルトで有効)
aes256-ctr (デフォルトで有効)
aes128-cbc
aes192-cbc
aes256-cbc
3des-cbc
blowfish-cbc
cast128-cbc
arcfour

ただし公開鍵認証ではなくパスワード認証なので注意。また、SSHを有効にしたらTELNET接続は無効にした方が良い。

RTX830 Rev.15.02.10 (Fri Jun  7 10:04:56 2019)
Copyright (c) 1994-2019 Yamaha Corporation. All Rights Reserved.
To display the software copyright statement, use 'show copyright' command.
ac:44:f2:63:da:e0, ac:44:f2:63:da:e1
Memory 256Mbytes, 2LAN
>

コンソール接続

RTX830ではUSB mini-B及びRJ-45に対応している。mini-Bももはや懐かしいインタフェース。シリアルドライバーはWindowsのものしか公開されてないようで、macOSも対応してくれると嬉しいのだけど。

ポート開放

v6プラス環境では自由にポートが使えないのでポート開放するには一手間必要。自分が使えるポートは以下のコマンドで確認できる。

# show nat descriptor address
NAT/IPマスカレード 動作タイプ : 2
参照NATディスクリプタ : 1000, 適用インタフェース : TUNNEL[1](1)
Masqueradeテーブル
   外側アドレス: map-e/xxx.xxx.xxx.xxx
   ポート範囲: 4880-4895, 8976-8991, 13072-13087, 17168-17183, 21264-21279, 25
360-25375, 29456-29471, 33552-33567, 37648-37663, 41744-41759, 45840-45855, 499
36-49951, 54032-54047, 58128-58143, 62224-62239
... 省略                                

こういう場合はお尻の62224-62239の範囲のポートから使っていくと覚えやすいかも。

NetBIOS

Windows環境でNAS等を利用してファイル共有をしている場合は、NetBIOS用の設定を入れないと接続できない可能性がある。
nbtstatコマンドでNetBIOSのキャッシュ情報を確認できる。

PS> nbtstat -c
.. 省略
                  NetBIOS リモート キャッシュ ネーム テーブル

       名前              種類       ホストアドレス    継続時間 [秒]
   ------------------------------------------------------------
   BOX          <20>  一意              192.168.100.3       491
   BOX          <00>  一意              192.168.100.3       141

この例ではBOXがNetBIOS名となっており、割り当てられているプライベートIPも確認できる。
VPN経由あるいはIPv4 over IPv6環境でファイル共有できない場合はNetBIOSの設定を確認すると解決するかも。

NetBIOSのフィルタについて

外部メモリ (microSD)

[管理] -> [保守] -> [CONFIGファイルの管理]からコンフィグファイルのimport/exportが可能。
コンフィグ情報を保存するファイル名を指定しておけば、microSDを挿しておくだけでコンフィグ情報が自動保存される。大容量高耐久モデルじゃなくてよいので余ってるmicroSDカードがあれば挿しておくと安心感が得られるかと。
コンフィグファイル名は"config.txt"としてSDカード内に置いておけば自動で検索され読み込まれる。絶対パスで指定しておけば速く読み込めるのかもしれないが計測はしていない。

tftp

TFTPサービスを実行しているリモートコンピューター間でファイルを転送する。コンフィグファイルの取得/転送するには以下のコマンド。

PS> tftp 192.168.100.1 get config/password config.txt
PS> tftp 192.168.100.1 put config.txt config/password

バイナリファイルを転送する場合は -iオプション を付ける。

RTFS

ルーターの内蔵フラッシュROMに構築されるファイルシステム、詳細は公式サイトを参照。

# show status rtfs
容量              : 3211264 バイト
空き容量          : 3208229 バイト
作成可能エントリ数: 994
ファイル数        : 3
ディレクトリ数    : 3

ファイル操作コマンドはUnix/Linuxでのシェルコマンドとは結構違うみたい。以下に ls 的なコマンド例を載せる。

# show file list /
2019/07/26 17:21:38 <DIR>           dashboard
2019/08/10 14:34:41 <DIR>           lanmap

ファイルを消すときは delete 、コピーするときは copy のように一通りファイル操作コマンドが用意されている。また、Unix系OSのようにディレクトリ構成の慣習的なものはないっぽい?

ルーター上にファイルを置くこともあるので、注意事項を以下に抜粋しておく。

  • Luaスクリプト機能のスクリプトファイルやカスタムGUIのHTMLファイルなど、読み出し専用データを保存する用途としてRTFSを使用してください。ログファイルの記録など、RTFS領域への定期的な書き込みはフラッシュROMの消耗を早めます。頻繁に書き込みを行ったことが原因でフラッシュROMの故障に至った場合は、 保証期間内であっても無償修理の保証対象外になります。また、後述するガベージコレクトの処理により、予期せず通信が停止することがあります。
  • RTFS領域にファイルを保存した後、RTFS未対応のファームウェアにリビジョンダウンすると保存したファイルを読み出せなくなります。
  • RTFS領域へのアクセス中に電源を落としたり再起動したりすると、ファイルシステムが壊れてデータを読み出せなくなる恐れがあるので絶対に行わないでください。
  • メモリ使用率が高い状態でRTFS領域にアクセスすると、メモリ不足により処理を完了できずファイルシステムに不整合が生じる可能性があるのでファイルシステムの操作はできるだけメモリ使用率が低い状態で行ってください。
  • フラッシュROMは頻繁に読み書きすることを想定したデバイスではないので、アクセス速度はあまり速くありません。詳細は後述しますが、ファイルシステムの状態によってはアクセスを開始してから処理が完了するまで十数秒程度かかる場合もあります。

その他メモ

コマンド

プロバイダ

プロバイダがGMOとくとくBBの場合は、v6プラス接続を開通するとPPPoE接続が止められる模様。実際にv6プラス切り替え後はPPPoE接続では認証エラーのため接続できない。

ヤマハネットワークエンジニア会(YNE)

YAMAHA製品ユーザーコミュニティサイト
HTTPS対応サイトはドメインが異なるようで、URLをhttpsに変えるだけだとアクセスできない。
HTTP版 yne.force.com
HTTPS版 yne.secure.force.com