ARPが解決されるまでの間に送信を保留しておくパケットの数を制御するコマンドを新設した。
INTERFACE ... | LANインタフェース名 |
LEN ... | キュー長、0〜10000 |
ARPが解決していないホストに対してパケットを送信しようとした時に、ARPが解決するか、タイムアウトによりARPが解決できないことが確定するまで、インタフェース毎に送信を保留しておくことのできるパケットの最大数を設定する。
0を設定するとパケットを保留しなくなるため、例えばARPが解決していない相手にpingを実行すると必ず最初の1パケットは失敗するようになる。
インタフェースの説明を設定しておく、descriptionコマンドを新設した。
INTERFACE ... | LANインタフェース名、'pp'、'tunnel' |
DESCRIPTION ... | 説明の文字列 |
インタフェースの説明を設定しておく。'pp'、'tunnel'を指示した時にはそれぞれ、pp selectあるいはtunnel selectで選択したインタフェースの説明となる。
設定内容は、インタフェースに対するshow statusコマンドで表示される。
ospf import filterコマンドで、フィルタのタイプとして従来からあるinclude、not include、refines、 not refines、equal、not equalに加えて、reject include、reject refines、reject equalを追加した。
また、not inlcude、not refines、not equalの場合に複数のネットワークを指定した場合に、経路を導入するかどうか正しく判断できていなかったバグを修正した。
FNUM ... | フィルタ番号 | ||||||
NR ... |
フィルタの解釈の方法
|
||||||
KIND ... |
フィルタ種別
|
||||||
IP_ADDRESS/MASK ... | ネットワークアドレスを表すIPアドレスとマスク長 | ||||||
PARAMETER ... |
外部経路を広告する場合のパラメータ
|
OSPFで他のOSPFルータに外部経路を広告する際に適用するフィルタを定義する。このコマンドで定義したフィルタは、ospf import fromコマンドのfilter項で指定されてはじめて効果を持つ。
IP_ADDRESS/MASKでは、ネットワークアドレスを設定する。これは、複数設定でき、経路の検査時にはそれぞれのネットワークアドレスに対して検査を行なう。
NRパラメータが省略されている場合には、一つでも該当するフィルタがある場合には経路を広告する。
not指定時には、すべての検査でフィルタに該当しなかった場合に経路を広告する。
reject指定時には、一つでも該当するフィルタがある場合には経路を広告しない。
KINDでは、経路の検査方法を設定する。
include ... | ネットワークアドレスと一致する経路および、ネットワークアドレスに含まれる経路が該当となる |
refines ... | ネットワークアドレスに含まれる経路が該当となるが、ネットワークアドレスと一致する経路が含まれない |
equal ... | ネットワークアドレスに一致する経路だけが該当となる |
PARAMETERでは、OSPFの外部経路として広告する場合のパラメータとして、メトリック値、外部経路タイプ、タグがそれぞれmetric、type、tagにより指定できる。これらを省略した場合には以下の値が採用される。
metric | 1 |
type | 2 |
tag | 1 |
not指定のフィルタをospf import fromコマンドで複数設定する場合には注意が必要である。not指定のフィルタに合致するネットワークアドレスは、そのフィルタでは導入するかどうかが決定しないため、次のフィルタで検査されることになる。そのため、例えば、以下のような設定ではすべての経路が広告されることになり、フィルタの意味が無い。
ospf import from static filter 1 2 ospf import filter 1 not equal 192.168.1.0/24 ospf import filter 2 not equal 192.168.2.0/24
1番のフィルタでは、192.168.1.0/24以外の経路を広告し、2番のフィルタで192.168.2.0/24以外の経路を広告している。つまり、経路192.168.1.0/24は2番のフィルタにより、経路192.168.2.0/24は1番のフィルタにより広告されるため、広告されない経路は存在しない。
経路192.168.1.0/24と経路192.168.2.0/24を広告したくない場合には以下のような設定を行なう必要がある。
ospf import from static filter 1 ospf import filter 1 not equal 192.168.1.0/24 192.168.2.0/24
あるいは、
ospf import from static filter 1 2 3 ospf import filter 1 reject equal 192.168.1.0/24 ospf import filter 2 reject equal 192.168.2.0/24 ospf import filter 3 include 0.0.0.0/0
OSPFで受け取った経路をルータの経路テーブルに導入するかどうかを設定するコマンドを新設した。
FILTER ... | ospf export filterコマンドのフィルタ番号 |
FNUM ... | フィルタ番号 | ||||||
NR ... |
フィルタの解釈の方法
|
||||||
KIND ... |
フィルタ種別
|
||||||
IP_ADDRESS/MASK ... | ネットワークアドレスを表すIPアドレスとマスク長 |
OSPFにより他のOSPFルータから受け取った経路を経路テーブルに導入する際に適用するフィルタを定義する。このコマンドで定義したフィルタは、ospf export fromコマンドのfilter項で指定されてはじめて効果を持つ。
IP_ADDRESS/MASKでは、ネットワークアドレスを設定する。これは、複数設定でき、経路の検査時にはそれぞれのネットワークアドレスに対して検査を行なう。
NRパラメータが省略されている場合には、一つでも該当するフィルタがある場合には経路が導入される。
not指定時には、すべての検査でフィルタに該当しなかった場合に経路が導入される。
reject指定時には、一つでも該当するフィルタがある場合には経路が導入されない。
KINDでは、経路の検査方法を設定する。
include ... | ネットワークアドレスと一致する経路および、ネットワークアドレスに含まれる経路が該当となる |
refines ... | ネットワークアドレスに含まれる経路が該当となるが、ネットワークアドレスと一致する経路が含まれない |
equal ... | ネットワークアドレスに一致する経路だけが該当となる |
not指定のフィルタをospf export fromコマンドで複数設定する場合には注意が必要である。not指定のフィルタに合致するネットワークアドレスは、そのフィルタでは導入するかどうかが決定しないため、次のフィルタで検査されることになる。そのため、例えば、以下のような設定ではすべての経路が導入されることになり、フィルタの意味が無い。
ospf export from ospf filter 1 2 ospf export filter 1 not equal 192.168.1.0/24 ospf export filter 2 not equal 192.168.2.0/24
1番のフィルタでは、192.168.1.0/24以外の経路を導入し、2番のフィルタで192.168.2.0/24以外の経路を導入している。つまり、経路192.168.1.0/24は2番のフィルタにより、経路192.168.2.0/24は1番のフィルタにより導入されるため、導入されない経路は存在しない。
経路192.168.1.0/24と経路192.168.2.0/24を導入したくない場合には以下のような設定を行なう必要がある。
ospf export from ospf filter 1 ospf export filter 1 not equal 192.168.1.0/24 192.168.2.0/24
あるいは、
ospf export from ospf filter 1 2 3 ospf export filter 1 reject equal 192.168.1.0/24 ospf export filter 2 reject equal 192.168.2.0/24 ospf export filter 3 include 0.0.0.0/0
OSPFで、状態遷移とパケットの送受信をログに記録することができるようにした。
LOG ... |
|
BGPで、同一セグメントに接続されていないルータとの間でBGPのコネクションを確立できるようにした。この機能に対応して、bgp neighborコマンドに、gatewayオプションを追加する。
NEIGHBOR_ID ... | 近隣ルータの番号 (1 .. 21474836) |
REMOTE_AS ... | 相手のAS番号 (1 .. 65535) |
REMOTE_ADDRESS ... | 相手のIPアドレス |
PARAMETER ... | TYPE=VALUEの組 |
BGPコネクションを接続する近隣ルータを定義する。パラメータとして指定できるものは以下の通りである。
TYPE | VALUE | 説明 |
hold-time | off、3以上の整数 | キープアライブの送信間隔[秒] |
metric | 1 .. 21474836 | MED(Multi-Exit Discriminator) |
passive | on、off | 能動的なBGPコネクションの接続を抑制するか否か |
gateway | IPアドレス | 接続先に対するゲートウェイのIPアドレス |
hold-time ... | 180 |
metric ... | 指定されない |
passive ... | off |
gateway ... | 指定されない |
show ip routeコマンドでBGPの経路を表示するときに、経路のAS Path属性を表示するようにした。また、パラメータとしてdetailを指定したときには、AS Pathに加えて、Origin、MEDの各属性を表示するようにした。各属性の意味はRFC1771にしたがう。
show status bgp neighborコマンドで、以下の拡張を行なった。
IP-ADDRESS ... | 隣接ルータのIPアドレス | ||||||
ROUTE-TYPE ... | 経路情報の表示
|
BGPの隣接ルータに関する情報を表示する。
IP-ADDRESSを指定した場合には特定の隣接ルータの情報を表示する。IP-ADDRESSを省略した場合には、すべての隣接ルータの情報を表示する。
ROUTE-TYPEを指定した場合には、隣接ルータとの間でやり取りしている経路の情報を表示する。
advertised-routesを指定した時には、隣接ルータに対して広告している経路を表示する。
received-routesを指定した時には、隣接ルータから受信した経路をすべて表示する。
routesを指定した時には、隣接ルータから受信した経路のうち、bgp export filterなどで受け入れられた経路だけを表示する。
IPv6で、ルーター広告の送信機能について、指定可能なオプション項目を追加した。
IPv6のルータ広告の送信機能について、送信間隔や広告する内容について指定可能な項目を拡張し、オプション項目として設定できるようにした。
INTERFACE ... | インタフェース名 |
PREFIX_ID ... | プレフィックス番号 |
PARAMETERS ... | NAME=VALUEの列 |
インタフェースごとにルータ広告の送信を制御する。送信されるプレフィックスとして、ipv6 prefixコマンドで設定されたものが用いられる。オプションを設定することでルータ広告の送信間隔や広告する内容を指定することができる。
また、m_flagおよびo_flagを利用して、管理するホストがルータ広告以外のステートフル自動設定情報をどのように解釈するかを設定することもできる。
NAME | VALUE | 説明 |
m_flag | ON/OFF | managed address configurationフラグ |
o_flag | ON/OFF | other stateful configurationフラグ |
max-rtr-adv-interval | 秒数 | ルーター広告間隔の最大値(4-1800秒) |
min-rtr-adv-interval | 秒数 | ルーター広告間隔の最小値(3-1350秒) |
adv-default-lifetime | 秒数 | このルーターをデフォルトルートとして利用できる時間(0-9000秒) |
adv-reachable-time | ミリ秒 | Neigbbor Solicitationを行う間隔(0-3600000ミリ秒) |
m_flag | off |
o_flag | off |
max-rtr-adv-interval | 600 |
min-rtr-adv-interval | 200 |
adv-default-lifetime | 1800 |
adv-reachable-time | 0 |
IPv6で、routing headerを受信し、受信内容に従った処理が行えるようにした。
ネットボランチDNSで自動更新に失敗した場合のリトライ間隔と回数を設定 するコマンドを新設した。
INTERVAL ... | 60 - 300[秒], auto |
COUNT ... | 1 - 50 |
INTERVALに'auto'を設定した時には、自動更新に失敗した場合には30秒から90秒の時間をおいて再度自動更新を行なう。それにも失敗した場合には、その後、60秒後間隔で自動更新を試みる。
自動更新に失敗してから、指定した時間までの間に手動実行をした場合は、その後の自動更新は行なわれない。
従来、unnumberedでしか運用できなかったトンネルインタフェースに、IPv4アドレスを設定できるようにした。IPv4アドレスを設定するコマンドとして、ip tunnel addressコマンドと、ip tunnel remote addressコマンドを追加する。
なお、過去のファームウェアでは、ip tunnel remote addressコマンドが、トンネルのエンドポイントを指定するコマンドとして定義されたことがあるが、このファームウェアで仕様が変化するので注意する必要がある。
IP_ADDRESS ... | IPv4アドレス |
MASK ... |
xxx.xxx.xxx.xxx (xxxは10進数)
0xに続く16進数 マスクビット数 |
IP_ADDRESS ... | IPv4アドレス |
dhcp scopeコマンドで、スコープから除外するIPアドレスを範囲指定できるようにした。
スコープ番号 | 1-65535 |
範囲 | IPアドレス範囲 |
時間 | 1-21474836 or 'infinity' |
DHCPサーバとして動作する時のDHCPスコープを定義します。
(中略)
'except'に続けて、スコープから除外するIPアドレスを指定できる。除外するIPアドレスは、IPアドレスの範囲か、1つのIPアドレスを指定でき、また、それらを空白で区切って複数回指定することができる。除外するIPアドレスはスコープの範囲を超えたり、重複して指定する事はできない。
NAT、IPマスカレードでFTPのEPRT、EPSVコマンドに対応した。
nat descriptor masquerade ttl holdコマンドにパラメータ'auto'を追加し、かつ、'auto'をデフォルト値とした。
TYPE ... | TTLを同期させる方法
|
制御チャネルとデータチャネルからなるアプリケーションにおいて、データチャネル上でのデータ転送中に、対応する制御チャネルが消滅することによるデータ通信不良が発生しないようにするために、制御チャネルとデータチャネルの両IPマスカレードテーブルのTTLを同期させる方法を設定する。
autoと設定した場合には、ルータが自動認識可能なアプリケーションのコネクションに対応するテーブルのTTLを同期させる。
allと設定した場合には、同じホスト間の全てのコネクションに対応するテーブルのTTLを同期させる。
ftpと設定した場合には、FTPコネクションに対応するテーブルのTTLのみを同期させる。
allと設定した場合には、多くのテーブルのTTLが同期して、多くのテーブルが残留するために、内部リソースが枯渇することがある。autoと設定した場合に正常動作しないアプリケーションがあるときはallと設定しなければならない。
ping, ping6, traceroute, traceroute6コマンドは、従来は管理ユーザモードでないと実行できなかったが、一般ユーザモードでも実行できるようにした。これにより、複数のコンソールから同時に実行できるようになった。
IPsecで復号したパケットに対して、ICMPエラーを送るかどうかの動作を切替えられるようにした。
SW ... | on | IPsecで復号したパケットに対してICMPエラーを送る |
off | IPsecで復号したパケットに対してICMPエラーを送らない |
ICMPエラーには復号したパケットの先頭部分が含まれるため、ICMPエラーが送信元に返送される時にもIPsecで処理されないようになっていると、本来IPsecで保護したい通信が保護されずにネットワークに流れてしまう可能性がある。特に、フィルタ型ルーティングでプロトコルによってIPsecで処理するかどうか切替えている場合には注意が必要となる。
ICMPエラーを送らないように設定すると、tracerouteに対して反応がなくなるなどの現象になる。
このコマンドが実装される以前の動作は、ノーマルパスではoff、ファストパスではonであった。
IPv6で、グローバルユニキャストアドレスとして利用できるアドレス空間を拡張した。RFC3513 2.4の記述に従って、次のように区別する。
::/128 | 未指定アドレス |
::1/128 | ループバックアドレス |
ff00::/8 | マルチキャストアドレス |
fe80::/10 | リンクローカルユニキャストアドレス |
fec0::/10 | サイトローカルユニキャストアドレス |
上記以外 | グローバルユニキャストアドレス |
TELNETなどのTCPアプリケーションにおける脆弱性の問題に対応した。
MMI関係で以下のバグを修正した。
ルータのDISCARDポートに接続された時にログに"DESCARD"と表示されるバグを修正した。
queue INTERFACE typeコマンドで、インタフェース毎に対応していない方式はオンラインヘルプで表示されないようにした。対応している方式は以下の通り:
LAN | fifo, priority, shaping |
PP | fifo, priority, cbq, wfq |
dhcp server rfc2131 compliantコマンドで、パラメータを'except'だけ指定した時にコマンドがエラーにならないバグを修正した。
また、dhcp server rfc2131 compliantコマンドを設定し、show configで表示すると意味は同じだが設定したそのままではない表示になることがあるのも修正した。例えば、従来はパラメータを'on'とした場合と、個別の機能をすべて列挙した場合が区別されず、どちらもshow configでは'on'と表示されていた。表示だけの問題であり、動作には影響は無い。
remote setup acceptコマンドで、いったんコマンドを設定し、そのコマンドをno remote setup acceptコマンドで削除し、再度remote setup acceptコマンドを設定すると、不正なメモリ解放が行なわれ、その後の動作が不安定になることがあるバグを修正した。不正なメモリ解放後の動作は特定できない。
wol sendコマンドをschedule atコマンドで実行しようとすると、最初の1回しか実行できないバグを修正した。
TFTPで、clear configurationコマンドを含むファイルを受信しても、lan typeコマンドだけが削除されないバグを修正した。
speedコマンドで、LANインタフェースの場合は設定できる速度の範囲を1k〜100Mに制限した。従来は、上限のチェックが不十分だった。
IPv6 over IPv6のIPsec ESPトンネルで、プロトコル識別子として間違って4(IP)を利用していたのを、41(IPv6)に修正した。
この修正が入っていないリビジョンのファームウェアとは、IPv6 over IPv6 ESPトンネルで相互接続ができなくなる。
IPv6のIKEで、aggressive modeやbase modeで送信するIDの型がID_IPV6_ADDR(5)ではなく、ID_IPV4_ADDR(1)になるバグを修正した。このとき、IDの内容は不正なIPv4アドレスとなる。ヤマハルータだけを使う場合には問題にならないが、他社製品と接続するときには、接続できない可能性がある。
ipsec ike local/remote idコマンドでIPv6ネットワークを設定したときに、送信するIDの型がID_IPV6_ADDR_SUBNET(6)ではなくID_IPV6_ADDR(5)になるバグを修正した。結果として、quick modeが確立しなくなる。
ipv6 INTERFACE addressコマンドで設定したIPv6アドレスをno ipv6 INTERFACE addressコマンドで削除すると、高い確率で、他のIPv6アドレスが無効になるバグを修正した。この問題が発生すると、IPv6パケットを送受信できなくなるが、show ipv6 addressコマンドなどの表示では異常を確認できない。
IPv6の近隣キャッシュエントリーが、上限数に達してしまうと、登録されている最も小さなIPv6アドレスのエントリーを削除してしまうバグを修正した。上限に達していた場合は、最も古いエントリーを削除するこことで、新しいエントリーを追加できるようにした。
また、インタフェースごとに50となっていたエントリーの上限数を、256に変更した。
IPv6でRIPngを利用している時、他のルータから経路の削除を通知されても、それを別のインタフェースにtriggered updateできないバグを修正した。
定期の経路広告では削除が通知さるのでLANインタフェースでは経路削除が伝わるのが遅れるだけに見えるが、PPインタフェースで、ipv6 rip connect/disconnect sendコマンドをupdateに設定している時には定期の経路広告そのものを行なわずtirggered updateだけを送信する仕様なので、経路の削除ができなくなってしまう。
IPv6で、正常なDAD NS受信直後に、無効なNSを受信してしまうと、正しくDADが行えない場合があるのを修正した。
一つのインタフェースに対して、同じプレフィクスを持つ複数のIPv6アドレスを設定し、一方をno ipv6 addressコマンドで削除するとそのプレフィクスに対するimplicit経路が消えてしまうバグを修正した。
IPv6のRIPngで、ipv6 INTERFACE rip receive offと設定すると、RIPngの受信だけではなく、送信も止まってしまうバグを修正した。
ルータのTELNETサーバ機能で、クライアントから接続された時に、クライアントがTELNETプロトコルの処理を行なわないでいると、30秒でタイムアウトして切断するようにした。
従来は、クライアントがTELNETプロトコルの処理を行なうか、あるいはクライアントからTCPを切断しないと処理が先に進まず、他のクライアントからのTELNET接続を受け入れることができなかった。
ルータ上の以下のアプリケーションがTCPクライアントとして動作する時に、TCP接続手順(3ウェイ・ハンドシェイク)実行中にメモリリークする場合があるのを修正した。
TCP接続手順実行中に文字入力を行なうと、1文字につき約20〜30バイト程度のメモリリークが発生する。
TCP接続手順実行中に^Cで操作をキャンセルすると、約20〜30バイト程度のメモリリークが発生する。
TCP接続手順実行中に、約20〜30バイト程度のメモリリークが発生することがある。メモリリークが発生するかどうかは内部状態により変わり、条件を特定することは困難である。
TELNETでルータにログインし、更にそこから他のルータへTELNETもしくはリモートセットアップでログインしている時に、show configやshow logなどで大量のデータを表示しようとすると、データが正しく表示されないことがあるバグを修正した。
リモ−トセットアップでログインしている時に、show configやshow logなどで大量のデータを表示しようとすると、表示が止まってしまうことがあるバグを修正した。
IPsecトンネル内でRIPなどの動的ルーティングプロトコルを流し、かつIPsecの相手側のセキュリティゲートウェイへの経路を静的に設定していない場合、自分側のセキュリティゲートウェイとなっているLANポートでケーブルを抜き差しするとリブートすることがあるバグを修正した。
IPsecトンネルでOSPFを動作させている時に、トンネルに向けた静的経路をhide指定してかつOSPFで広告していると、トンネルがダウンした時にメモリリークが発生するバグを修正した。リークするメモリは1経路あたり約100バイトとなる。
IKEで、SAの数が上限に達したときに、本来は過剰な情報を解放してメモリの圧迫を抑制するが、実際にはこの機構が不完全で、一部の情報を保存しようとするバグを修正した。この状態が継続するとメモリの使用率が上昇し続けて、やがてはリブートする。過剰に保存するメモリの量は、状態によって大きく変動するが、1回の鍵交換につき、おおよそ300〜1300キロバイトである。なお、メモリリークではないので、ipsec refresh saコマンドやipsec sa delete allコマンドを実行すると正常な状態に戻る。
SAの数の上限はトンネルインタフェースの数の10倍になる。例えば、RTX1000のトンネルインタフェースの数は30なので、SAの数の上限は300である。
IKEで、SAを生成した後でIPsecの設定を変更したり、ipsec refresh saコマンドを実行すると、メモリリークするバグを修正した。リークするメモリの量は一定ではないが、平均的には150〜300バイト程度である。
IKEのリモートアドレスをホスト名で設定した時に、名前解決が正常に行えない場合に、show ipsec saコマンドを実行するとコンソールがハングアップしてしまうバグを修正した。
BGPで、bgp exportコマンドで他のプロトコルへ広告する経路のフィルタを設定しており、BGPとOSPFで同一の経路を受信している時に、動作中にbgp preference コマンドでプリファレンス値を変更しても、bgp configure refreshコマンドだけではBGPとOSPFで受信している同一の経路のプリファレンス値の比較にコマンドの設定が利用されず、ルータを再起動しないと有効にならないバグを修正した。
BGPで、自身のholdtimeの設定が20秒以上の場合、peerから20秒未満のholdtimeを提示されてもそれを受け入れず、最低20秒で動作してしまうバグを修正した。このバグのため、peerのholdtimeが6秒以下になっている場合には、頻繁にBGPセッションが切れることになっていた。
BGPで、bgp nerighborコマンドでhold-time=offと設定してキープアライブを使わない設定にした場合に、相手も同じ設定になっていないとキープアライブを使わない動作を行なわないバグを修正した。
フレームリレー回線の3対地以上のフルメッシュ構成で、インタフェースタイプをpoint-to-multipointとしてOSPFを動作させている場合で、既存の対地間で隣接関係が確立している時に新たに対地を追加すると、新たに追加されたルータでは最初に隣接関係が確立できたルータ以外のルータと隣接関係が確立できないバグを修正した。隣接関係が確立できないルータが抱える経路などは隣接関係が確立できたルータ経由として認識されてしまう。
OSPFのパケットログで、受信パケットのインタフェースが正しく表示されないことがあるバグを修正した。
ospf areaコマンドでOSPFエリアが設定されていない時に、ospf area networkコマンドまたはospf area stubhostコマンドを設定しようとするとエラーになるようにした。従来は、対応するospf areaコマンドが自動的に設定されていた。
また、ip INTERFACE ospf areaコマンドでインタフェースで使用するOSPFエリアが設定されていない時に、ip INTERFACE ospf neighborコマンドを設定しようとするとエラーになるようにした。従来は、対応するip INTERFACE ospf areaコマンドが自動的に設定されていたが、その内容は間違っていた。
OSPFで、固定でIPアドレスが設定されているインタフェースが一つもなく、ルータIDとして利用できるIPアドレスが存在しない場合には、OSPFが動作しないようにした。無理に動作させようとしても以下のログを表示してOSPFは無効になる。
[OSPF] There is no usable IP address for router-id, OSPF disabled.
従来は、不定な値をルータIDとして使ってOSPFが動作していた。
OSPFなどの動的経路のプリファレンスを静的経路のプリファレンスよりも大きく設定し、静的経路にネットワークバックアップを設定する構成で、ネットワークバックアップが正常に動作しないバグを修正した。
例えば、ネットワークバックアップでゲートウェイが切り替わった後、動的経路が消えて静的経路が有効になる場合、本来は静的経路の従系のゲートウェイが有効になるはずであるが、実際は主系のゲートウェイが有効になる。
RIPについて、ip INTERFACE rip sendコマンドで指定したバージョンとは異なるバージョンのRIPリクエストを受け取った時に、それに対して応答してしまうバグを修正した。
また、ip INTERFACE rip receiveコマンドで受信するRIPのバージョンを指定していてもRIP1/2のどちらも常に受信してしまうバグを修正した。
RIPで受信した経路とまったく同じ経路をip routeコマンドで静的に設定すると、その後RIPで経路を受信しなくなっても内部的に経路が残ってしまい、静的経路をno ip routeコマンドで受信した時にその残ってしまった経路が浮かび上がってきてしまうバグを修正した。
RIPで、PPインタフェースに対しip pp rip hold routing onコマンドの設定がされている時、本来ならば回線が切断してもRIP情報は保持されるのでアップデートトリガはかからないはずだが、アップデートトリガが動作してしまい再度回線が接続されるバグを修正した。
pp backupコマンドやtunnel backupコマンドでバックアップ先をISDNとしている時に、バックアップの発呼が失敗しても再発信規制がかからないバグを修正した。
バックアップ機能で、主系がダウンしている時にlan/pp/tunnel/fr backupコマンドを設定しても、show status backupコマンドで表示される状態がmasterのままでバックアップに切り替わらないバグを修正した。
設定を保存して再起動したり,主系が一度アップしてからダウンすれば正常に動作を始める。
ip LANインタフェース proxyarp vrrpコマンドを設定していてかつ、VRRPのバックアップとして動作している時に、実IPアドレスに対するARP問い合わせに返事を返すことができないバグを修正した。
Rev.7.01.18, Rev.8.01.03でエンバグ。
IPsecとVRRPを併用する場合に、ipsec ike local addressコマンドでVRRPの仮想IPアドレスを設定していると、VRRPバックアップになった場合にSAは消去されるものの、トンネルインタフェースがダウンしたとは見なされず、アップしたままの状態になるバグを修正した。
インタフェースがアップしたままだとOSPFなどでの経路通知やhide指定した静的経路が無効にならないなどの影響がある。
VRRPで、間違って複数のLANインタフェースで同じVRRP仮想IPアドレスを設定している場合、仮想IPアドレスを間違えて設定したインタフェースでは必ずVRRPがマスターになる。その時に、正しく設定されているインタフェースがスレーブ状態であっても、そのインタフェースで受信した仮想IPアドレス問い合わせのARPに、実MACアドレスで返事を返してしまうバグを修正した。
例えば、以下のような設定の場合を想定する。
ip lan1 address 192.168.1.1/24 ip lan1 vrrp 1 192.168.1.100 ip lan2 address 192.168.2.1/24 ip lan2 vrrp 1 192.168.1.100
ここで、LAN2に設定したVRRPの仮想IPアドレスは間違っている。また、LAN1では他のVRRPルータがマスターになっており、このルータはスレーブ状態だとする。この時、LAN1で他のPCから192.168.7.100のARP問い合わせパケットが送信されると、VRRPマスタは仮想MACアドレス(VRRP IDが1なので、00:00:5e:00:01:01になる)で返事を返すが、このルータもスレーブであるにも関わらずLAN1の実MACアドレスで返事を返してしまう。
このような間違った設定を行なわない限り問題は発生しない。
VRRPで、非常に通信負荷が高い時にVRRPに関する内部タイマの動作が止まってしまい、以下のような状態になることがあるバグを修正した。
ip keepaliveコマンドで、新しい設定を追加したり、既存の設定を削除した時に、他のグループのキープアライブ状態が'up'に変化するバグを修正した。
ip keepaliveコマンドで、設定できるターゲット数は1グループ当たり10以下、すべてのグループの合計でRTX2000は500以下、それ以外の機種では100以下となっているが、個々のグループでのターゲット数は満足しているが、すべてのグループの合計は制限を超えているという時に、設定したターゲットのうちグループの合計を超えたものに対するキープアライブ動作が行なわれないバグがあったので、コマンドの設定時にすべてのグループの合計を超えている時はエラーになるようにし、グループの合計を超えるターゲットを設定できないようにした。
PIAFS通信を行なっている時に、show status ppコマンドでの受信パケット数とオクテット数、および、SNMPでのifInUCastPkts、ifInOctetsカウンタが実際の数値より少なく表示されるバグを修正した。
snmp trap link-updown separate-l2switch-port lan1コマンドの設定に関わらず、常にonと同じ動作になるバグを修正した。具体的には、LAN1ポートでのlinkUp、linkDownトラップが、各ポートのリンクアップ、リンクダウンのたびに送信されていた。offの場合には、linkUpトラップはすべてのポートがリンクダウンしている時にどれか1ポートでもリンクアップした時に、linkDownトラップはすべてのポートがリンクアップした時に、それぞれ送信されるのが正しい動作である。
SNMPのMIB変数で、system.sysContact、system.sysName、system.sysLocationをSNMPから設定しても、それがルータの設定としてshow configコマンドとして表示されなかったり、saveコマンドで保存できないことがあるバグを修正した。
NAT、IPマスカレードを利用している時に、パケットロスが多い環境だとFTPの処理でTCPシーケンス番号を正しく変換できなくなり通信できなくなることがあるバグを修正した。
NATまたはIPマスカレードの内側に設置されたFTPサーバが、ルータの外側アドレスを"227 Entering Passive Mode"のIPアドレスとして使用するように設定されていると、外部のftpクライアントからPASVモードでデータ転送を要求されたときに、NATまたはIPマスカレード機能がIPアドレスを誤変換して、データ転送出来ないバグを修正した。
LANインタフェースに対するimplicit経路とまったく同じ経路をip routeコマンドで設定し、その後no ip routeコマンドで経路を削除すると、implicit経路が復活せずに経路が消えてしまうバグを修正した。
経路が消えてしまった場合でも、再起動やLANインタフェースのケーブルの抜き差しで復活する。また、implicit経路よりip routeコマンドの設定の方が優先されるのは仕様である。
clear ip dynamic routingコマンドで動的経路プロトコルによる経路を削除する時に、本来は影響を受けないはずのtemporary経路がimplicit経路に変わったり、あるいは消えてしまうバグを修正した。
implicit経路に変わるのはPPP/IPCPにより割り当てられたリモート側のホスト経路が該当する。
消えてしまうtemporary経路は、PPP/IPCP/MS拡張により相手から入手したDNSサーバに対するホスト経路が該当する。
PPPoE接続状態をshow status ppで表示したときに、接続相手(英語表記ではAccess Concentrator)の後に直前の接続相手の一部が付加されて表示されることがあるバグを修正した。現在の接続相手よりも直前の接続相手のほうが長い名前のときに現象が発生していた。
no pp always-onコマンドを設定したときに、PPPoEのコネクションを切断しないバグを修正した。なお、pp always-on offコマンドを設定したときには、コネクションを切断している。
syslog hostコマンドでSYSLOGを送信する設定にしている時に、SYSLOGを送信しようとしたパケットのために何らかのSYSLOGが送信される、という状態が発生すると、ルータがリブートしてしまうバグを修正した。そのような状態のSYSLOGは送信するのを止めるようにした。
動的フィルタでTCPコネクションを通過させるとき、3ウェイハンドシェイクの2つ目のパケット(SYN+ACK)がルータを通過してから端末に届くまでの間に消滅すると、それ以降、このコネクションに関係するすべてのパケットを破棄するバグを修正した。表面的な現象としては、TCPコネクションが接続できないように見える。なお、この問題の影響を受けるのは、パケットが破棄されたコネクションに限られる。すでに確立済みのコネクションや、新しいコネクションが影響を受けることはない。
DNSリカーシブサーバ機能で、dns staticコマンドによりCNAMEレコードが登録されている名前に対するAAAAの問い合わせに対して正しく返事を返せないことがあるバグを修正した。
PPインタフェースを経由するIPv4 over IPv4トンネルの通信を行っている状態で、そのPPインタフェースをpp disableコマンドにより無効にすると、トンネル経由で送信すべきパケットが発生したときにリブートするバグを修正した。
相手側のトンネルインタフェースの端点への経路がPP経由になっているか、自分側のトンネルインタフェースの端点としてPPインタフェースのIPアドレスを使用している場合に現象が発生していた。
ISDNで、isdn call permit offとして発呼を禁止している相手先で、相手から着信してPPPのネゴシエーションをしている間に相手先へのパケットが発生すると、PPPのネゴシエーションを途中で中断してしまい接続できないバグを修正した。接続できないのはその時の着信だけで、次の着信では同じようなタイミングでパケットが発生しなければ正しく接続できる。
PP Anonymousで、名前によるルーティングを設定している時に、その名前のユーザで回線が接続すると、名前の文字列と同じサイズのメモリがメモリリークするバグを修正した。
ISDNのMSCBCPコールバック接続で、こちらからのコールバック要求のための接続は成功したが相手からのコールバック接続がなかった時に、最初のコールバック要求の課金ログが2回表示されるバグを修正した。実際には1回しか課金されていない。
ISDNで、対応しているBチャネルの数より多くの発呼要求を受け取ると、即座に発呼できない要求はいったんルータ内に保持され、他の呼が切断されるのを待つことになるが、その時にメモリリークするバグを修正した。1つの発呼要求あたり約40バイト程度メモリリークする。
PPPのProtocol-Rejectを送信する際に、送信しようとするフレームのサイズが1500byteを越えているとリブートしてしまうバグを修正した。
また、ISDNでの通信中に、saveコマンドを実行すると不正なフレームを送信してしまうバグを修正した。
PPTPキープアライブのログを出力する設定のときに、Echo Replyを1回しか返していないのに2回返したように表示されるバグを修正した。
PPTPサーバ同士で接続しようとしたときにエラーとならず、その後、再起動するまでPPTP接続ができなくなるバグを修正した。この修正後は、以下の場合にPPTPサーバ同士の接続と見なしエラー終了するようになる。
PPTPクライアント同士で接続しようとしたときにエラーとならずに接続できてしまうバグを修正した。また、このような接続を繰り返していると、突然PPTP接続ができなくなり再起動しないと直らないというバグを修正した。この修正後は、PPTPクライアント同士を接続しようとしたときにはエラーで接続できなくなる。
PPTP接続中に高負荷のためシステム内部のリソース枯渇が発生したときに、LANのアクセスができなくなる可能性を低くした。
RTX1000で、ファストパスを利用する設定になっている時に、LAN分割したインタフェースのうちlan1.2〜1.4のいずれかでPPPoEを利用する設定で、lan1.1のリンクがダウンしている時には、PPPoEセッションを張ることはできるが、実際の通信ができないというバグを修正した。
RTX1000で、ISDN回線に対するppで、pp always-onコマンドがonと設定されている時に、ISDNケーブルが接続されていない時には、ケーブル抜けを検出してから再発信を行なうまでに10秒の間を置くようにした。
従来は間を置かずに発信動作を行なっていたため、CPU使用率が100%に張りついてしまっていた。
RTX1000で、LAN3インタフェースに対してlan typeコマンドで設定を変更した時に、接続相手と設定が合わずにリンクダウンした場合でも、show statusコマンドでの表示がリンクアップのままになるバグを修正した。
RTX1000で、ネットボランチDNSのリトライ機能で更新失敗後にリトライしないことがあったのを修正した。netvolante-dns retry intervalコマンドの設定を変更してから指定した時間の間にプロバイダに再接続した場合に発生しやすい。
また、IPフィルタでTCP 2002を通さないようにするなどして、ネットボランチDNSサーバとのTCP接続ができない場合、エラー内容をINFOログに表示するようにした。
RTX1000で、isdn auto disconnectコマンドを入力できないようにした。このコマンドが有効に働くのはNetVolanteシリーズとRTV700だけである。
RTX1000で、MPインタリーブ機能を利用するよう設定していても、それが機能しないことがあるバグを修正した。
RTX1000で、LAN1をLAN分割機能で分割した時に、SNMPで分割されたインタフェースを正しく取り扱えないバグを修正した。
RTX1000で、PP anonymousでのISDNの通信の状態が接続中になっても、プライベートMIBのMIB変数、yrIfIsdnStatusの値が切断中のままから変化しないバグを修正した。
RTX1000で、PP anonymousでMPを使う設定の場合で、回線が切断された時に接続元ユーザ名をSNMPトラップで送信できていないバグを修正した。MPを使わない場合には正しくSNMPトラップを送信できていた。
RTX1000で、lan type lan1 port-based-ks8995m=onコマンドで、LAN1の各ポートを独立のLANインタフェースとして扱えるようにした時に、ポートのリンク状態と分離したLANインタフェースのリンク状態が正確に一致していないことがあるバグを修正した。
具体的には、若番のポートがリンクアップしていると、それ以降のポートはリンクアップしていなくてもリンクアップしているように扱われていた。また、2〜4番ポートのいずれかがリンクアップしていると1番ポートも無条件にリンクアップしているものと扱われていた。
これにより、分離したLANインタフェースに対するimplicit経路の有無や、VRRPの状態などが正しく扱われないことがあるバグが修正される。
RTX1000で、lan typeコマンドには物理LANインタフェース名しか利用でき ないように修正した。
RTX1000の不正アクセス検知機能で、フラグメントパケットを検査するときには、それらのパケットを再構成するが、このときにIPヘッダのチェックサムが不正な値になるバグを修正した。もし、再構成したパケットがルータの外に出るときに再びフラグメントされるならば、そのときにチェックサムを修復するので問題とはならないが、フラグメントされずに送信されると、通信が停止するなどの問題につながる。
RTX1000で、LAN1のMACアドレスと同じMACアドレスを送信元とするパケットをLAN1で受け取ると、その後LAN1でのパケット受信動作が停止してしまうことがあるバグを修正した。
RTX1000で、PP anonymousで複数接続している時に、disconnect anonymousコマンドを実行しても1つしか切断しないバグを修正した。
RTX1000で、SNMPで"LAN4"、"LAN5"、"LAN6"というインタフェースがあるかのように動作するバグを修正した。RTX1000のLAN1分割機能の実装に伴うエンバグ。
RTX2000で、TFTPで設定ファイルを直接ルータに書き込んだ時に、設定ファイルにclear configurationコマンドが含まれていると起動できなくなることがあるバグを修正した。
RTX2000で、QoSの設定が入っていない時に、LANインタフェースの送信キューの長さが無限になってしまっているため、送信インタフェースの速度が10Mになっているなどの場合にパケットが送信キューに溜りすぎて動作が不安定になるバグを修正した。
RTX2000で、トンネルバックアップが多数設定されており、それらがほぼ同時にバックアップに切り替わるような場合に、バックアップの切替え処理に時間がかかり、その間、バックアップには関係の無いパケットの送受信が一時的に停止することがあるバグを修正した。
RTX2000で、自分のインタフェースに付与されているローカルアドレスに対するホスト経路を、ip routeコマンドで静的に設定したり、あるいは動的経路制御プロトコルによって受信した場合、その経路はshow ip routeコマンドで表示できる経路制御テーブルに登録される。登録されることは問題ではなく、そのような状態でそのアドレス宛のパケットを受け取った場合でも、本来であればその経路は無視して自分宛として処理しなければならない。
しかし、RTX2000の場合、このような状態の時に経路制御テーブルに従ってパケットを転送してしまうバグを修正した。
RTX2000で、デフォルト経路が存在する時に、IPsecトンネルで受信したパケットの終点IPアドレスが255.255.255.255の場合にパケットを自分で受信せずにデフォルト経路に向けて転送してしまうバグを修正した。
このバグにより、IPsecトンネルでRIP1を動作させることができない場合があった。