FQDN フィルター機能

概要

ip filter コマンドの始点と終点アドレスに、FQDNを指定することが出来ます。
FQDNを指定した ip filterコマンドをフィルタ型ルーティングやパケット転送フィルターで使用する事により、固定IPアドレスではないサーバーや1つのFQDNに対して複数の固定IPアドレスを持つサーバーを対象にしたルーティング制御を行うことが出来ます。

制限事項

FQDN フィルター機能を使用するには、以下の制限があります。

  • 本機能を使用するルーター自身がDNSリカーシブサーバーとして動作する必要があります。
  • 本機能を使用するルーター配下の端末は、DNSサーバーとして本機能が動作しているルーターを指定する必要があります。
  • 指定したFQDNの名前解決で得られたIPアドレスのみがフィルターの対象となります。Webサーバーへアクセスすることで得られたHTMLファイル等から派生する別Webサーバーへの通信やリダイレクトなどはフィルターの対象にはなりません。
  • ip host コマンド、dns staticコマンド、DNSキャッシュの順で検索します。
  • 本機能に基づき決定されたルーティングは、ファストパスのフローテーブルに記録され、以降の同じ条件のパケットはファストパスで処理されます。DNSキャッシュのTTLが満了するなどしてDNS情報が書き換わった場合でも、フローテーブルに記録された情報は置き換えられずに、ファストパスで従前の宛先にルーティングされ続けます。フローテーブルの情報の寿命は ip flow timer コマンドで制御できます。
  • 1つのIPアドレスに対して複数のFQDNがある場合に注意が必要です。例えば、google検索サイト と yotube動画サイト は同じIPアドレスとなる場合があります。google は pass、youtube は reject をこの順で設定し、google で検索した後に youtube にアクセスした場合、youbute のIPアドレスが先に アクセスした google と 同じだった場合は、youtube も pass します。(google と youtube が別々のIPアドレスだった場合は設定どおりyoutubeはrejectされます)
  • 本機能は IPv4 通信のみ対応しています。

対象機種とリビジョン

ヤマハルーターでは以下の機種およびファームウェアで、FQDN フィルター機能に対応しています。

機種 ファームウェア
RTX820 Rev.11.03.23以降

コマンド

IP パケットのフィルタの設定

