ヤマハ RTX830を購入
安定動作とネットワークの勉強を兼ねて初めて業務用ルーターを買ってみました。 まずは勉強ということでコマンドの勉強をしながら設定をしてみています。
今回は初期セットアップと Web GUI を使って IPv4(PPPoE) の設定をしてできた設定ファイルをベースに、1つ1つコマンドの意味を調べつつ変更してみたので、それの意味をわかった範囲で載せてみます。
できるだけ正確に書くようにしてますが、ネットワークには疎いので間違ってる可能性もあるのでそこはご了承ください。
起動後にやったこと
これだけでインターネットに繋がりました。
コマンド
上の設定をして設定をダウンロードして、それをベースにコマンドの意味を調べつつ必要に応じて追加・変更・削除しました。 こだわるとキリがないので大体のところで区切りをつけ、使うことにしたコマンドの意味を載せていきます。
ユーザー設定
login password *
administrator password encrypted *
ユーザー名なしのパスワードの設定と管理パスワード(暗号化)の設定。
この記事を書いてるときにlogin password encrypted
があるのを知ったのでそちらの方がよいかも。
user attribute connection=serial,telnet,remote,ssh,sftp,http gui-page=dashboard,lan-map,config login-timer=3600
無名ユーザーに対する属性を設定する。attribute の後の設定値は以下の通り。
属性値 | 説明 |
---|---|
connection=serial,telnet,remote,ssh,sftp,http | ルーターへのアクセス方法を示す属性。許可している接続先は以下の通り。 serial: シリアルコンソール telnet: telnet remote: リモートセットアップ ssh: SSH sftp: SFTP http: GUI設定画面 |
gui-page=dashboard,lan-map,config | ログインユーザーに対して閲覧を許可するGUI画面の種別。値は以下の通り。 dashboard: ダッシュボード lan-map: LANマップ config: かんたん設定画面、詳細設定画面、管理画面、CONFIG画面、TECHINFO画面 |
login-timer=3600 | キー入力がない場合に自動的にログアウトするまでの秒数。 |
コマンドリファレンスに「無名ユーザーに対してはSSH、SFTPによる接続を許可することができない。」とあるので、connection で指定はしてますが接続はできない状態っぽいです。
LAN 側設定
ip route default gateway pp 1
デフォルトのルーティング先を pp 1 にする。pp 1 はインターネット側(後で設定します)。 次のコマンドで LAN 側のネットワークを定義するので、LAN側以外のパケットを pp 1 にルーティングする、という設定になるんだと思います。
ip lan1 address 192.168.3.2/24
lan1 (LANポート1-4) の側の IP アドレスを 192.168.3.2 にする。192.168.3.1 は今使ってるルーターなので一時的に 2 にしてます。入れ替えるときに 1 に変更する予定。
IPv4 接続設定
pp select 1
pp 1 という相手先を選択する。
Point to Point Protocol (PPP) のことを pp と呼んでいる?でも ppp コマンドがあるので違うかも。
IPv4の接続は PPPoE を使う。PPPoE は Point to Point Protocol over Ethernet のことなので、IPv4の設定をするときは pp を使うらしい。(※1)
select の後の番号(peer_num)の値は何でもよいので 1 にしてます。これに対して以降で IPv4 の設定をします。
※1:pp は「接続相手情報」という意味のようです。
ちょっとずつ気付いたことをコメントさせていただきます。
— Yamaha Comm.Div. 「ネツエン最高」「働く音改革」 (@yamaha_sn) 2020年9月9日
PPについて
日本語表現ですと、「接続相手情報」という意味で使っています。
語源は、peer-to-peerです。
現在では、P2Pと略すことが一般的になりましたが、その略語が生まれる前でして。
Wikipediaなどをご覧いただくと奥の深い言葉の片鱗が
description pp IPv4
pp 1 に対する説明。動作には影響しないようなので任意で設定します。
pp keepalive interval 30 retry-interval=30 count=12
キープアライブ設定。interval は回線に接続されているときのキープアライブパケット送信間隔、retry-interval は回線が切断されているときのキープアライブパケット送信間隔。 count はキープアライブパケットに対する返信が返ってこないときに回線断と判断する回数。
pp always-on on
常時接続する。
pppoe use lan2
PPPoE で相手先が接続されているインターフェースを指定する。今は pp 1 が選択されているので、 pp 1 が lan2 に接続されていることを指定してます。lan2 は RTX830 だと WAN ポートらしいです。
pppoe auto disconnect off
PPPoE セッションを自動切断しない。 pppoe auto connect コマンド(自動接続するかどうか)もありどちらもデフォルトで自動で行うので、自動切断だけオフにします。
pp auth accept pap chap
受け入れる PPP 認証要求の設定。2つまで設定できます。 pap がパスワードを平文でやりとりするのに対し、chap は平文では流れないので chap の方が安全らしいです。
pp auth myname {{PP_AUTH_MYNAME}} {{PP_AUTH_PASSWORD}}
PPP 認証要求が来た時に送信するユーザー名とパスワード。プロバイダから指定されているものを設定します。
ppp lcp mru on 1454
MRU という値の設定。1度に受信できる最大のデータサイズのようです。回線業者によって特定の値を指定する必要があるらしいので生成された値をそのまま使ってます。
ppp ipcp ipaddress on
PP 側 IP アドレスのネゴシエーションをする。off にすると相手から IP アドレスを割り振られないようになるので固定 IP のときは off にするのかもしれません。
ppp ipcp msext on
IPCPのMS拡張オプションを使う。dns server pp 1 のためにこの設定が必要です。
ppp ccp type none
パケットの圧縮をしない。RTX830 のデフォルトは stac で ISDN などが採用しているようですが、ブロードバンドは none を指定するようです。
ip pp secure filter in 200003 200020 200021 200022 200023 200024 200025 200030 200032
ip pp secure filter out 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
pp の受信/送信に対して適用するフィルタを指定する。
ip pp nat descriptor 1000
pp を通るパケットに適用する NAT 変換を指定する。
pp enable 1
指定の pp を有効にして使える状態にする。
IPv4 フィルタ設定
# 受信用
ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.3.0/24 * * * *
# 送信用
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.3.0/24 * * *
受信用のフィルタでは pp (WAN) の受信パケットの送信元アドレスがプライベートアドレスのパケットは破棄する。10.0.0.0/8, 172.168.0.0/12, 192.168.0.0/16 は RFC 1918 という規格でプライベートネットワークとして予約されているらしい。また、192.168.3.0/24 は LAN 側のネットワーク。 このようなパケットを明示的に破棄するフィルタを作るのは、IPスプーフィング攻撃, LAND攻撃, Smurf攻撃への対策のためらしい。
- FAQ for YAMAHA RT Series / IP Packet Filter - IPアドレス・スプーフィング攻撃(ip spoofing)に対処するフィルタを教えて下さい。
- FAQ for YAMAHA RT Series / IP Packet Filter - land攻撃に対処するフィルタを教えて下さい。
- FAQ for YAMAHA RT Series / IP Packet Filter - smurf攻撃に対処するフィルタを教えて下さい。
最初にこのフィルタを見た時は「外からこんなパケット来るのか?消していいかな?」と思ったけど、ちゃんと調べたら意味があったので適当に消さなくてよかった。
送信側も必要な理由はよく分かっていないが、上記のリンク先に書いてあるのできっと意味があるんだろうと思う。
1つ気になるのは、200000-200002, 200010-200012 が ip pp secure filter で使われていないこと。そのネットワークは使わないから不要ってことだろうか? 追加しておくと攻撃が来た時に検知とかできたりするかもしれないので、後で追加してみたら面白いかもしれない。
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
135 ポートは RPC で使われるポートで攻撃に使われるみたいなので破棄するとよいらしい。
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
NetBIOS は Windows のファイル共有で使われる規格のこと。インターネットを経由して使わないので破棄した方がよいみたいだし、プライベートネットワークで使う分には破棄して問題ない。
あと、netbios_ns などはニーモニックだけど、以下のサイトに載っている。
445 ポートは Windows のダイレクト・ホスティング SMB サービスというものが使うポート。NetBIOS と同様に破棄した方がよい。
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
www (80), 21 (FTP), nntp (119) のパケットは TCP ヘッダーの FIN, RST フラグが立っていて回線が接続されている場合のみ通す、という設定。 このパケットは通信の終了を表すが、回線が切断されているときにこのようなパケットを送信すると回線が自動接続されてしまう。わざわざ接続する必要がないので破棄するらしい。
これはたぶん ISDN みたいに接続時間によって料金が変わるタイプの回線だと意味があるけど、ブロードバンドで常時接続の場合はどうなんだろう?企業で運用するときはメンテナンスとか何かで自動接続されない方がよい状況があるかもしれないが、家なのでこのフィルタはあってもなくてもよいかもしれない。
ip filter 200030 pass * 192.168.3.0/24 icmp * *
WAN からの ICMP パケットを通すフィルタ。 インターネット側からの ICMP パケットは遮断する方がセキュリティ上よいと聞いたことがあるので、通すのはなぜなのか気になったので調べてみました。
質問者がYAMAHAのサポートに問い合わせたところ、「内部ネットワークからインターネットへpingなどのICMP通信を行った際、戻りの通信を通すために必要なフィルター」という返信があったと書かれているので、そのために通しているようです。たまにインターネットが繋がってるか確認するのに Google とかに ping を飛ばしたりするのであってよさそうですが、ICMP を使った攻撃もあるようなので後々もっといい方法を調べてみるといいかもしれないです。
ip filter 200031 pass * 192.168.3.0/24 established * *
WAN→LANの接続は拒否するがLAN→WANの接続は許可する設定。
ip filter 200032 pass * 192.168.3.0/24 tcp * ident
ident はメールを送信するときにメールサーバーから認証のために使われるプロトコルらしい。破棄してもメール送信はできるが送信に時間がかかるようになるらしい。ほとんどメールは送らないのでなくてもよいかもしれない。
ip filter 200033 pass * 192.168.3.0/24 tcp ftpdata *
FTP のデータ送信を許可する。 後の動的フィルタの設定で FTP を許可するのにここで静的フィルタを作っている理由はよく分からない。
ip filter 200034 pass * 192.168.3.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.3.0/24 udp domain *
DNS パケットを通す。
ip filter 200036 pass * 192.168.3.0/24 udp * ntp
ip filter 200037 pass * 192.168.3.0/24 udp ntp *
NTP パケットを通す。
ip filter 200099 pass * * * * *
ip filter 500000 restrict * * * * *
全て通すフィルタと回線が接続されているときのみ全て通すフィルタ。 ただ、500000 は使われていないので不思議。
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
動的フィルタ。一般的に使うアプリケーションのパケットを通す。 動的フィルタは通信が始まった時にフィルタが追加され、通信が終了するとフィルタが削除される、というような動作をするフィルタらしい。
今回は LAN から WAN へ送信されるときにこのフィルタを適用するので、これらのアプリケーションで自分からインターネットに対して通信を開始できるが、インターネットから自分のネットワークに対して通信を開始することはできない、という設定になる。
その他ネットワーク設定
nat descriptor type 1000 masquerade
静的 NAT 変換と IP マスカレード変換を行う NAT ディスクリプタ。上の方であったip pp nat descriptor 1000
で指定している。
フレッツの PPPoE は IP アドレスが1つ割り当てられるが、PC以外にもスマホなど複数の端末を接続するので IP マスカレード変換が必要なのでこのような NAT ディスクリプタを作っているのだと思う。
TELNET サーバー設定
telnetd host lan
TELNET サーバーへアクセスできるホストの設定。LAN 側からアクセスできるようにしてます。
DHCP サーバー設定
dhcp service server
dhcp server rfc2131 compliant except remain-silent
DHCP サーバーの動作を、DHCPサーバーが応答を返さない場合でも一部のPCが正しく動作するようにする。
dhcp scope 1 192.168.3.2-192.168.3.191/24
DHCP サーバーがクライアントに割り当てる IP アドレスの範囲を指定する。
DNS サーバー設定
dns host lan1
DNS サーバーへのアクセスを許可するホストの指定。lan1 は LAN 側です。
dns server pp 1
名前解決時の問い合わせ先 DNS サーバーの通知を受ける相手先の指定。pp 1 を指定しているので、プロバイダから通知される DNS サーバーに問い合わせる、という設定にしてます。
ppp ipcp msext on
の指定が必要です。
dns server select 500001 pp 1 any . restrict pp 1
DNS問い合わせ先サーバーとそのサーバーを選択する条件。
- pp 1: pp 1 から通知されたサーバーを問い合わせ先とする
- any .: 全てのタイプ、全てのドメインに対する問い合わせ
restrict pp 1: pp 1 がアップしていることも条件に追加する
dns private address spoof on
プライベートアドレスに対する問い合わせを上位サーバーに転送しない。
本体設定
statistics cpu on
statistics memory on
statistics traffic on
statistics flow on
statistics nat on
statistics route on
statistics filter on
statistics application on
alarm startup on
起動時にアラームを鳴らす。
まとめ
まだ理解しきれてない部分もありますが、やはり1つ1つ調べたことでかなり勉強になりました。
次は v6 プラスで接続できるように設定していきます。