ヤマハルータのフィルタ機能に関する動き


RTX1100でIPパケット・フィルタ機能の設定方法と動き、考え方について実機を触って分かった部分を記載していきます。この記事で、間違っている点がありましたら指摘してくれると嬉しいです。なお、自分で実機を触って結果をアウトプットする意味もあります。

#検証時のネットワーク構成#
![構成図①.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/66bceb44-5a1d-0ce4-86af-a7ab7d99561b.jpeg)

#####RTX1100の設定コンフィグ######
`login password *
administrator password *
console prompt Okinawa
ip lan1 address 192.168.0.254/24
ip lan3 address 192.168.10.254/24`


#フィルタ機能の設定の流れ#

ヤマハルータのフィルタ設定は大まかに以下の流れで設定を行います。

　①フィルタのパターン定義
　②各インターフェースのIN or OUTへ作成したフィルタ定義を適用

[IP パケットのフィルタの設定(コマンドリファレンス)](http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/)


#フィルタ機能の動き①#

各インターフェースへフィルタを適用されていない状態は、すべての通信は通過しますのでPC1とPC2は双方向でPING疎通は可能な状態ということです。

次はインターフェースへ実際にフィルタを適用してみたいとおもいます。まず、LAN1のインターフェースのOUT方向に「80ポートのみ通過」するフィルタ定義を適用しました。

![ポリシー①.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/eecd4729-4ea5-b427-040e-0d93949d41ce.jpeg)


`ip lan1 address 192.168.0.254/24
ip lan1 secure filter out 10
ip lan3 address 192.168.10.254/24
ip filter 10 pass * * tcp * www`

設定後の通信の変化は、下記のような結果となりました。
①PC1からRTX1100,PC2へ互いにPING疎通が不可
②PC2からPC1へWeb閲覧可
③PC2とRTX1100(lan1,lan3側)は互いに双方向でPING疎通は可

![動作確認結果①.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/92ec776c-8b9d-e470-40bc-fce4a3a25b47.jpeg)

③については、LAN3はフィルタ設定がされていないため
すべての通信が通過する状態になっています。

現在はLAN1側のOUT方向にフィルターを設定していますが、IN方向はフィルタ設定はしていません。
そのため、LAN1側のIN方向の通信はすべての通信が許可された状態であるために②が成立していると思います。

さらに、LAN1側のIN方向に80番ポートの通信以外のフィルタ設定(ICMP許可)をしてあげます。

![ポリシー②.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/3130dc07-4cc5-0fc1-b0d4-b0ba9ebc15e0.jpeg)

`ip lan1 address 192.168.0.254/24
ip lan1 secure filter in 100
ip lan1 secure filter out 10
ip lan3 address 192.168.10.254/24
ip filter 10 pass * * tcp * www
ip filter 100 pass * * icmp * *`


すると、PC2側からPC1側へWEB閲覧が不可になりました。これは、LAN1側のIN方向に設定したフィルタ定義と
一致しなかったため暗黙のdenyで拒否されたものと思われます。

![動作確認結果②.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/7680002d-5709-0fe1-1972-fb17d3f27914.jpeg)

IN方向に80番ポート通信を許可する設定を入れて上げるとWEB閲覧が再度可能となりました。

#フィルタ機能の動き②#

ヤマハルータのフィルタ適用パターンはインターフェースに登録された若いフィルタ番号から順番に適用されていきます。

そこで、lan1のIN方向へ全通信拒否をするフィルタを適用しますがフィルタ番号を適用フィルタの中で一番古い番号で行うとWeb閲覧は可能です。

`ip lan1 address 192.168.0.254/24
ip lan1 secure filter in 50 100 500
ip lan1 secure filter out 10
ip lan3 address 192.168.10.254/24
ip filter 10 pass * * tcp * www
ip filter 50 pass * * tcp www *
ip filter 100 pass * * icmp * *
ip filter 500 reject * * * * *`

lan1のIN方向に適用されたフィルタ番号を、
「ip lan1 secure filter in 50 100 500」から「ip lan1 secure filter in 500 50 100」に変更した場合の
動きを見てみます。

すると、Web閲覧ができなくなりました。ということは、全通信拒否のフィルタ[500]が一番最初に
持ってきたので「ip lan1 secure filter in →(登録順番に適用) 」という動きではないか？

そこで、全通信拒否のフィルタ番号を一番若い番号に変更するとやっぱりWeb閲覧はできません。

`ip lan1 address 192.168.0.254/24
ip lan1 secure filter in 1 50 100
ip lan1 secure filter out 10
ip lan3 address 192.168.10.254/24
ip filter 1 reject * * * * *
ip filter 10 pass * * tcp * www
ip filter 50 pass * * tcp www *
ip filter 100 pass * * icmp * *`

つぎは、全通信拒否のフィルタ[1]を一番後ろへ「ip lan1 secure filter in 50 100 1」に設定すると
なんと閲覧ができました！
![動作確認結果③.jpg](https://qiita-image-store.s3.amazonaws.com/0/89063/6120cfe6-8fb7-60be-5b05-cc61c185c2dd.jpeg)

#まとめ#

フィルタ適用の動きは、下記のような動きとなる。

フィルタが適用されていない。
→「すべて通過」
なにか、フィルタが適用されている。
→フィルタ列に適用されたフィルタ番号を左から右へパターンチェックを行う。
 「ip lan1 secure filter in →(登録順番に適用) 」

→→フィルタ定義と一致した場合は、フィルタ定義に従う。
→→フィルタ定義と不一致の場合は、破棄する(暗黙のdeny)