[書式]
ip filter filter_num pass_reject src_addr[/mask] [dest_addr[/mask] [protocol [src_port_list [dest_port_list]]]]
no ip filter filter_num [pass_reject ...]
[設定値及び初期値]
  • filter_num
    • [設定値]:静的フィルタ番号 (1~21474836)
    • [初期値]:-
  • pass_reject
    • [設定値]:
      設定値 説明
      pass 一致すれば通す ( ログに記録しない )
      pass-log 一致すれば通す ( ログに記録する )
      pass-nolog 一致すれば通す ( ログに記録しない )
      reject 一致すれば破棄する ( ログに記録する )
      reject-log 一致すれば破棄する ( ログに記録する )
      reject-nolog 一致すれば破棄する ( ログに記録しない )
      restrict 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録しない )
      restrict-log 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録する )
      restrict-nolog 回線が接続されていれば通し、切断されていれば破棄する ( ログに記録しない )
    • [初期値]:-
  • src_addr ... IP パケットの始点アドレス
    • [設定値]:
      • IPアドレス
        • A.B.C.D (A~D: 0~255 もしくは *)
          • 上記表記でA~D を * とすると、該当する8 ビット分についてはすべての値に対応する
        • 間に - を挟んだ 2 つの上項目、- を前につけた上項目、- を後ろにつけた上項目、これらは範囲を指定する
        • , を区切りとして複数設定する事が出来る。FQDNと混合する事も可能
      • FQDN
        • 任意の文字列 (半角 255 文字以内。/ : は使用できない。, は区切り文字として使われる為、使用できない)
        • * から始まる FQDN は * より後ろの文字列を後方一致条件として判断する
          例えば *.example.co.jp は www.example.co.jp 、mail.example.co.jp などと一致する
        • , を区切りとして複数設定する事が出来る。IPアドレスと混合する事も可能
      • * (すべてのアドレスに対応)
    • [初期値]: -
  • dest_addr ... IP パケットの終点アドレス
    • [設定値]:
      • src_addr と同じ形式
      • 省略した場合は一個の * と同じ
    • [初期値]: -
  • mask ... ネットワークアドレスのビットマスク (src_addr および dest_addr がIPアドレスの場合のみ指定可能。FQDN と * の場合は指定不可)
    • [設定値]:
      • A.B.C.D (A~D: 0~255)
      • 0x に続く十六進数
      • マスクビット数
      • 省略時は 0xffffffff と同じ
    • [初期値]: -
  • protocol ... フィルタリングするパケットの種類
    • [設定値]:
      • プロトコルを表す十進数 (0~255)
      • プロトコルを表すニーモニック
        ニーモニック 十進数 説明
        icmp 1 ICMP パケット
        tcp 6 TCP パケット
        udp 17 UDP パケット
        ipv6 41 IPv6 パケット
        gre 47 GRE パケット
        esp 50 ESP パケット
        ah 51 AH パケット
        icmp6 58 ICMP6 パケット
      • 上項目のカンマで区切った並び (5個以内)
      • 特殊指定
        icmp-error TYPE が 3、4、5、11、12、31、32 のいずれかである ICMP パケット
        icmp-info TYPE が 0、8~10、13~18、30、33~36 のいずれかである ICMP パケット
        tcpsyn SYN フラグの立っている tcp パケット
        tcpfin FIN フラグの立っている tcp パケット
        tcprst RST フラグの立っている tcp パケット
        established ACK フラグの立っている tcp パケット内から外への接続は許可するが、外から内への接続は拒否する機能
        tcpflag=value/mask
        tcpflag!=value/mask
        TCP フラグの値と mask の値の論理積 (AND) が、value に一致、または不一致である TCP パケット
        value と mask は 0x に続く十六進数で 0x0000~0xffff
        * すべてのプロトコル
      • 省略時は * と同じ
    • [初期値]: -
  • src_port_list ... protocol に、TCP(tcp/tcpsyn/tcpfin/tcprst/established/tcpflag)、UDP(udp) のいずれかが含まれる場合は、TCP/UDP のソースポート番号。protocol が ICMP(icmp) 単独の場合には、ICMP タイプ。
    • [設定値]:
      • ポート番号を表す十進数
      • ポート番号を表すニーモニック (一部)
        ニーモニック ポート番号
        ftp 20,21
        ftpdata 20
        telnet 23
        smtp 25
        domain 53
        gopher 70
        finger 79
        www 80
        pop3 110
        sunrpc 111
        ident 113
        ntp 123
        nntp 119
        snmp 161
        syslog 514
        printer 515
        talk 517
        route 520
        uucp 540
        submission 587
      • 間に - をはさんだ2つの上項目、- を前につけた上項目、- を後ろにつけた上項目、これらの範囲を指定する。
      • 上項目のカンマで区切った並び(10 個以内)
      • * (すべてのポート)
      • 省略時は * と同じ
    • [初期値]: -
  • dest_port_list
    • [設定値]:protocol に、TCP(tcp/tcpsyn/tcpfin/tcprst/established/tcpflag)、UDP(udp) のいずれかが含まれる場合は、TCP/UDP のデスティネーションポート番号。protocol が ICMP(icmp) 単独の場合には、ICMP コード
    • [初期値]:-
[説明]

IP パケットのフィルタを設定する。本コマンドで設定されたフィルタは ip filter directed-broadcastip filter dynamicip filter setip forward filterip fragment remove df-bitip interface rip filterip interface secure filter および ip route コマンドで用いられる。

[ノート]

restrict-log 及び restrict-nolog を使ったフィルタは、回線が接続されている時だけ通せば十分で、そのために回線に発信するまでもないようなパケットに有効である。例えば、時計を合わせるための NTP パケットがこれに該当する。
ICMP パケットに対して、ICMP タイプと ICMP コードをフィルタでチェックしたい場合には、protocol には 'icmp' だけを単独で指定する。protocol が 'icmp' 単独である場合にのみ、src_port_list は ICMP タイプ、dest_port_list は ICMPコードと見なされる。 protocol に 'icmp' と他のプロトコルを列挙した場合には src_port_listdest_port_list の指定はTCP/UDP のポート番号と見なされ、ICMP パケットとの比較は行われない。また、protocol に 'icmp-error' や 'icmpinfo'を指定した場合には、src_port_list と dst_port_list の指定は無視される。protocol に '*' を指定するか、TCP/UDP を含む複数のプロトコルを列挙している場合には、 src_port_listdest_port_list の指定は TCP/UDP のポート番号と見なされ、パケットが TCP または UDP である場合のみポート番号がフィルタが比較される。パケットがその他のプロトコル (ICMP を含む) の場合には、src_port_listdest_port_list の指定は存在しないものとしてフィルタと比較される。

