IPv6でDAD(Duplicate Address Detection)の送信回数を設定できるようにした。
COUNT ... | 選択したインタフェースでのDADの再送回数(0..10) |
インタフェースにIPv6アドレスが設定されたときに、アドレスの重複を検出するために送信するDADの送信回数を設定する。ただし、0を設定した場合は、DADを送信せずにアドレスを有効なものとして扱う。
COUNT ... | 1 |
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のsyslogを出力する。syslog debug onも設定されている必要がある。IPv4のみに対応している。システムに負荷がかかるため、トラブルシュート等の一時的な使用にしか推奨されない。
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
IKEで、同時に始動できるフェーズ1の最大数を設定できるようにした。この機能を実現するために、ipsec ike retryコマンドの仕様を次のように変更する。
COUNT ... | 再送回数(1..50) |
INTERVAL ... | 再送間隔の秒数(1..100) |
MAX_SESSION ... | 同時に動作するフェーズ1の最大数(1-5) |
鍵交換のパケットが相手に届かないときに実施する再送の回数と間隔を設定する。また、オプションのパラメータとして、同時に動作するフェーズ1の最大数を指定できる。ルータは、フェーズ1が確立せずに再送を継続する状態にあるとき、鍵の生成を急ぐ目的で、新しいフェーズ1を始動することがある。このパラメータは、このような状況で、同時に動作するフェーズ1の数を制限するものである。なお、このパラメータは、始動側のフェーズ1のみを制限するものであり、応答側のフェーズ1に対しては効力を持たない。
COUNT = 10 |
INTERVAL = 5 |
MAX_SESSION = 3 |
ノーマルパスにおけるIPsecの暗号化処理で、付加するパディングのサイズとしてDES/3DESの場合に8、AESの場合に16バイトを付加していたケースを、それぞれ0バイトになるように変更した。変更前でもRFC上問題にはならないが、暗号化後のパケットのサイズが大きくなるため、通信速度やフラグメントされやすくなるといった点で不利ではあった。
ファストパス処理では、従来から0バイトになるように処理されている。
ICMP Echoを利用するキープアライブ機能で、ICMP Echoパケットのサイズを指定できるようにした。
NUM ... | このコマンドの識別番号(1..100) | |||||||||||||||||
KIND ... | 監視方式
|
|||||||||||||||||
INTERVAL ... | キープアライブの送信間隔秒数(1..65535) | |||||||||||||||||
COUNT ... | 到達性が無いと判断するまでに送信する回数(3..100) | |||||||||||||||||
IP_ADDRESS ... | 送信先のIPアドレス | |||||||||||||||||
OPTION=VALUE列 |
|
指定したIPアドレスに対して、ICMP Echoを送信し、その返事を受信できるかどうかを判定する。
このコマンドはRev.7.01以上で実行可能である。
lengthパラメータで指定するのはICMPデータ部分の長さであり、IPパケット全体の長さではない。lengthパラメータは、Rev.7.01.43、Rev.8.00.57、Rev.8.01.18、Rev.8.0.35以上で指定可能である。
log = off |
upwait = 5 |
downwait = 5 |
length = 64 |
INTERFACE ... | バックアップ対象のLANインタフェース名 | ||||||||||||
DEST_IP ... | キープアライブ確認先のIPアドレス | ||||||||||||
OPTION=VALUE列 |
|
指定するLANインタフェースに対して、キープアライブ動作を行うか否かを設定する。icmp-echoを指定すれば、ICMP Echo/Replyを用い、arpを指定すれば、ARP Request/Replyを用いる。併記することで、併用も可能である。
icmp-echoで確認するIPアドレスに対する経路は、バックアップをするLANインタフェースに向くことが必要である。downwaitパラメータで応答時間を制限する場合でも、lan keepalive intervalコマンドの設定値の方が小さい場合には、lan keepalive intervalコマンドの設定値が優先される。downwait、upwaitパラメータのうち一方しか設定していない場合には、他方も同じ値が設定されたものとして動作する。
lengthパラメータで指定するのはICMPデータ部分の長さであり、IPパケット全体の長さではない。lengthパラメータは、Rev.7.01.43、Rev.8.00.57、Rev.8.01.18、Rev.8.0.35以上で指定可能である。
lcp-echo ... | LCP Echo Request/Replyを用いる | |||||||||||||||
icmp-echo ... | ICMP Echo/Replyを用いる | |||||||||||||||
DEST_IP ... | キープアライブ確認先のIPアドレス | |||||||||||||||
OPTION=VALUE列 |
|
選択した相手先に対する接続のキープアライブ動作を設定する。lcp-echo指定で、LCP Echo Request/Replyを用い、icmp-echoも指定すればICMP Echo/Replyも同時に用いる。icmp-echoを使用する場合には、IPアドレスの設定が必要である。
このコマンドを設定していない場合でも、pp always-onコマンドでonと設定していれば、LCP Echoによるキープアライブが実行される。
icmp-echoで確認するIPアドレスに対する経路は、設定されるPPインタフェースが送出先となるよう設定される必要がある。
downwaitパラメータで応答時間を制限する場合でも、pp keepalive intervalコマンドの設定値の方が小さい場合には、lan keepalive intervalコマンドの設定値が優先される。downwait、upwaitパラメータのうち一方しか設定していない場合には、他方も同じ値が設定されたものとして動作する。
disconnectパラメータは、PPPoEで使用する場合にPPPoEレベルでの再接続が必要な場合に使用する。disconnectパラメータが設定されている場合に、設定時間内にicmp-echoの応答が内場合、PPPoEレベルで一度切断操作を行うため、pp always-onコマンドとの併用により再接続を行うことができる。他のパラメータがデフォルト値の場合、disconnectパラメータは70秒程度に設定しておくと、ダウン検出後の切断動作が確実に行われる。
lengthパラメータで指定するのはICMPデータ部分の長さであり、IPパケット全体の長さではない。lengthパラメータは、Rev.7.01.43、Rev.8.00.57、Rev.8.01.18、Rev.8.0.35以上で指定可能である。
GATEWAY_ID ... | セキュリティ・ゲートウェイの識別子 | ||||||
SWITCH ... |
|
||||||
TYPE ... | キープアライブの方法
|
||||||
LENGTH .... | ICMP Echoパケットの長さ(64-1500) | ||||||
INTERVAL ... | キープアライブパケットの送信間隔秒数(1..600) | ||||||
COUNT ... | キープアライブパケットが届かない時に障害とみなすまでの試行回数(1..50) |
IKEキープアライブの動作を設定する。このコマンドの設定は、双方のルータで一致させる必要がある。
lengthパラメータで指定するのはICMPデータ部分の長さであり、IPパケット全体の長さではない。lengthパラメータは、Rev.7.01.43、Rev.8.00.57、Rev.8.01.18、Rev.8.0.35以上で指定可能である。
SWITCH = auto |
TYPE = heartbeat |
LENGTH = 64 |
INTERVAL = 10 |
COUNT = 6 |
RTX2000で、show environmentコマンド実行時にBootROMのバージョンを表示するようにした。ただし、BootROMのバージョンが表示できるのはBootROMのバージョンが1.03以降の場合に限られる。
show logコマンド、あるいはless logコマンドで、コマンドを実行中(※)に何もキー入力を行わない状態にし、ログインタイマがタイムアウトしログアウトするということを3回繰り返すと、その後、show log/less logコマンドを実行しても何もログが表示されないようになるバグを修正した。
Rev.7.01.30でエンバグ。
(※)show logコマンドの場合は、画面の最終行に「---つづく---」あるいは「---more---」が表示されている状態。less logコマンドの場合は最終行に「:」が表示されている状態。
nat descriptor masquerade staticコマンドを実行するたびにメモリリークが発生するバグを修正した。設定を保存し、再起動すればメモリリークは起きないが、動作中にコマンドを実行したり、TFTPで設定を送り込んだりした時に発生する。
以下のコマンドのオンラインヘルプを修正した。
同じフィルタ番号でip filter dynamicコマンドを実行するとメモリリークするバグを修正した。
nat descriptor logを設定後、TFTPでclear configurationを実行してもnat descriptor logコマンドがshow configで表示されるバグを修正した。
dhcp scopeコマンドで、except句に同じIPアドレスが重複して指定されるとエラーになるようにした。
終点IPアドレスがマルチキャストあるいはブロードキャストアドレスになっているUDPパケットを受信したがそれを処理できない時には、従来はアドレスの種類に関わらずデバッグログに
can't receive UDP multicast packet
と表示していたが、これをブロードキャストアドレスの場合には
can't receive UDP broadcast packet
と表示するよう変更した。
ipsec ike remote/local name コマンドで「"」や「#」、「 」(空白)などのような特殊な文字を含んだ文字列を設定して再起動をすると、設定が正しく保存されず、show configコマンドを実行しても正しく表示されないバグを修正した。
ディレクティッドブロードキャストパケットを動的フィルタで処理しようとするとリブートするバグを修正した。
Rev.7.01.31でエンバグ。
IPマスカレードで、外部のホストからIPマスカレードの外側IPアドレスに対してpingを打つと、ICMPに対する静的IPマスカレードが設定されていない限り、ルータ自身が返事を返し、ICMPパケットは内側へは転送しない仕様だが、特定の場合に、ICMPパケットを内側へ転送してしまうバグを修正した。
IPマスカレードで、内側から外部のホストへpingを実行し、それにより生成された変換テーブルが残っている状態の時に、その外部のホストからIPマスカレードの外側IPアドレスへpingを実行すると、ICMP ECHOパケットのIDの値が変換テーブルの変換後の値(show nat descriptor addressコマンドでは「マスカレード」項に表示される値)と一致していると、変換テーブルにしたがってパケット変換を行い、内側のホストにパケットを転送してしまっていた。そのため、内側のホストがpingに返答しないような設定になっていたり、あるいは内側のLANインタフェースがダウンしているなどの場合に、ルータ自身が返事をする場合とは異なり、外部のホストからのpingに返事が返せない状態になってしまっていた。
稀にTCPの静的IPマスカレードが動作しなくなるバグを修正した。動作しなくなった静的IPマスカレードの設定を再び投入すると正常な状態に復帰する。
ip routeコマンドで複数のゲートウェイを設定している静的経路で、先頭のゲートウェイの状態がhideになっているが、後続のゲートウェイが有効でパケットを転送できる状態であるという設定になっている時に、起動直後に、その経路が動的経路プロトコルで配布されないバグを修正した。経路の設定を変更すると、経路が配布されるようになる。
Rev.7.01.30でエンバグ。
IPv6のIPsecで、ipsec ike local addressコマンドを設定していないときに、AHのトンネルモードで通信できないバグを修正した。
nat descriptor masquerade staticコマンドで指定した内側IPアドレスの機器から外部の機器に対してtracerouteが実行できないバグを修正した。ICMPパケットのデータ部分に設定されているIPヘッダ部分がIPマスカレードで変換されていなかった。
ファストパスでSMTPプロトコルの動的フィルタを使用したときに、SMTPコネクションが正常に終了しても、動的フィルタの管理するコネクションとして長時間生存し続けるバグを修正した。SMTPコネクションの生成と消滅が数多く発生する状況下では、システムの処理性能が低下して、内部リソースの枯渇によりリブートすることがあった。
IPsecで、対向のセキュリティゲートウェイへの経路がフィルタ型経路になっている時に、ノーマルパスで扱うパケットが正しいゲートウェイを選択できず、フィルタで示されるのとは異なるゲートウェイに転送されることがあるバグを修正した。
ネットワークバックアップ機能で、トンネルをバックアップする時に、トンネルの対向のゲートウェイへの経路をフィルタ型経路にしている時に、キープアライブパケットが正しいゲートウェイに向かわず、フィルタの選択とは異なるゲートウェイに転送されることがあるバグを修正した。
IPsecで、対向のセキュリティゲートウェイへの経路を静的にフィルタ型経路で指定していると、IPsecで暗号化するパケットをファストパスで処理する場合にフィルタ型経路を正しく評価できず、必ず一番最初に記述したゲートウェイに送信してしまうバグを修正した。
IPv6のRSを受信し、その返答としてのRAを送信するまでの間に、新たなRSを受信してしまうと、送信するはずのRAの送信時刻が遅れてしまうバグを修正した。数多くの端末が接続され一度に大量のRSを受信する環境では、この不具合により端末がRAを受信できず、プレフィックス取得に失敗する場合があった。
ospf export fromコマンドで経路をフィルタして受け入れない設定の場合に、受け入れるべき経路までフィルタされてしまうことがあるバグを修正した。
具体的には、別のOSPFルータを間に挟む形になっていて隣接関係にはなっていない2台のOSPFルータで、一方のOSPFルータのフィルタの設定が、他方のOSPFルータへ到達するための経路Aは受け入れないが、そのルータが広告している経路Bは受け入れるという設定の場合に、本来なら経路Bは受け入れなくてはいけないのに受け入れることができていなかった。
ip routeコマンドでIPアドレスをゲートウェイとする静的経路の設定を行なう時に、経路の出力インタフェースはコマンド投入時点での経路テーブルから検索する仕様になっており、一度インタフェースが確定すると、その後変更しないようになっていた。しかし、この動作では、ip routeコマンドが、ゲートウェイが接続されているインタフェースに対するアドレスの設定よりも先に行なわれた場合に、本来のインタフェースとは別のインタフェースに向いてしまうことがある。そのため、インタフェースのIPアドレスが設定され、implicit経路が追加された時には、インタフェースが確定している経路についても再度経路の検索をやり直し、正しいインタフェースに向かうように修正した。
修正以前でも、設定を保存し、再起動すれば経路は正しいインタフェースに向くようになっている。
問題となる動作の例:
以下のような順序で設定を行なった時に、192.168.100.0/24の経路は本来はLAN2インタフェースに向いて欲しいが、LAN1インタフェースへ向いてしまう。
ip lan1 address 192.168.0.1/24 ip route default gateway 192.168.0.2 ip route 192.168.100.0/24 192.168.1.2 ip lan2 address 192.168.1.1/24
TELNETでルータにログインし、show logコマンドで大量のログを表示しようとするとリブートするバグを修正した。show log以外のコマンドでも、大量の出力を発生するコマンドを実行すると、同じ問題が発生する可能性がある。
RTX2000のシリアルコンソールで、フロー制御が正しく動作していないために、カット&ペーストなどで一気に設定を流し込むと文字落ちなどが発生することがあるバグを修正した。
RTX2000のIPルーティングテーブルで多数の経路を集中的に更新するときに、ルータの処理が間に合わず、不安定な動作を引き起こすバグを修正した。CPUの負荷が高いときに発生しやすい。実際の現象としては、OSPFで大量の経路を導入しながらIPsecの鍵交換を実施するときに、トンネルインタフェースが起動しないという挙動を確認している。発生する現象の予測は難しく、影響を受ける機能も特定できない。
RTX2000で、SNMPのMIB変数がYBB-2GE-STX/LTXによるギガビットインタフェースに対応していなかったのを修正した。
RTX2000で、リンクアップしているLANインタフェースのすべてでip rip receive コマンドによりRIPを受信しない設定になっていて、デフォルト経路が有効である時に、トンネルインタフェースまたはPPPoEであるPPインタフェースから受信したRIPv2を自分宛として処理できずにデフォルト経路に送信してしまうバグを修正した。
RTX2000で、ルータ自身宛のICMPv6パケットを受信した時に、まれにルータ内部のタイマの一部が停止してしまい、以下のような現象になるバグを修正した。
Rev.7.01.35でエンバグ。
RTX2000で、ケーブルを接続していないLANインタフェースについてリンク状態の変化がログやSNMPトラップに記録されることがあるバグを修正した。
IPsecトンネルでキープアライブを使う設定の時に、IKEのフェーズ1が確立していない状態の時にハートビートパケットを受信すると、ルータがリブートするバグを修正した。
通常はフェーズ1が確立していない時にハートビートを受信することは無いが、メインモードのやり取りの中で最後のパケットが何らかの理由で受信できないと、一方だけがフェーズ1が確立した状態になるためこのようなことが起きる。