ヤマハ RTX830を購入

f:id:LocaQ:20200823192906j:plain
RTX830
安定動作とネットワークの勉強を兼ねて初めて業務用ルーターを買ってみました。 まずは勉強ということでコマンドの勉強をしながら設定をしてみています。

今回は初期セットアップと Web GUI を使って IPv4(PPPoE) の設定をしてできた設定ファイルをベースに、1つ1つコマンドの意味を調べつつ変更してみたので、それの意味をわかった範囲で載せてみます。

できるだけ正確に書くようにしてますが、ネットワークには疎いので間違ってる可能性もあるのでそこはご了承ください。

起動後にやったこと

  • 管理パスワードの設定
  • LAN設定
  • IPv4(PPPoE)接続
    • ここで推奨のIPフィルターを設定するを選んで設定

これだけでインターネットに繋がりました。

コマンド

上の設定をして設定をダウンロードして、それをベースにコマンドの意味を調べつつ必要に応じて追加・変更・削除しました。 こだわるとキリがないので大体のところで区切りをつけ、使うことにしたコマンドの意味を載せていきます。

ユーザー設定

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 は「接続相手情報」という意味のようです。

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攻撃への対策のためらしい。

最初にこのフィルタを見た時は「外からこんなパケット来るのか?消していいかな?」と思ったけど、ちゃんと調べたら意味があったので適当に消さなくてよかった。

送信側も必要な理由はよく分かっていないが、上記のリンク先に書いてあるのできっと意味があるんだろうと思う。

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 の動作を DHCP サーバーにする。

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

ルータートラフィックの統計機能を on にする。

alarm startup on

起動時にアラームを鳴らす。

まとめ

まだ理解しきれてない部分もありますが、やはり1つ1つ調べたことでかなり勉強になりました。

次は v6 プラスで接続できるように設定していきます。