Rev.10.00 系以降のすべてのファームウェアで protocol に 'tcpsyn' を指定可能。

RTX1200 Rev.10.01.47 以降のファームウェア、および、Rev.11.01 系以降のすべてのファームウェアで src_port_list または dest_port_list に submission を指定可能。

RTX1500 / RTX1100 / RT107e Rev.8.03.68 以降、RTX3000 Rev.9.00.31 以降のファームウェア、および、Rev.10.00 系以降のすべてのファームウェアで ICMP のタイプとコードを指定可能。

src_addr および dest_addr に FQDN を指定することによって、固定IPアドレスではないサーバーや1つのFQDNに対して複数の固定IPアドレスを持つサーバーを対象にしたフィルタリングを行う事が出来る。FQDNを使用する場合、ルーター自身がDNSリカーシブサーバーとして動作し、ルータ配下の端末は、DNSサーバーとして本機を指定する必要がある。
src_addr および dest_addr へのFQDNの指定は RTX810 Rev.11.01.28 で指定可能。
指定したFQDNに一致する通信が発生した場合、設定したFQDNに該当するIPアドレスの情報が保持される。保持される期間は、ip filter fqdn timerコマンドで指定できる。

[設定例]

LAN1 で送受信される IPv4 ICMP ECHO/REPLY を pass-log で記録する

# ip lan1 secure filter in 1 2 100
# ip lan1 secure filter out 1 2 100
# ip filter 1 pass-log * * icmp 8
# ip filter 2 pass-log * * icmp 0
# ip filter 100 pass * *

LAN2 から送信される IPv4 Redirect のうち、"for the Host" だけを通さない

# ip lan2 secure filter out 1 100
# ip filter 1 reject * * icmp 5 1
# ip filter 100 pass * *

FQDN フィルターで使用するキャッシュのタイマーの設定

[書式]
ip filter fqdn timer time [auto=switch]
no ip filter fqdn timer [time]
[設定値及び初期値]
  • time
    • [設定値]:秒数 (1~2147483647)
    • [初期値]:600
  • switch
    • [設定値]:
      設定値 説明
      on 自動設定を使用する
      off 自動設定を使用しない
    • [初期値]:on
[説明]

FQDN フィルターで使用するキャッシュのタイマーを設定する。
ip filterコマンドで、始点アドレスおよび、終点アドレスにFQDNを設定している場合、指定したFQDNに一致する通信が発生したとき、タイマーが動作する。time に指定した秒数の間、FQDN フィルターに一致する通信がない場合、FQDNとIPアドレスを対応づけるキャッシュを削除する。

auto=on の場合、タイマーには以下の値が設定される。

  • ファストパスを使用する通信のとき、ファストパスのフローテーブルで使用されるタイマーの中で、最も大きい値が本タイマーの値として自動で設定される。
  • ファストパスを使用しない通信のとき、time の値がタイマーとして設定される。

auto=off の場合は、常に time の値がタイマーとして設定される。

設定例

フィルタ型ルーティングで、デフォルトゲートウェイはPP1を使用し、Microsoft Update は PP2 を使用する

ip filter 1000 pass * update.microsoft.com,*.update.microsoft.com,*.windowsupdate.com
ip filter 1001 pass * download.windowsupdate.com,*.download.windowsupdate.com
ip filter 1002 pass * download.microsoft.com,*.download.microsoft.com
ip filter 1003 pass * wustat.windows.com,ntservicepack.microsoft.com
ip route default gateway pp 2 filter 1000 1001 1002 1003 gateway pp 1

# show ip route
宛先ネットワーク    ゲートウェイ     インタフェース  種別  付加情報
default             -                    PP[02]    static  filter:1000,1001,1002,1003
default             -                    PP[01]    static
192.168.100.0/24    192.168.100.1        LAN1  implicit

フィルターに記載したFQDNは https://support.microsoft.com/ja-jp/kb/888764 を参考にしている

パケット転送フィルターで、デフォルトゲートウェイはPP1を使用し、google 関係は PP2 を使用する

ip route default gateway pp 1
ip lan1 forward filter 100
ip filter 2000 pass * *.google.co.jp,*.google.com
ip forward filter 100 1 gateway pp 2 filter 2000

関連技術資料

ページトップへ戻る