http://www.rtpro.yamaha.co.jp/RT/docs/relnote/Rev.09.00/relnote_09_00_15.html
Revision : 09.00.15
Release : Jul. 2006, ヤマハ株式会社

Rev.9.00.15リリースノート


Rev.9.00.08 からの変更点


■機能追加

  1. IPsecでNATトラバーサルに対応した。次の2種類の方式に対応する。

    a) RFC3947 + RFC3948
    b) draft-ietf-ipsec-nat-t-ike-03.txt + draft-ietf-ipsec-udp-encaps-03.txt

    IPsec NATトラバーサルを利用するためには、ipsec ike nat-traversalコマンドでonを設定する。方式は、ネゴシエーションによって自動的に選択されるため、明示的に方式を設定する必要はない。ヤマハの実装では、上記のa)の方式を優先し、a)をサポートしていない実装に対しては、b)の方式を使用する。

    ○IPsec NATトラバーサルを利用するための設定

    [書式]
    ipsec ike nat-traversal GATEWAY SWITCH [ keepalive=INTERVAL ]
    no ipsec ike nat-traversal GATEWAY [ SWITCH [ keepalive=INTERVAL ] ]
    [設定値]
    GATEWAY ... セキュリティゲートウェイの識別子
    SWITCH ... 動作の有無
    on ... NATトラバーサルの動作を有効にする
    off ... NATトラバーサルの動作を無効にする
    INTERVAL ... NATキープアライブの送信間隔
    off ... 送信しない
    時間 ... 30 - 100000[秒]
    [説明]
    NATトラバーサルの動作を設定する。この設定があるときには、IKEでNATトラバーサルの交渉を行う。相手がNATトラバーサルに対応していないときや、通信経路上にNATの処理がないときには、NATトラバーサルを使用せず、ESPパケットを使って通信する。
    対向のルータや端末でもNATトラバーサルの設定が必要である。いずれか一方にしか設定がないときには、NATトラバーサルを使用せず、ESPパケットを使って通信する。
    [ノート]
    ipsec ike esp-encapsulationコマンドとの併用はできない。
    また、IPCompが設定されているトンネルインタフェースでは利用できない。
    アグレッシブモードのESPトンネルでのみ利用できる。メインモードやAHでは利用できず、トランスポートモードでも利用できない。
    [初期値]
    SWITCH = off
    INTERVAL = 300


  2. IPsec XAUTH 認証機能を実装した。

    http://www.rtpro.yamaha.co.jp/RT/docs/ipsec-xauth/index.html

  3. IKEで、DPD(Dead Peer Detection)に対応した。RFC3706に基づく機能で、トンネルの障害を検出するために利用できる。
    この機能を動作させるためには、ipsec ike keepalive useコマンドを設定する。

    ○IKEキープアライブ機能の設定

    [書式]
    ipsec ike keepalive use GATEWAY_ID SWITCH
    ipsec ike keepalive use GATEWAY_ID SWITCH heartbeat [INTERVAL COUNT [UPWAIT]]
    ipsec ike keepalive use GATEWAY_ID SWITCH icmp-echo IP_ADDRESS [length=LENGTH] [INTERVAL COUNT [UPWAIT]]
    ipsec ike keepalive use GATEWAY_ID SWITCH dpd [INTERVAL COUNT [UPWAIT]]
    no ipsec ike keepalive use GATEWAY_ID [SWITCH .... ]
    [設定値]
    GATEWAY_ID ... セキュリティ・ゲートウェイの識別子
    SWITCH ... キープアライブの動作
    on ... キープアライブを使用する
    off ... キープアライブを使用しない
    auto ... 対向のルータがキープアライブを送信するときに限って送信する(heartbeatでのみ有効)
    IP_ADDRESS ... pingを送信する宛先のIPアドレス(IPv4/IPv6)
    LENGTH ... TYPEでicmp-echoを設定したときのデータ部の長さ (64..1500)
    INTERVAL ... キープアライブパケットの送信間隔秒数 (1..600)
    COUNT ... キープアライブパケットが届かないときに障害とみなすまでの試行回数 (1..50)
    UPWAIT ... IPsec SAが生成されてから実際にトンネルインタフェースを有効にするまでの時間 (0..1000000)
    [説明]
    IKEキープアライブの動作を設定する。このコマンドの設定は、双方のルータで一致させる必要がある。キープアライブの方式としては、heartbeat、ICMP Echo、DPD(RFC3706)の3種類から選ぶことができる。
    キープアライブの方式として、heartbeatを利用するときには、1行目か2行目の書式を使う。heartbeatに限っては、SWITCHパラメータとしてautoを設定できる。
    autoを設定したときには、相手からheartbeatパケットを受信したときにのみ、heartbeatパケットを送信する。なお、双方の設定がautoになっているときには、IKEキープアライブは動作しない。
    キープアライブの方式として、ICMP Echoを利用するときには、3行目の書式を使い、送信先のIPアドレスを設定する。オプションとして、ICMP Echoのデータ部の長さを指定できる。
    キープアライブの方式として、DPDを利用するときには、4行目の書式を使う。
    [ノート]
    同じ相手に対して、複数の方法を併用することはできない。
    [初期値]
    SWITCH = auto
    LENGTH = 64
    INTERVAL = 10
    COUNT = 6
    UPWAIT = 0


  4. DHCP端末認証機能を実装した。

    http://www.rtpro.yamaha.co.jp/RT/docs/dhcp-auth/index.html

  5. イーサネットフィルタに、DHCPサーバとDHCPリレーエージェントとの連携機能を追加した。

    DHCPリレーエージェントとして動作しているルータに、dhcp-bind / dhcp-not-bindフィルタが設定されると、bind情報をDHCPサーバから取得し、取得したbind情報をフィルタリングに使用する。

    連携機能追加後のコマンド仕様は以下のとおり。

    ○イーサネットフィルタの設定

    [書式]
    ethernet filter FILTER_NUM PASS_REJECT SRC_MAC [DST_MAC [OFFSET BYTE_LIST]]
    ethernet filter FILTER_NUM PASS_REJECT TYPE [SCOPE] [OFFSET BYTE_LIST]
    no ethernet filter FILTER_NUM [PASS_REJECT ...]
    [設定値]
    FILTER_NUM ... 静的フィルタの番号(1-100)
    PASS_REJECT
     
    pass-log ... 一致すれば通す(ログに記録する)
    pass-nolog ... 一致すれば通す(ログに記録しない)
    reject-log ... 一致すれば破棄する(ログに記録する)
    reject-nolog ... 一致すれば破棄する(ログに記録しない)
    SRC_MAC ... 始点MACアドレス
    • XX:XX:XX:XX:XX:XX (XXは十六進数、または*)
    • * (すべてのMACアドレスに対応)
    DST_MAC ... 終点MACアドレス
    • 始点MACアドレスSRC_MACと同じ形式
    • 省略時は一個の*と同じ
    TYPE
     
    dhcp-bind ... 指定されたDHCPスコープで予約設定されているホストを対象にする
    dhcp-not-bind ... 指定されたDHCPスコープで予約設定されていないホストを対象にする
    SCOPE ... DHCPスコープ
    • 1-65535の整数
    • DHCPスコープのリース範囲に含まれるIPアドレス省略時は一個の*と同じ
    OFFSET ... オフセットを表す十進数(イーサネットフレームの始点MACアドレスの直後を0とするバイト数)
    BYTE_LIST ... バイト列、XX (二桁の十六進数)あるいは*(全てのバイト表現)をカンマで区切った並び(16個以内)
    [説明]
    イーサネットフレームのフィルタを設定する。本コマンドで設定されたフィルタは、ethernet lan filterコマンドで用いられる。

    通常型のフィルタでは、始点MACアドレス、終点MACアドレスなどで送受信するイーサネットフレームにフィルタを適用する。

    dhcp-bind型のフィルタでは、以下のイーサネットフレームにフィルタを適用する。対象とならないイーサネットフレームはフィルタに合致しないものとして扱う。

    • 以下のいずれかに該当する、IPv4パケットの場合
      • イーサネットタイプがIPv4(0x0800)
      • PPPoE環境で、イーサネットタイプがPPPoEデータフレーム(0x8864)、プロトコルIDがIPv4(0x0800)
      • 802.1QタグVLAN環境で、TPIDが802.1Qタグ(0x8100)、イーサネットタイプがIPv4(0x0800)
      イーサネットフレームの始点MACアドレスと始点IPアドレスの組が、対象となるDHCPスコープで予約されているならフィルタに合致するとみなす。


    • イーサネットタイプが、以下のいずれかの場合
      • ARP(0x0806)
      • RARP(0x8035)
      • PPPoE制御パケット(0x8863)
      • MACレイヤ制御パケット(0x8808)
      イーサネットフレームの始点MACアドレスがが、対象となるDHCPスコープで予約されているならフィルタに合致するとみなす。

    dhcp-not-bind型のフィルタでは、以下のイーサネットフレームにフィルタを適用する。対象とならないイーサネットフレームはフィルタに合致しないものとして扱う。

    • イーサネットタイプがIPv4(0x0800)である場合
      イーサネットフレームの始点IPアドレスが、対象となるDHCPスコープのリース範囲に含まれていて、かつ、始点MACアドレスがDHCPスコープで予約されていない時にフィルタに合致するとみなす。

    dhcp-bind、dhcp-not-bind型のフィルタで対象とするDHCPスコープは、SCOPEパラメータで指定する。SCOPEパラメータとしてはDHCPスコープ番号を指定することもできるし、DHCPスコープのリース範囲に含まれるIPアドレスで指定することもできる。IPアドレスでDHCPスコープを指定する場合に、複数のDHCPスコープが該当する時には、その中で最も長いネットマスク長を持つDHCPスコープを選択する。

    SCOPEパラメータを省略した場合には、フィルタが適用されるインタフェースで使用されるDHCPスコープがすべて対象となる。

    dhcp-bind、dhcp-not-bind型のフィルタが DHCP リレーエージェントとして動作しているルータに設定された場合、DHCP サーバから DHCPスコープとその DHCP スコープにおけるクライアントの予約情報を取得し、フィルタの適用時に参照する。
    DHCP サーバからの DHCP スコープおよび予約情報の取得は、DHCP メッセージをリレーする際、DHCP メッセージのオプション部に予約情報を書き込んで通知することにより行なわれる。
    [ノート]
    LAN分割機能を使用する場合には、ルータ内部でイーサネットタイプとして0x8100〜0x810fの値を使用しているので、それらのイーサネットフレームをフィルタして送受信できないようにすると、LAN分割機能を使用しているポートで通信できなくなるので注意が必要である。

    dhcp-bind、dhcp-not-bind型のフィルタでは、イーサネットフレームの始点MACアドレスや始点IPアドレスを用いてフィルタの判定をするため、ethernet lan filterコマンドでは通常in方向にのみ使用することになる。out方向の場合、始点MACアドレスはルータ自身のMACアドレスになるため、DHCPの予約情報と一致することはない。

    dhcp-bind型フィルタは、予約されているクライアントだけを通過させる、という形になるため、通常はpass等と組み合わせて使用する。一方、dhcp-not-bind型フィルタは、予約されていないクライアントを破棄する、という形になるため、通常はreject等と組み合わせて使用することになる。

  6. dhcp scope bindコマンドで、IPアドレスを固定せずにクライアントだけを指定することができる機能を追加した。

    ○DHCP予約アドレスの設定

    [書式]
    dhcp scope bind SCOPE_NUM IP_ADDRESS [TYPE] ID
    dhcp scope bind SCOPE_NUM IP_ADDRESS MAC_ADDRESS
    dhcp scope bind SCOPE_NUM IP_ADDRESS ipcp
    no dhcp scope bind SCOPE_NUM IP_ADDRESS
    [設定値]
    SCOPE_NUM ... スコープ番号(1..65535)
    IP_ADDRESS ... 予約するIP アドレス、または'*'
    TYPE ... Client-Identifier オプションのtypeフィールドの値を決定するキーワード
    text ... 0x00
    ethernet ... 0x01
    ID ... クライアントを識別する情報内容
    typeがethernetの場合 ... MAC アドレス
    typeがtextの場合 ... 文字列
    typeが省略された場合 ... 2桁十六進数の列で先頭はtypeフィールド
    MAC_ADDRESS ... xx:xx:xx:xx:xx:xx (xxは十六進数) 予約DHCP クライアントのMAC アドレス
    ipcp ... IPCP でリモート側に与えることを示すキーワード
    [説明]
    IP アドレスをリースするDHCP クライアントを固定的に設定する。

  7. 不正アクセス検知機能で、Winnyの通信を検知・遮断できるようにした。これに対応して、不正アクセス検知機能のコマンド仕様を次のように変更した。

    ○フィルタ定義の設定

    [書式]
    ip INTERFACE intrusion detection DIRECTION [TYPE] SWITCH [OPTION]
    ip pp intrusion detection DIRECTION [TYPE] SWITCH [OPTION]
    ip tunnel intrusion detection DIRECTION [TYPE] SWITCH [OPTION]
    no ip INTERFACE intrusion detection DIRECTION [TYPE] [ SWITCH [OPTION]]
    no ip pp intrusion detection DIRECTION [TYPE] [SWITCH [OPTION]]
    no ip tunnel intrusion detection DIRECTION [TYPE] [SWITCH [OPTION]]
    [設定値]
    • INTERFACE ... LANインタフェース名
    • DIRECTION ... 観察するパケット・コネクションの方向
      • in ... インタフェースの内向き
      • out ... インタフェースの外向き
    • TYPE ... 観察するパケット・コネクションの種類
      • winny ... Winny
      • default ... 設定していないものすべて
    • SWITCH
      • on ... 実行する
      • off ... 実行しない
    • OPTION
      • reject=on ... 不正なパケットを破棄する
      • reject=off ... 不正なパケットを破棄しない
    [説明]
    指定したインタフェースで、指定された向きのパケットやコネクションについて異常を検知する。
    TYPEパラメータを省略したときには、侵入検知機能の全体についての設定になる。
    [ノート]
    危険性の高い攻撃については、rejectオプションの設定に関わらず、常にパケットを破棄する。
    Winnyについては、バージョン2の検知が可能であり、それ以前のバージョンには対応していない。
    [初期値]
    • SWITCH
      • TYPEを指定しないとき ... off
      • TYPEを指定したとき ... on
    • REJECT ... off

    Winnyを検知・遮断するためには次のように設定する。

    1. すべてのTCPコネクションを動的フィルタで通す。
    2. 静的フィルタではACK付きのTCPパケットを破棄する。
      このためには、ip filterコマンドのプロトコルとして、establishedを指定すればよい。
    3. ip INTERFACE intrusion detectionコマンドを設定する。

    具体例として、次のページの設定例を考える。
    http://netvolante.jp/solution/int/case3.html

    Winnyを遮断するためには次のように設定を変更する。

    ip filter 2500 reject * * established
    ip pp secure filter out 1010 1011 1012 1013 1014 1015 2500 3000 dynamic 100 101 102 103 104 105 106 107
    ip pp intrusion detection out on
    ip pp intrusion detection out default off
    ip pp intrusion detection out winny on reject=on

    遮断をせずに検知をするだけであれば、最後の行を次のように変更する。

    ip pp intrusion detection out winny on reject=off

    検知した結果は、show ip intrusion detectionコマンドで確認できる。

    関連FAQ:
    http://www.rtpro.yamaha.co.jp/RT/FAQ/Security/winny-filter.html

  8. 帯域検出機能で以下の機能拡張を行った。

  9. 負荷通知機能で以下の機能拡張を行った。

  10. LOOPBACK、NULLインタフェース機能を追加した。

    http://www.rtpro.yamaha.co.jp/RT/docs/loopback/index.html

  11. 他のPP経由のホスト経路が既に存在しているIPアドレスをPP接続時に相手側IPアド レスとして通知されたときに、そのIPアドレスを受け入れることが出来るようにし た。これまでは、そのようなIPアドレスを通知された場合には、PPP/IPCPネゴシエ ーションで拒否していた。

    ○ホスト経路が存在する相手側IPアドレスを受け入れるか否かの設定

    [書式]
    ppp ipcp remote address check SW
    no ppp ipcp remote address check [SW]
    [設定値]
    SW
    on ... 通知された相手のPP側IPアドレスを拒否する
    off ... 通知された相手のPP側IPアドレスを受け入れる
    [説明]
    他のPP経由のホスト経路が既に存在しているIPアドレスをPP接続時に相手側IPアドレスとして通知されたときに、そのIPアドレスを受け入れるか否かを設定する。
    [初期値]
    on

  12. インタフェースに適用されたフィルタ定義だけを表示できるコマンドを実装した。

    ○指定したインタフェースのフィルタ内容の表示

    [書式]
    show ip secure filter INTERFACE [DIR]
    [設定値]
    INTERFACE ... フィルタの適用されたインタフェース名
    DIR ... フィルタの適用された方向、'in' または 'out'
    [説明]
    指定したインタフェースに適用されているフィルタ定義の内容を表示する。

  13. show ipv6 addressコマンドでIPv6アドレス情報を表示するインタフェースを指定できるようにした。

    ○インタフェースに付与されているIPv6 アドレスの表示

    [書式]
    show ipv6 address [INTERFACE]
    show ipv6 address pp [PEER_NUM]
    show ipv6 address tunnel [TUNNEL_NUM]
    [設定値]
    INTERFACE ... LAN インタフェース名, Loopbackインタフェース名
    PEER_NUM ... 相手先情報番号あるいは'anonymous'
    TUNNEL_NUM ... トンネル番号
    [説明]
    各インタフェースに付与されているIPv6アドレスを表示する。インタフェースを指定しない場合は、すべてのインタフェースについて情報を表示する。

  14. show accountコマンドにおいて、インタフェース毎のアカウント情報の表示方法を下記のように変更し、閾値を表示するようにした。

    # show account
    インタフェース    発信    着信    課金(円)   閾値(円)
    BRI1.1               0       0           0   disabled
    BRI1.2               5       0         140   disabled
    BRI1.3               2       0          40         50
    BRI1.4               0       0           0   disabled
    BRI1.5               0       0           0   disabled
    BRI1.6               0       0           0   disabled
    BRI1.7               0       0           0   disabled
    BRI1.8               0       0           0   disabled
    TOTAL                7       0         180        200
     ---------------------------------------------------------------------------
     PP    発信    着信    課金(円)      閾値(円)    最後の呼    インタフェース
     01        5       0         140      disabled   11/07 13:36 BRI1.2
     02        2       0          40      disabled   11/07 13:33 BRI1.3
    #
        

