ヤマハRTXルーター フィルターログの仕組みやINSPECTログの出力抑制方法
2018/04/26
本エントリーの目次
ヤマハさんのRTX1210など、RTXシリーズのルーター製品を設定しているときに、こんなことが起こることがあります。
全部、または特定の通信のみが、RTXルーターのインターフェースを超えて通信ができない!
たとえば内部ネットワークから外部ネットワークへのHTTP通信やHTTPS通信、SSH通信がうまくできない、外部ネットワークから内部ネットワークへのVPN接続ができないなどが挙げられますね。
こういった場合、RTXルーターの設定に何らかの誤りがあり、それぞれの通信が正常に行えない状態となっています。
そしてこういった事例のほとんどは、セキュリティー上の理由からRTXルーターのインターフェースに対して設定したパケットフィルタリングが原因であることが多いです。※
このパケットフィルタリングの設定誤りにより、正常な通信パケットが破棄されて通信がうまくできない場合、ログレベルの設定を変更すればSYSLOGにパケットが破棄されたことが記録されるようになるため、問題の原因を調べる際の大きな手がかりとなります。
※NAT・IPマスカレード(NAPT)の設定誤りが原因であることも多いです。
RTXルーターの各種フィルター機能(パケットフィルタリングなど)が検出したパケット情報をSYSLOGに出力する方法
RTXシリーズのルーター製品はデフォルト(初期設定)状態では、以下の設定コマンドにより、パケットフィルタリングなどの各種フィルター機能が検出したパケット情報をSYSLOGに出力しない設定となっています。
1 | syslog notice off |
そこで以下設定コマンドを実行し、この設定を変更します。
1 | syslog notice on |
これにより、ip filterコマンドやip filter dynamicコマンドで設定した各種フィルター機能が検出したパケットの情報がSYSLOGに出力されるようになります。
ただこれだけでは、各種フィルターが検出したすべてのパケット情報がSYSLOGに出力されるわけではありません。
実際にパケット情報がSYSLOGに出力されるかどうかは、各種フィルター機能のログに関する設定に依存します。
つまり、syslog notice onコマンドはあくまでも各種フィルター機能のログに関する設定が出力するようになっていた場合の挙動を決めるものであり、たとえ各種フィルター機能でログを出力する設定としていても、syslog notice off設定であれば、ログは出力されません。
各種フィルター機能のログに関する設定について
RTXルーターのフィルター機能の設定には、ip filterコマンドやip filter dynamicコマンドを使用します。
そこでこれらコマンドのログ出力設定についてふれておきましょう。
ip filterコマンドのログ出力設定
外部ネットワークと接続しているインターフェースには、以下のようなip filter(IN方向)を設定することが多いです。
1 2 3 | 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アドレスを使って外部からアクセスされることは通常考えられず、外部からの攻撃である可能性が高いことから、reject(フィルターに一致したパケットを破棄)するようにしています。
このとき、これらフィルター設定が検出したパケット情報についてSYSLOGへの出力を行うかどうかは、コマンド内のrejectパラメーターの部分で指定しています。
設定値 説明
pass 一致すれば通す ( ログに記録しない )
pass-log 一致すれば通す ( ログに記録する )
pass-nolog 一致すれば通す ( ログに記録しない )
reject 一致すれば破棄する ( ログに記録する )
reject-log 一致すれば破棄する ( ログに記録する )
reject-nolog 一致すれば破棄する ( ログに記録しない )
restrict 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録しない )
restrict-log 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録する )
restrict-nolog 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録しない )
rejectの場合は『一致すれば破棄する ( ログに記録する )』挙動となっているため、フィルターに一致したパケットについては破棄され、そのことがSYSLOGに出力・記録されます。
したがってパケットフィルターによってパケットが破棄されて通信がうまくいかない場合には、rejectまたはreject-logと設定されていればSYSLOGに情報が記録され、問題の原因に気付くことができるはずです。
ip filter dynamicコマンドのログ出力設定
外部ネットワークと接続しているインターフェースには、以下のようなip filter dynamic(OUT方向の動的フィルター)を設定することがあります。
1 | ip filter dynamic 20003 * * domain |
これにより内部ネットワークから外部ネットワーク上のDNSサーバーに名前解決した際の、外部→内部へのパケットを破棄せずに通過させるように、動的フィルターを定義しています。
そしてip filter dynamic(動的)フィルター設定が検出したパケット情報について、SYSLOGに出力されるかどうかは、syslog=switchの設定によります。
switchの設定内容は以下のとおりです。
設定値 説明
on コネクションの通信履歴を SYSLOG に残す
off コネクションの通信履歴を SYSLOG に残さない(RTpro – 9.1.12 動的フィルタの定義より引用)
syslog=switchの設定はデフォルトではsyslog=onのため、先に例示したコマンドは実際には以下の設定を行っていることになるのです。
1 | ip filter dynamic 20003 * * domain syslog=on |
したがってip filter dynamic(動的)フィルター設定では、意図的にSYSLOGへの出力を行わないように設定しないかぎりは、SYSLOGへの出力が行われます。
RTXルーターのSYSLOGに大量に出力される[INSPECT]ログを出力させない方法
ip filterコマンドやip filter dynamicコマンドでログを出力するように設定している場合、問題の原因調査のためにsyslog notice onの設定を行うと、その直後から以下のような[INSPECT]と書かれたログが大量に出力されるようになることがあります。(一部伏せ字としています。)
1 2 | 2017/09/10 23:05:22: [INSPECT] LAN2[out][20003] UDP XXX.XXX.XXX.XXX:YYYY > ZZZ.ZZZ.ZZZ.ZZZ:53 (2017/09/10 23:05:17) 2017/09/10 23:05:22: [INSPECT] LAN2[out][20004] TCP XXX.XXX.XXX.XXX:ZZZZ > AAA.AAA.AAA.AAA:443 (2017/09/10 23:05:17) |
RTXルーターの配下に通信を行うクライアント機材が多数存在する場合、1秒間にこういったログが数百~数千行出ることも少なくありません。
そのためRTXルーターの出力するSYSLOGを外部のSYSLOGサーバーに転送し、サーバー上のログファイルをtail -Fコマンドで見ていると、リアルタイムではとても追えない量のログが出ることでしょう。
この[INSPECT]ログは何なのかというと、ip filter dynamicコマンドで設定した動的フィルターにパケットが一致し、その結果開放した通信ポートを閉じた際に記録されるものです。
たとえば動的フィルターで内部ネットワークからインターネット(外部ネットワーク)へのアクセスを許可している場合、ドメインの名前解決や、HTTP・HTTPSアクセスのために通信ポートを開け、その後閉じるため、頻繁に[INSPECT]ログが出力されます。
厳密にはキャッシュによりすべての通信が外部に出るわけではないため、アクセスの度に毎回大量の[INSPECT]ログが出力されるとはかぎりません。
ですが多くの場合、キャッシュが使える通信ばかりではないため、かなり多くの[INSPECT]ログが出力されることでしょう。
フィルターによりパケットの破棄が行われ、通信に問題が起きていると想定される場合、以下のようなパケットが破棄されたことを示すRejectedログを見たいはず。
1 | 2017/09/22 14:32:23: LAN2 Rejected at IN(299999) filter: UDP BBB.BBB.BBB.BBB:WWW > CCC.CCC.CCC.CCC:VVV |
こういった場合には、[INSPECT]ログが出力されないようにすることで、パケットの破棄がどのフィルターに一致して行われているのか、分かりやすくなります。
ip filter dynamicコマンドで設定した動的フィルターに一致して出力される[INSPECT]ログについて、出力を抑制したい場合、syslog=switchの設定をsyslog=offと設定します。
1 | ip filter dynamic 20003 * * domain syslog=off |
この設定では、名前解決に関する動的フィルターの[INSPECT]ログの出力が抑制されます。
各種フィルター機能が検出したパケット情報を外部のSYSLOGサーバーに出力・転送し、一定期間保管したい場合にsyslog notice onの設定をしただけでは、大量の[INSPECT]ログが出力され、保存先のディスク容量を圧迫します。
そのため[INSPECT]ログの記録が不要である場合には、動的フィルターにsyslog=offの設定をしておくと良いでしょう。
show log | grep Rejectedを使う方法もあります!
RTXルーターのフィルターによるパケット破棄のログだけを抽出したい場合には、以下コマンドを実行することでも可能です。
1 | show log | grep Rejected |
ただ本コマンドはRTXルーター上で実行すると、記録されているSYSLOGの量が多い場合、結果が表示されるまでに少し時間がかかります。
Rejectedログをリアルタイムで確認する方法
RTXルーターではtailコマンドなどが使えないため、リアルタイムでRejectedログを見ることができません。
そのためリアルタイムでログの出力状況を見たい場合には、別途SYSLOGサーバーを用意し、そこにRTXルーターのSYSLOGを転送。
そのサーバー上で以下のコマンドを実行してください。
1 2 3 | tail -F /xxxx/syslog.txt | grep rejected または tail -f /xxxx/syslog.txt | grep rejected |
ヤマハRTXルーターを使っている際に、フィルター関連の問題による通信の不調が疑われる場合には、今回ご紹介した設定を活用して問題解決に向けた調査を行ってみてくださーい!