TCPのコネクションレベルのsyslogを出力する機能を追加した。
SWITCH ... | on TCPコネクションのsyslogを出力する
off TCPコネクションのsyslogを出力しない |
||||||||||||||||||||||||||||||||||||||||
SRC_ADDR ... | 始点IPアドレス
|
||||||||||||||||||||||||||||||||||||||||
DST_ADDR ... | 終点IPアドレス(SRC_ADDRと同じ形式)、省略時は1個の*と同じ | ||||||||||||||||||||||||||||||||||||||||
MASK ... | IPアドレスのビットマスク、省略時は0xffffffffと同じ
SRC_ADDR及びDST_ADDRがネットワークアドレスの場合にのみ指定可能 |
||||||||||||||||||||||||||||||||||||||||
TCPFLAG ... | フィルタリングするTCPパケットの種類
|
||||||||||||||||||||||||||||||||||||||||
SRC_PORT_LIST ... | TCPのソースポート番号
|
||||||||||||||||||||||||||||||||||||||||
DST_PORT_LIST ... |
TCPのデスティネーションポート番号
SRC_PORT_LISTと同じ形式 |
tcp log on * * tcpsyn * 1723 (PPTPのポートにSYNが来ているか) tcp log on * * tcpflag!=0x0000/0x0007 (FIN,RST,SYNの立ったTCPパケット) tcp log on (全てのTCPパケット。tcp log on * * * * *と同じ)
[TCP] RECV (SYN) in LISTEN 133.176.178.241:63541 > 133.176.178.240:1723 [TCP] SEND (SYN,ACK) in LISTEN 133.176.178.240:60001 > 133.176.178.241:1723 [TCP?] RECV (SYN) 192.168.100.50:1062 > 192.168.100.1:21 [TCP?] SEND (RST,ACK) 192.168.100.1:21 > 192.168.100.50:1062
ICMP Echoを利用するキープアライブ機能で、ICMP Echoパケットのサイズを指定できるようにした。
○ネットワーク監視機能の設定
NUM ... | このコマンドの識別番号(1..100) | |||||||||||||||||
KIND ... | 監視方式 - icmp-echo ... ICMP Echoを使用する |
|||||||||||||||||
INTERVAL ... | キープアライブの送信間隔秒数(1..65535) | |||||||||||||||||
COUNT ... | 到達性が無いと判断するまでに送信する回数(3..100) | |||||||||||||||||
IP_ADDRESS ... | 送信先のIPアドレス | |||||||||||||||||
OPTION=VALUE列 |
|
○LAN経由のキープアライブを使用するか否かの設定
INTERFACE ... | バックアップ対象のLANインタフェース名 | |
DEST_IP ... | キープアライブ確認先のIPアドレス | OPTION=VALUE列 |
|
○PP経由のキープアライブを使用するか否かの設定
lcp-echo ... | LCP Echo Request/Replyを用いる | |||||||||||||||
icmp-echo ... | ICMP Echo/Replyを用いる | |||||||||||||||
DEST_IP ... | キープアライブ確認先のIPアドレス | |||||||||||||||
OPTION=VALUE列 |
|
grepおよびlessコマンドを実装した。「show」で始まるコマンドが表示する内容から、指定した検索パターンに 一致する内容だけを抜き出して表示することができる。 あるいは「show」で始まるコマンドが表示する内容をページ単位で表示しながら、後ろに戻ったり、指定した検索パターンに一致する内容を検索したりすることができる。「show」で始まるすべてのコマンドで利用できる。
○showコマンドの表示内容から検索パターンに一致する内容だけを抜き出す
-i ... | PATTERN中の英大文字/小文字を区別せず検索する |
-v ... | PATTERNに一致しなかった行を表示する |
-w ... | PATTERNが単語に一致する時だけ表示する |
PATTERN ... | 検索パターン |
文字 | 意味 | 使用例 | 一致する文字列の例 |
. | 任意の1文字に一致する | a.b | aab, aXb, a-b |
? | 直前の文字が0回または1回出現するパターンに一致する | ab?c | ac, abc |
* | 直前の文字が0回以上繰り返すパターンに一致する | ab*c | ac, abc, abbc, abbbbbbbbc |
+ | 直前の文字が1回以上繰り返すパターンに一致する | ab+c | abc, abbc, abbbbbbbbc |
| | 前後の文字のいずれかに一致する | ab|cd | abd, acd |
[ ] | [ ]内の文字のいずれかに一致する | a[bc]d | abd, acd |
[^ ] | [ ]内の文字以外のものに一致する | a[^bc]d | aad, axd |
^ | 行の先頭に一致する | ^abc | abcで始まる行 |
$ | 行の末尾に一致する | abc$ | abcで終る行 |
( ) | 文字列などをグループとして扱う | (ab|cd) | ab, cd |
\ | 続く特殊文字の効果を打ち消す | a\.c | a.c |
例: show config | grep ip | grep lan show config | grep ip | less
○showコマンドの表示内容を見やすくする
コマンド | 内容(数値プレフィクスをNとする) |
q | lessを終了する。 |
スペース | N画面先に進む。 |
b | N画面後ろに戻る。 |
j, ENTER | N行先に進む。 |
k | N行後ろに戻る。 |
g | N行目にジャンプする。 |
G | N行目にジャンプする。ただし、数値プレフィクスを省略した時には、最終行にジャンプする。 |
/ | コマンド文字後に入力された検索パターンを前方に検索する。検索パターンはgrepコマンドと同じものである。 |
? | コマンド文字後に入力された検索パターンを後方に検索する。検索パターンはgrepコマンドと同じものである。 |
n | 最後に入力された/、あるいは?と同じ検索パターンで同じ方向に 検索する。 |
N | 最後に入力された/、あるいは?と同じ検索パターンで逆方向に検索する。 |
BGPで、状態遷移とパケットの送受信をログに記録できるようにした。
○BGPのログの設定
Copyrightの年号を変更した。
PPPのLCP Echo Replyを受信した時に、データ部の確認を行わないように変更した。
traceroute6コマンドで、tracerouteコマンドと同様、時間の表示をミリ秒精度からマイクロ秒精度に変更した。
OSPF、BGPでのタイマ管理は、絶対時刻を参照しながら行っていたため、date/timeコマンドやNTPで時刻が変更されると、タイマの満了が本来よりも早く発生してしまうなどの問題があった。そのため、絶対時刻の参照をやめて、時刻が変更されてもタイマ動作に影響が出ないように変更した。
syslog hostコマンドでSYSLOGサーバとしてホスト名を指定している時、従来そのホスト名のDNSによる名前解決は初めてSYSLOGを送信しようとした時に行い、その後は得られたIPアドレスを再起動するまで使い続ける仕様だったが、これをDNSのTTLが切れたら再度名前解決を試みるように変更した。
2回目以降の名前解決に失敗した場合には、一番最後に得られたIPアドレスをそのまま使い続ける。
複数のDNSサーバを設定している時に、従来は最初のDNSサーバへに対して複数回DNS問い合わせのパケットを送信しても返事が無い時に、2つ目以降のDNSサーバに問い合わせを再送していたが、返事が得られない毎に順番に問い合わせるDNSサーバを切替えるように変更した。
IPv6のRouter Solicitationの返答としてRouter Advertisementを送信する場合に、Router Solicitationの送信元宛てではなく、全ノードマルチキャストアドレス宛に送信するようにした。
自分自身がTCP端点となる通信で、optimistic ACKを受信した時には、スロースタート状態に戻るようにした。
MMI関連で以下のバグを修正した。
ipv6 dad retry countコマンドで0を設定しているとき、インタフェースにIPv6アドレスを設定しても、そのIPv6アドレスに対応するimplicit経路を設定しないバグを修正した。
TELNETでルータにログインし、show logコマンドで大量のログを表示しようとするなどの、大量の出力を発生させるとリブートすることがあるバグを修正した。
ディレクティッドブロードキャストパケットを動的フィルタで処理しようとするとリブートするバグを修正した。
LAN1インタフェースで、設定不一致などでオートネゴに失敗した後は設定に関わらず半二重モードでリンクアップする場合があるが、一度そうなるとその後、再起動したり、あるいはlan typeコマンドを再投入しない限り、必ず半二重モードになってしまうバグを修正した。
このバグの修正後は、ケーブルの抜き差しなどで一度リンクダウンを行うことで、lan typeコマンドの設定が正しくリンク状態に反映される。
save や restart などの動作系のコマンドを記述した設定ファイルを使用して起動させた場合、ハングアップやリブートなどの不具合が発生するバグを修正した。
ip routeコマンドで複数のゲートウェイを設定している静的経路で、先頭のゲートウェイの状態がhideになっているが、後続のゲートウェイが有効でパケットを転送できる状態であるという設定になっている時に、起動直後に、その経路が動的経路プロトコルで配布されないバグを修正した。経路の設定を変更すると、経路が配布されるようになる。
nat descriptor masquerade staticコマンドで指定した内側IPアドレスの機器から外部の機器に対してtracerouteが実行できないバグを修正した。ICMPパケットのデータ部分に設定されているIPヘッダ部分がIPマスカレードで変換されていなかった。
show logコマンド、あるいはless logコマンドで、コマンドを実行中(※)に何もキー入力を行わない状態にし、ログインタイマがタイムアウトしログアウトするということを3回繰り返すと、その後、show log/less logコマンドを実行しても何もログが表示されないようになるバグを修正した。
(※)show logコマンドの場合は、画面の最終行に「---つづく---」あるいは「---more---」が表示されている状態
less logコマンドの場合は最終行に「:」が表示されている状態
IPマスカレードで、外部のホストからIPマスカレードの外側IPアドレスに対してpingを打つと、ICMPに対する静的IPマスカレードが設定されていない限り、ルータ自身が返事を返し、ICMPパケットは内側へは転送しない仕様だが、特定の場合に、ICMPパケットを内側へ転送してしまうバグを修正した。
フレームリレー接続されている場合に、SNMPでFrCircuitEntryの情報が正しく取得できないバグを修正した。
snmp yrifppdisplaymib2 onと設定してあるにも関わらず、PPインタフェースがMIB変数としてアクセスできないバグを修正した。
稀にTCPの静的IPマスカレードが動作しなくなるバグを修正した。なお、動作しなくなった静的IPマスカレードの設定を再び投入すると正常な状態に復帰する。
ISDNのPP Anonymousでの名前による認証で、pp auth usernameコマンドにclid句を指定して発番号認証を利用するようにしている場合に、ユーザ名は正しいが、発番号が正しくないという着信を受けた時には、通常ならば発番号認証を最初に行うために、ISDN回線自体が接続されることがない。しかし、PP Anonymous以外のPPにpp auth uesrnameコマンドが設定されていると、発番号認証が適切に行われず、ISDN回線が接続され、PPPのPAP/CHAPの手順まで処理が進んでしまうバグを修正した。
PPPのPAP/CHAPの手順まで処理が進んでしまっても、そこで改めて発番号認証がチェックされるので、通信できるようになることはない。
nat descriptor masquerade staticコマンドを実行するたびにメモリリークが発生するバグを修正した。設定を保存し、再起動すればメモリリークは起きないが、動作中にコマンドを実行したり、TFTPで設定を送り込んだりした時に発生する。
起動時、LANのリンクアップに時間がかかり、ColdStart/WarmStartのSNMPトラップがLANインタフェースから送出されないバグを修正した。それに伴い起動時の待機時間を8秒から5秒へ戻した。
show configコマンドでファイルを指定して表示する場合に、管理パスワードを32文字設定したファイルがパスワード認証でエラーになり、表示できないバグを修正した。
また、ログインパスワードが32文字設定されているファイルでは、パスワード認証で先頭から31文字まで入力すれば認証を通ってしまうバグを修正した。
OSPFのunnumberedリンクで、隣接ルータに関するROUTER LSA中のunnumberedリンクのリンクデータの上位8ビットが0で無かった時に、その隣接ルータを宛先とするような経路を経路テーブルに追加できないバグを修正した。
隣接ルータがヤマハRTシリーズである時には、リンクデータの上位8ビットは必ず0になるため、この現象は発生しない。他メーカのルータとの相互接続の場合にのみ発生する可能性がある。
pingのパラメータ指定を誤って入力するとリブートすることがあるバグを修正した。
プロトコルのニーモニックにdomainを指定して動的フィルタを使用したときに、TCPのDNSメッセージがフィルタで破棄されるバグを修正した。DNSサーバ間のゾーン転送が行えない現象が発生していた。
PRIインタフェースがISDNの設定でレイヤ2がアップしている状態から、PRIインタフェースのケーブルを抜くと、約100秒後にPRIインタフェースのレイヤ2がダウンし、通信できなくなるバグを修正した。
動的フィルタでFTPのコネクションを管理するとき、FTPの制御コネクションで通常のコマンドとは異なるデータを送受信すると、メモリを過剰に消費し、最悪のケースでは、ルータがリブートするバグを修正した。
ルータ自身宛のICMPv6パケットを受信した時に、まれにルータ内部のタイマの一部が停止してしまい、以下のような現象になるバグを修正した。
isdn remote addressコマンドで、callまたはarrive以外の文字列をキーワードに指定したときに、入力エラーにならず、callキーワードが指定されたものとして動作するバグを修正した。
no ipv6 I/F dad retry countコマンドで設定をデフォルト値に変更しても、変更なしと見なしてしまうバグを修正した。表面的な動作としては、上記コマンド実行後、コンソールからログアウトをしたり、restartコマンドを実行しても保存するか否かを聞かれないため、saveコマンドを実行しないまま再起動しても気づかない場合があった。
名前によるルーティング機能によりPP anonymousから発信する場合に、以下の条件が重なると、名前によるルーティングが正しく動作しなくなり、本来向けられるべき相手先とは違うところへパケットが転送されたり、名前によるルーティングで発呼できなくなったりするバグを修正した。一度現象が発生すると、再起動するまで回復できなかった。
SNMPで、BGPにより設定された経路に対するMIB変数ip.ipRouteTable.ipRouteEntry.ipRouteProtoが、14(BGP)ではなく、2(Local)になっていたバグを修正した。
SNMPで、ip.ipAddrTable.ipAddrEntry以下のMIB変数が、IPアドレスが付与されているインタフェースのリンク状態によって、値を返せないことがあるバグを修正した。以下の状況で値が返せず、エラーを返していた。
インタフェースの種類 | アクセス方法 | 値を返せないリンク状態 |
LANインタフェース | GetRequest | リンクアップしていると値が返せない |
GetNextRequest | リンクダウンしていると値が返せない | |
PPインタフェース | GetRequest GetNextRequest |
リンクダウンしていると値が返せない |
PPTPやTelnet等のTCPアプリケーションがルータに接続したときに、ルータの動作が不安定になったり、リブートすることがあるのを修正した。多くのTCP接続を同時に受けたときに起こりやすい。
LAN1で3071Byte以上のロングサイズエラーパケットを受信するとLAN機能が停止してしまうバグを修正した。
NATで、下記の条件が揃うときに、NATの外側アドレスを終点アドレスとするパケットを受信すると、その終点アドレスを不特定の不正なIPアドレスに書き換えた上でルーティングを続行するバグを修正した。変換後のIPアドレスは不特定であり、事前に予想することはできない。
no snmp trap enable snmpコマンドで、コマンド文字列をすべて入力した後に更にTABキーを入力すると、表示が「no snmp trap enable a」となってしまうバグを修正した。
TCPパケットのtimestampオプションを第三者が不正に更新することができる脆弱性を修正した。
ユーザ間情報通知が含まれている着信を全て拒否してしまうバグを修正した。
8BRIボード使用時に、局と同期をとる為のマスタクロックとなるポートが切り替わらなくなる事がある不具合を修正した。
拡張モジュールを使用していない状態で、show line masterclock コマンドを入力すると文字化けする不具合を修正した。
PRIモジュール使用時にケーブルを差さない状態で、show line masterclockコマンドを入力すると文字化けする不具合を修正した。
8BRIモジュール使用時にケーブルを差さない状態で、show line masterclockコマンドを入力すると bri1.1(free run) となるのを nothing(free run)となるように修正した。
8BRIモジュール使用時に line masterclock コマンドで bri1.1 以外を指定していても、bri1.1 がマスタクロックになれる不具合を修正した。
ISDNリモートセットアップによる着信を受けている状態でremote setupコマンドを実行すると、コマンドは実行されずに「他のユーザが使用中です」あるいは「Remote already used」というエラーメッセージが表示されるが、このエラーメッセージの言語がconsole characterコマンドの設定に従わず、常に日本語か英語どちらかの表示になってしまうバグを修正した。
pri leased channel コマンド入力時に、パラメータの数が足りない時に表示されるエラー内容が間違っているバグを修正した。
no login timerコマンドまたはno console infoコマンドを実行した後で、管理モードからexit/quitコマンドで一般モードへ抜ける時や、restartコマンドで再起動する時に、設定を保存するかどうか問い合わせないバグを修正した。
queue INTERFACE length の設定を no コマンドにより削除した後に、exit コマンドや restart コマンドを実行すると設定の変更がセーブされずに無効となってしまうバグを修正した。
VRRPで、LANインタフェースの実IPアドレスを仮想IPアドレスとして利用している時に、自分がマスター状態でない場合にはそのIPアドレスに対するARP要求には応答してはいけないにもかかわらず応答してしまっていたバグを修正した。
dns serverコマンド等でDNSサーバとして自分自身のIPアドレスを指定すると、DNS問い合わせがループしてしまいDNS問い合わせができなくなるだけではなく、ルータ全体の処理速度が低下するバグを修正した。この時、CPU負荷の表示は100%となり、機種によってはしばらくたつとリブートしてしまっていた。
ospf logコマンドのオンラインヘルプの文章の誤りを修正した。
U0状態で送信するSTATUSメッセージに呼状態情報要素がつかないバグを修正した。
ルータ自身が発したDNS問い合わせに対して、DNSサーバからの返事が返ってくるタイミングによっては、ルータ内部で不正なメモリアクセスが発生することがあるバグを修正した。不正なメモリアクセスが発生した後の動作は不定だが、ルータがリブートすることもある。
ip INTERFACE intrusion detectionコマンドで、rejectパラメータとして正しくない文字列を与えてもエラーにならず、コマンドが一部設定されてしまうことがあるバグを修正した。
no console linesコマンドを実行した後で、設定をsaveコマンドで保存しないままquitコマンドやrestartコマンドを実行しようとしても、設定を保存するかどうか聞いてこないバグを修正した。
ip INTERFACE dhcp lease timeコマンドで、引数として「時間:分」形式で設定しようとした時に、本来であれば、357913時間56分(21474836分)まで設定できなければいけないところを、357854時間00分以上の値を設定できないバグを修正した。
ip routeコマンドで、ネットワークアドレスとして0.0.0.0や、ネットマスクに0を指定することができるバグを修正した。
ip INTERFACE rip auth typeコマンドで、実際には利用できないパラメータ'md5'が設定できるバグを修正した。RIP2のMD5認証(RFC2082)には対応していない。
プライベートMIB変数、yrIfPpSpeedの型が、GaugeでなければいけないところがINTEGERになっているバグを修正した。
TCPのデータ受信時に動作が不安定になったり、機種によってはリブートするバグを修正した。UPnPの通信時に発生しやすい。
フレームリレーで stac圧縮を使用した場合に、一時的にリンクダウンが発生するバグを修正した。
queue INTERFACE class property コマンドにおいて、各パラメータ(bandwidth/parent/borrow/maxburst/minburst/packetsize)をそれぞれ重複指定しても書式エラーにならないバグを修正した。
queue INTERFACE type の設定を no コマンドにより削除した後に、exit/quit/restartコマンドを実行すると、設定の変更をセーブするか否か問われずに設定の変更が無効となってしまうバグを修正した。
login password、administrator passwordに「#」「"」などの文字をパスワードとして使用している設定を、show config FILEコマンドで表示しようとすると、正しいパスワードを入力してもパスワード間違いとして表示できないバグを修正した。
nat descriptor staticコマンドで、引数を2つまでしか入力せずにコマンドを入力した時に、本来ならばパラメータ数間違いのエラーになるところを別のエラーになることがあるバグを修正した。機種によっては、コマンドを入力するとリブートしてしまうこともある。
dhcp scope optionが設定されている場合に、dhcp scopeコマンドの削除や再設定などの後、動作が不安定になることがあるバグを修正した。
ospf router idコマンドで、ルーターIDに0.0.0.0を指定してもエラーにならないバグを修正した。
内部時計の精度が十分ではなく、一日当たり約3分程度遅れていくバグを修正した。
show accountコマンドで、引数にPRIインタフェースを指定するとエラーになるバグを修正した。
ospf virtual-linkコマンドで、ルーターIDに0.0.0.0を指定してもエラーにならないバグを修正した。
PRIインタフェースを専用線多重で24対地に対して64k専用線として利用する場合で、24対地すべてが接続状態になっている時に、interface reset ppコマンドで24対地のいずれかをリセットすると、リブートやハングアップといった状態になってしまうバグを修正した。
PRIインタフェースで24対地のいくつかが切断状態の時にinterface reset ppコマンドを実行すると、コマンドを実行した対地以外のすべてが切断状態になってしまい、再起動するまで接続できなくなるバグを修正した。
telnet接続およびリモートセットアップ接続で、セッション終了寸前にデータを入力すると、そのデータがセッション終了時に廃棄されずに、次のセッションが開始された時に誤って処理されるバグを修正した。
以下の3つのコマンドで、インタフェースとしてBRIやPRIがTAB補完や'?'により指定できるバグを修正した。実際にBRIやPRIを指定してもコマンド自体はエラーになる。
queue INTERFACE class property
queue INTERFACE default class
queue INTERFACE length
存在しないアドレスに対してping6を実行した後など、近隣キャッシュのエントリ削除が発生する場合に、不正なメモリアクセスが発生し、動作が不安定になる可能性を排除した。
show configコマンドとshow file listコマンドで、'| less'を続けてもLESS動作にならないバグを修正した。
show系コマンドで、1行の長さが4095文字以上になる行を表示しようとすると、正しく表示、改行できないバグを修正した。非常に長い文字列をパラメータとするdescriptionコマンドを設定して、show configやshow statusコマンドを実行した時などが該当する。
シリアルまたはリモートセットアップでの接続で、login timer clear を自分自身が入力しない限り、以前に設定されていたタイマが停止しない不具合を修正した。
security classコマンドのオンラインヘルプを修正した。
ニーモニックに"gre"を指定することができないバグを修正した。
dhcp scope コマンドで、exceptで除外IPアドレスの範囲指定が重複した場合にもエラーとならないバグを修正した。
内部時計の日時を変更すると、 VRRP広告パケットが短時間に大量に送信される、または全く送信されなくなり、以下の現象となる場合があるバグを修正した。
lessコマンドを実行した場合に、メモリリークする不具合を修正した。
ip pp address/ip pp remote address コマンドにより設定された PP のローカルIPアドレス/リモートIPアドレスを、さらに同コマンドで上書き設定した場合、不当な経路が追加されたりリブートする可能性があったため、この可能性を排除した。いずれか一方のIPアドレスを上書きするだけでこの問題が発生する可能性があった。
フレームリレーで圧縮を使用している場合、非常に負荷が高い時に、ルータから送信したPVC状態確認要求に対して受信したPVC状態確認を認識できなくなり、DLCIがダウンしたと誤認してしまうことがあるバグを修正した。
PVC状態確認要求を送信して、PVC状態確認を受信する前に圧縮された受信データパケット列でパケットロスを観測すると、圧縮リセット要求を送信することになるが、その後に受信したPVC状態確認を認識できなくなっていた。
ip tos supersede コマンドでパラメータが不足した形で入力されるとリブートすることがあるバグを修正した。