■仕様変更

  1. OSPFでタイプ5(AS External) LSAのLink State IDの決定方法を、RFC2328 Appendix Eに記載されているアルゴリズムに変更した。

    従来はネットワークアドレスのネットワーク部の下位1ビットが1であるときはホスト部はすべて0、ネットワーク部の下位1ビットが0であるときはホスト部はすべて1としていた。また、この決め方の場合でもホスト経路とバッティングすることがあるが、その時には後から追加しようとした経路が広告されなかった。

  2. IPv6のRAの受信によりLANインタフェースに付与されるIPv6アドレスの寿命について、従来は受信したRAのプレフィックスの寿命に関係なく、付与されるIPv6アドレスの寿命は無限としていたのを、受信した寿命どおりの有効期間となるよう変更した。

  3. SIP-NAT機能において、外側から内側へのSIPのリクエストメッセージについて、Request-Lineに外側IPアドレスが記述されていれば内側IPアドレスに書き換えるようにした。

  4. ip hostコマンド、dns staticコマンドに、TTLを設定できるオプションを追加した。

    ○静的DNSレコードの登録

    [書式]
    ip host FQDN VALUE [ttl=TTL]
    dns static TYPE NAME VALUE [ttl=TTL]
    no ip host FQDN [VALUE ...]
    no dns static TYPE NAME [VALUE ...]
    [設定値]
    TYPE ... 名前のタイプ
    a ... ホストのIPv4アドレス
    aaaa ... ホストのIPv6アドレス
    ptr ... IPアドレスの逆引き用のポインタ
    mx ... メールサーバ
    ns ... ネームサーバ
    cname ... 別名
    NAME, VALUE ... TYPEパラメータによって以下のように意味が異なる
    TYPE NAME VALUE
    a FQDN IPv4アドレス
    aaaa FQDN IPv6アドレス
    ptr IPv4アドレス FQDN
    mx FQDN FQDN
    ns FQDN FQDN
    cname FQDN FQDN
    FQDN ... ドメイン名を含んだホスト名
    TTL ... 秒数(1〜4294967295)
    [説明]
    静的なDNSレコードを定義する。
    ip hostコマンドは、dns staticコマンドでaとptrを両方設定することを簡略化したものである。
    [ノート]
    問い合わせに対して返されるDNSレコードは以下のような形となる。
    • TTLフィールドには、ttlパラメータの設定値がセットされる。ttlパラメータが省略された時には1がセットされる。
    • Answerセクションに回答となるDNSレコードが一つセットされるだけで、Authority/Additionalセクションには何もセットされない。
    • MXレコードのpreferenceフィールドは0にセットされる。
    [設定例]
    # ip host pc1.example.jp 172.16.0.1
    # dns static ptr 2.0.16.172.in-addr.arpa pc2.example.jp
    # dns static cname mail.example.jp mail2.example.jp

  5. 帯域検出機能で以下の仕様変更を行った。

  6. 負荷通知機能で以下の仕様変更を行った。

  7. snmp local addressコマンドが設定されている時には、SNMPトラップを運ぶUDPパケットの始点IPアドレスに使うだけだったのを、SNMPトラップデータのペイロード内のIPアドレスにも設定されたアドレスを使うように変更した。

  8. IGMPプロキシで、リスナーからIGMPのReportメッセージを受信し、上流へと転送する場合、通常は即座に転送せずランダムな遅延時間を持たせている。この遅延を待たず即座にメッセージを転送する機能を追加した。
    この機能を利用すると、リスナーがReportメッセージを出力してから、目的のマルチキャストストリームを受信するまでの時間を短縮することができる。
    ただし、多数のリスナーが存在する環境では、Reportメッセージの転送回数が増えるため、この機能の利用は推奨できない。

    追加機能は、下記コマンドのオプションとし、次のような仕様とする。

    ○インタフェースごとのIGMP の設定

    [書式]
    ip INTERFACE igmp TYPE [OPTION ...]
    ip pp igmp TYPE [OPTION ...]
    ip tunnel igmp TYPE [OPTION ...]
    no ip INTERFACE igmp TYPE [OPTION ...]
    no ip pp igmp TYPE [OPTION ...]
    no ip tunnel igmp TYPE [OPTION ...]
    [設定値]
    INTERFACE ... LAN インタフェース名
    TYPE ... IGMP の動作方式
    off ... IGMP は動作しない
    router ... IGMP ルーターとして動作する
    host ... IGMP ホストとして動作する
    OPTION ... オプション
    version=VERSION ... IGMP のバージョン
    2 ... IGMPv2
    3 ... IGMPv3
    2,3 ... IGMPv2 とIGMPv3 の両方に対応する(IGMPv2 互換モード)
    syslog=SWITCH ... 詳細な情報をsyslog に出力するか否か
    on ... 表示する
    off ... 表示しない
    robust-variable=VALUE ... IGMP で規定されるRobust Variableの値(1..10)
    delay-timer=SW ... IGMPのreportメッセージの転送タイミング
    on ... ランダムな遅延後に転送する
    off ... 即座に転送する
    [説明]
    インタフェースのIGMP の動作を設定する。
    [初期値]
    type = off
    version=2,3
    syslog=off
    robust-variable=2
    delay-timer=on

  9. PIMの仕様について以下の3点を変更した。

    1. PIMのPrune-Echoメッセージを扱えるようにした
    2. PIMのJoinメッセージを受け取るより前に、そのマルチキャストストリームを受信していた場合に、このストリームを転送できない場合があるバグを修正した
    3. PIMのJoin(*,G)を送信するときに、Periodic Pruneを送信していたが、これを送信しないようにできるコマンドを用意した

      ○PIM JOIN/PRUNEメッセージの宛先の設定

      [書式]
      ip pim sparse join-prune send CAST
      no ip pim sparse join-prune send [CAST]
      [設定値]
      CAST
      unicast ... 近隣ルータのユニキャストアドレス宛
      multicast ... 224.0.0.13のマルチキャストアドレス宛
      [説明]
      PIMのJOIN/PRUNEメッセージを送信する際のあて先アドレスを設定する。
      [初期値]
      unicast

      ○PIMのJoin(*,G)メッセージ送信時にPeriodic Pruneメッセージを含ませるかどうかの設定

      [書式]
      ip pim sparse periodic-prune send SW
      no ip pim sparse periodic-prune send [SW]
      [設定値]
      SW
      on ... 送信する
      off ... 送信しない
      [説明]
      PIMのJoin(*,G)メッセージを送信する際に、Periodic Prune(S,G,rpt)メッセージを含ませるかどうかを設定する。
      [初期値]
      on

  10. show arpコマンドで、最初にエントリ数を表示するようにした。また、エントリをIPアドレス順に表示するようにした。

  11. IPIPトンネルの実装を変更し、トンネル番号の値によってスループットに差が出ないようにした。従来は、トンネル番号の値が大きい方が、スループットが低くなる傾向にあった。

  12. イーサネットフィルタリング機能でdhcp-bindキーワードでフィルタリングする時、下表の条件に一致するパケットをフィルタリングと一致したとみなすこととする。

    イーサネットヘッダのパケットタイプ フィルタリングとの一致条件
    IPv4 0x0800 MACアドレスとIPv4送信元アドレスの一致
    ARP 0x0806 MACアドレスの一致
    RARP 0x8035 MACアドレスの一致
    PPPoE制御パケット 0x8863 MACアドレスの一致
    PPPoEデータパケット 0x8864 IPv4パケットでありかつMACアドレスとIPv4送信元アドレスの一致
    タグVLAN 0x8100 IPv4パケットでありかつMACアドレスとIPv4送信元アドレスの一致
    MACレイヤ制御パケット 0x8808 MACアドレスの一致
    - フィルタリングとは常に一致しない
    ※IPv4送信元アドレスが0.0.0.0の場合はMACアドレスとの一致のみを条件とする

    dhcp-bindキーワードの目的は、管理されているMACアドレスとIPアドレスの組み合わせのパケットだけを通過させることである。dhcp-bindキーワードでpassフィルタが設定されることを想定している。合致するものだけを通過させ、それ以外を全て破棄する。

    しかし、DHCPのアドレス要求メッセージやARPパケットなど、IPアドレスとの組み合わせ条件に合致はしないが通信上必要となるパケットもある。

    このため、上表のように必要最小限のパケットはMACアドレスの一致条件だけで通すものとする。それ以外は破棄するものとし、フィルタリングと一致させない。

■バグ修正

  1. MMI関連で以下のバグを修正した。

  2. ルーターにログインする際、パスワードを入力後Enterキーを押すと、入力した文字数分だけカーソルが一瞬右に移動するバグを修正した。

  3. login userコマンドの設定が無い状態で、無名ユーザでTELNETに複数接続しようとしたとき、後から接続したユーザに対して、Username: プロンプトが表示される不具合を修正した。後から接続してきたユーザには、エラーメッセージを表示して切断するようにした。

  4. 他のヤマハルータからリモートセットアップでログインして、ルータのTELNETクライアントで他の機器に対して通信しようとすると、リブートや、メモリリークが発生するバグを修正した。

  5. ユーザ認証が完了する前にSSHクライアントから切断通知を受け取るとリブートすることがある不具合を修正した。

  6. OSPFで、LS-RequestでLSAの情報を送信するよう要求された場合、以下の2つの条件のいずれにも合致する時に間違ったLSAをLS-Updateで送信するバグを修正した。

    これらの条件が満たされると、LS-Requestを受信した側は本来であればBadLSReqイベントとして処理しなければいけないところを、自身のLSデータベースにある、異なる広告ルータを持つLSAをLS-Updateで送信してしまっていた。

    このバグが発生すると、LS-Requestを送信している側では、show status ospf neighborコマンドで表示できる隣接ルータの状態がLOADから先に進まなくなり、LS-Requestの送信を定期的に繰り返すようになる。逆に、LS-Requestを受信している側は、隣接ルータの状態はFULLになる。

  7. OSPFでPOINT-TO-POINTタイプのインタフェースの先のOSPFルータが、ルータIDおよびOSPFパケットの始点IPアドレスのいずれもが異なるOSPFルータに変更される時に、インタフェースのダウンや、OSPFのネイバ状態のDOWNを経ないまま入れ換えられると、新しいOSPFルータと隣接関係は確立できるものの、新しいOSPFルータが広告する経路を取り込めないバグを修正した。

  8. OSPFで以下のいずれかの条件に該当する複数の外部経路を取り込もうとすると、その後のルータの動作が不安定になり、不特定のタイミングでリブートすることがあるバグを修正した。

    1. マスク長が31ビット以下であるネットワーク経路と、そのネットワークのネットワークアドレスと同じ値をもつマスク長が32ビットであるホスト経路
    2. マスク長が31ビット以下であるネットワーク経路と、そのネットワークのブロードキャストアドレスと同じ値をもつマスク長が32ビットであるホスト経路

  9. OSPFでタイプ5(AS External) LSAとして受け取っている外部経路について、Link State IDが同じままネットワークマスクだけが変更された時に、ルーティングテーブルを変更できないバグを修正した。

    タイプ5(AS External) LSAのLink State IDの決め方としてRFC2328 Appenix E記載のアルゴリズムを採用しているOSPFルータと相互接続する時に問題が発生する。

  10. OSPFで、仮想リンクの設定がある状態でOSPFが動作中の時に、ospf configure refreshコマンドを実行すると、OSPFかつFRに対応した機種ではリブートすることがあるバグを修正した。

  11. OSPFで、経路のネクストホップは変わらないが、経路のコストやメトリックだけが変わったという場合に、show ip routeコマンドで表示される経路のコストやメトリックが更新されずに、変更前のままになってしまうバグを修正した。

    show ip routeコマンドの表示だけの問題で、経路の選択ルールなどでの影響は無い。

  12. bgp aggregate filterコマンドで指定したプロトコルの経路だけが集約の対象になるところが、同じネットワークでプロトコルの異なる経路も集約の対象になるバグを修正した。

  13. BGP4で、bgp neighborコマンドでgatewayオプションにIPアドレスを指定し、かつlocal-addressオプションも使用している場合に、その隣接ルータと接続している時に関係の無いインタフェースのアップ・ダウンが発生すると、隣接ルータとの接続がいったん切断されてしまい、約30秒後に再接続されるバグを修正した。gatewayオプションがインタフェース名であったり、local-addressオプションを使用しない場合には問題は無い。

  14. show status bgp neighbor NEIGHBOR advertised-routesコマンドで集約経路を表示するとき、Next Hop欄に異常なIPアドレスが表示されたり、機種によってはリブートするバグを修正した。

  15. ip routeコマンドで、hideと設定された経路について、以下の条件が重なると回線がアップして通信できる状態になっても利用できないバグを修正した。

    このような場合に、動的経路制御プロトコルにより受け取っていた経路が消滅した時でも、静的経路はshow ip routeコマンドで「(hidden)」と表示されたままで利用できなくなっていた。

  16. フラグメントされたパケットの最初のパケットより先に2番目以降のいずれかのパケットを受信すると、そのフラグメントされたパケットを再構築できずに廃棄する、機種によってはリブートするバグを修正した。

  17. LANインタフェースにバックアップゲートウェイを設定しており、かつそのゲートウェイのMACアドレスが不明である場合に、そのLAN上のDHCPクライアントからの要求に答えられないバグを修正した。

  18. IPマスカレードの適用されているインタフェースでユーザ定義の動的フィルタを使用したときに、動的フィルタにより通過を許可されたセッションが、IPマスカレードのエントリが生成されないために通過できないバグを修正した。

  19. NATまたはIPマスカレードの内側に設置されたPPTPクライアントから外部のPPTPサーバに発信して、接続が失敗する、または、接続完了後に切断すると、その後、新たに外部へアクセスしたときにリブートすることがあるバグを修正した。

  20. NATの設定がある場合に、RTX自身が送出するパケットの送信元アドレスの選択が正しく行われないことがあるバグを修正した。バックアップのICMPキープアライブパケットを正しく処理できないなどの現象として現れていた。NATの設定を上書きするまでその状態が継続していた。

  21. IPマスカレード機能で、PPTPを処理しようとした時にリブートすることがあるバグを修正した。また、リブートしない場合でも、PPTPのエントリが不必要に増えるバグも修正した。

  22. TCPを使ったSIPパケットをSIP-NAT機能で書き換えた時に、パケットを壊していたバグを修正した。

  23. SIP-NAT機能において、書き換え対象でないIPアドレス文字列が書き換え対象のIPアドレス文字列と一部が一致する場合に書き換えてしまうバグを修正した。例えば、機器の外側アドレスが192.168.0.1で、経由するSIPサーバのIPアドレスが192.168.0.100であった場合に、Record-Routeヘッダを書き換えてしまうためVoIP端末で通話が出来ない問題があった。

  24. NATディスクリプタ機能で、全ての外側アドレスを静的NATの対象として個数で設定している場合、外側アドレスの範囲外のアドレスの通信が発生するとリブートすることがあるバグを修正した。

  25. IKEキープアライブでICMP Echoを使うときに、正常な状態にもかかわらず、「ICMP keepalive: recovery detected」というsyslogを出力することがあるバグを修正した。この問題が発生するときには、ipsec ike keepalive logコマンドでoffを設定していても、syslogに出力する可能性がある。ICMP Echoを送信してからICMP Echo-Replyを受信するまでの間隔が長いときに発生しやすい。

  26. ipsec ike remote addressコマンドにホスト名を設定した場合で、そのホスト名をDNSで名前解決した時にAAAAレコードによりIPv6アドレスが返されると、間違った相手にIKEのパケットを送信してしまうバグを修正した。

  27. 自動構成されたIPv6アドレスとそうでないアドレスの要請ノードマルチキャストアドレスが一致していた場合に、非自動構成アドレスがあるにも関わらず要請ノードマルチキャストアドレスが invalid と表示されてしまうバグを修正した。

  28. ルータ自身宛のIPv6 TCPパケットを高負荷で受信し続けると、使用可能なパケットバッファが減っていき、負荷が無くなった後でも送受信性能が落ちる、または送受信不能になってしまう場合があるバグを修正した。

  29. IPv6アドレスを削除すると、残っているアドレスに対応する要請ノードマルチキャストアドレスが削除される場合があるバグを修正した。

  30. RAプロキシ機能でプレフィックスを配布する設定の時、その同じプレフィックスからIPv6アドレスが自動構成された後、同一インタフェースにリンクローカルアドレスが割り振られ、それらの要請ノードマルチキャストアドレスが一致していた場合に、RAプロキシ機能で配布するプレフィックスの寿命が切れた後、リブートが発生するバグを修正した。

  31. ipv6 lan1 prefixコマンドでRAプロキシの親インタフェースと設定先インタフェースを一致させると、IPv6のNSおよびRSを受信したのと同じインタフェースに転送し、2台以上のRT間で互いに転送しあった場合にCPU使用率100%の状態が続くバグを修正した。

  32. ipv6 interface addressコマンドをautoに設定したインタフェースで自動構成されたIPv6アドレスについて、その寿命が切れた後も、そのアドレスに対する経路が存在するバグを修正した。また同時に、寿命が切れたアドレスに対するICMPv6エコー要求を受信した場合に、応答を返さないように修正した。

  33. RAプロキシにおいて、上流のルーターから配布するプレフィックスを削除せず変更すると、変更前のプレフィックスから構成されたアドレスが、プレフィックスの寿命が切れても削除されないバグを修正した。

  34. RT自身を起点とするIPv6のTCPセッションを接続するとメモリリークが生じていたバグを修正した。

  35. ip hostコマンド、dns staticコマンドで、ホスト名やFQDNにDNSルートを表すドット(.)を設定しても、DNSルートに関する問い合わせに対して返事を返せないバグを修正した。

    この修正に伴い、ip hostコマンド、dns staticコマンドではホスト名やFQDNの末尾にドットがあっても無くても同じ名前として扱うようになった。つまり、以下の2つのコマンドは同じ意味になる。

    ip host a.com 192.168.0.1
    ip host a.com. 192.168.0.1

    show configなどの表示では、ドット一文字だけであるルートの場合を除き、末尾のドットは表示しない。

  36. DDNSホスト名を自動取得、その後開放し、再度自動取得した時に、取得したDDNSホスト名が変更になると、後から取得したホスト名が正しく保存されない場合があるバグを修正した。

  37. netvolante-dns serverコマンドで何らかの値を設定した後に、no netvolante-dns serverコマンドで設定をデフォルトに戻した場合、デフォルト値である"netvolante-dns.netvolante.jp"ではなく、不定な宛先に対して接続を行おうとしてしまうバグを修正した。

  38. ネットボランチDNSの新規登録の際、サーバから通知されたFQDN、すなわちクライアントのホスト名とサーバのドメイン名をピリオドで連結した文字列の長さが128文字を超えていた場合に、リブートなど動作が不安定になるバグを修正した。

    クライアントのホスト名には63文字以下の制限があるので、少なくともサーバのドメイン名が64文字を超える場合にのみ問題が発生する。そのため、ネットボランチDNSサーバとしてnetvolante-dns.netvolante.jpを使用している場合は問題は発生しない。

  39. netvolante-dns hostname hostコマンドでネットボランチDNS登録アドレスにIPv6アドレスを指定している設定で、一旦ネットボランチDNS登録を削除した後、同一サーバの同一インタフェースに登録アドレス指定無しのnetvolante-dns hostname hostまたはnetvolante-dns auto hostname onの設定を追加して再度ネットボランチDNS登録を行うと、最初の設定で指定していたIPv6アドレスで登録が行われてしまうバグを修正した。

  40. DDNSサーバからのアドレス通知を受信した時、通知したサーバに対して設定されたポート番号宛ではなく、もう一方のサーバに対して設定されたポート番号宛だった場合も受け付けてしまうバグを修正した。

  41. ネットボランチDNS登録ホスト名を自動生成する設定では、登録アドレスとしてIPv6アドレスを指定できなかったため、netvolante-dns auto hostname コマンドにおいて登録IPv6アドレスの指定ができるように変更した。

  42. dns server selectコマンドでセカンダリDNSサーバを指定しても、セカンダリDNSサーバへ問い合わせの要求を行わないバグを修正した。本修正後は、プライマリDNSサーバへの問い合わせの要求に対して応答を受信しなかった場合には、セカンダリDNSサーバへ問い合わせの要求を行う。

  43. dns server selectコマンドでDNSサーバを二つ指定した時に、自分自身からのDNS問い合わせの解決に2番目のDNSサーバを利用しないバグを修正した。

  44. DNS解決の際の待ち時間が内部的に0になってしまうことにより、初回のDNS解決に失敗するバグを修正した。

  45. PPPoE上でIPsecを使用している場合に、PPPoEサーバからのGeneric-ErrorTAG付きのPADTを受信してPPPoEの切断処理を行った時、再接続後にPPPoEのセッションIDが不正であるためにIPsecトンネル経由の通信ができないことがあるバグを修正した。

  46. PPPのMPで通信中に、MPリンクを減らす場合には通常は最後に接続したMPリンクを切断するが、何らかの原因でそれ以外のMPリンクが切断されると、その後、MPリンクの増減が正常に行えなくなってしまうバグを修正した。具体的には、以下のような問題が起きていた。

    この問題が発生している間でも、MPによる通信自体は行える場合が多い。また、いったんすべてのMPリンクが切断されると、それ以降の通信はまた正常な動作に戻る。

  47. TUNNELインタフェースを利用するなどして多数のインタフェースにIGMPの設定をした場合に、ルータが正しく起動しない不具合を修正した。この不具合のために正しく起動できない場合には、起動直後のログにtask message exhaustedのメッセージが多数出力されていた。

  48. IGMPやPIMを利用して新たなマルチキャストストリーム転送を開始した直後に、パケットの転送が一時的に停止してしまう可能性を排除した。

  49. IGMPプロキシ機能で下流のインタフェースでIGMPのreportを受け取るより先に、上流のインタフェースで対象のマルチキャストストリームを受信が始まってしまうと、このストリームを転送できない場合のあるバグを修正した。

    ストリームの再生時にIGMPのTO_EXCLUDEレポートを利用するアプリケーションソフトを利用する場合に上記不具合が発生していた。

  50. 連携機能で、PPPoEとIPsecを併用した環境で発生する以下のバグを修正した。

  51. 帯域検出機能で、PPインタフェース(PPPoE)の先に帯域検出サーバがある時、PPPoE 接続前に帯域検出動作が起動すると機種によってはリブートすることがあるバグを修正した。

    RTX3000でリブートが確認されている。

  52. 帯域検出機能で相手側をIPv6アドレスで登録した場合に、検出動作を開始できないことがあるバグを修正した。

  53. 帯域検出機能で確認動作を定期的に行う状態で速度設定をコマンドで変更された時、再測定を手動で実行しなくても次の確認動作時に測定結果を設定に反映できるようにした。

  54. 負荷通知機能のクライアント動作で速度設定を自動で段階的に復帰させている状態で、コマンド操作などで速度設定を消去された後、無駄な設定動作が定期的に発生することがあるバグを修正した。次の自動設定のタイミングで上限値に設定することとした。

  55. SNMPのプライベートMIBでyrIpKeepaliveStatus変数の値として実際の状態とは異なる値を返すバグを修正した。

    具体的には、show status ip keepaliveコマンドの表示で'up'または'down?'と表示されている時に2(down)を、'down'または'up?'と表示されている時に3(up-wait)を返していた。本来は、以下のようになるべきである。
    show status ip keepalive yrIpKeepaliveStatus
    up 1(up)
    down 2(down)
    up? 3(up-wait)
    down? 4(down-wait)

  56. トリガによるメール通知機能で、MAIL FROM、RCPT TOコマンドで送信するパケットがRFC821に準拠していなかったバグを修正した。このバグにより、SMTPサーバにpostfixを使用して、以下の設定をした時にメールが通知されない不具合が発生していた。

    strict_rfc821_envelopes=yes

  57. DHCPサーバ機能で、DHCPパケットを処理している最中にアドレス予約の設定を変更するとその後の動作が停止することがあるバグを修正した。

  58. リブート時にRebooted by Machine Check (1)のメッセージを表示していた一部の原因について、リブート原因の解析を進めるためのより詳細なメッセージを正しく残せるよう修正した。

■更新履歴

Jul. 2006, Rev.9.00.15 リリース


以上