PPバックアップ機能で、バックアップ先としてPPインターフェースを指定して常時接続の回線を使用する場合に、バックアップから復帰した直後にIPsecのSAを再構築できるようにした。従来はIKEキープアライブでトンネルインターフェースの切断を検知してからSAを再構築していたため、復帰してからIPsecの通信が可能になるまでに時間がかかっていた。今回の機能追加により、復帰してからIPsecの通信が可能になるまでの時間を10秒程度に短縮できる。この機能を利用するためには、pp backupコマンドで、ipsec-fast-recoveryオプションを設定する必要がある。
none ... | バックアップ動作をしない | ||||
PEER_NUM ... | バックアップ先としてPPを使用する場合の相手先情報番号 | ||||
ACTION ... | バックアップから復帰した直後にSAの再構築を実施するか否か
|
||||
INTERFACE ... | バックアップ先として使用するLANインターフェース | ||||
IP_ADDRESS ... | ゲートウェイのIPアドレス | ||||
TUNNEL_NUM ... | トンネルインターフェース番号 |
PPインターフェースが切断されたときにバックアップするインターフェースを指定する。バックアップ先のインターフェースがPPインタフェースの場合には、ipsec-fast-recoveryオプションを設定できる。このオプションでonを設定したときには、バックアップから復帰した直後にIPsecのSAをすぐに再構築するため、IPsecの通信が可能になるまでの時間を短縮できる。
このコマンドはPPインターフェースごとに設定できる。
PPインタフェースの切断を検知するためにpp always-onコマンドでonを設定する必要がある。専用線の場合にはpp always-onコマンドの代わりに、pp keepalive use lcp-echoコマンドを使用する。
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パケット全体の長さではない。
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パケット全体の長さではない。
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パケット全体の長さではない。
GATEWAY_ID ... | セキュリティ・ゲートウェイの識別子 | ||||||
SWITCH ... |
|
||||||
TYPE ... | キープアライブの方法
|
||||||
LENGTH .... | ICMP Echoパケットの長さ(64-1500) | ||||||
INTERVAL ... | キープアライブパケットの送信間隔秒数(1..600) | ||||||
COUNT ... | キープアライブパケットが届かない時に障害とみなすまでの試行回数(1..50) |
IKEキープアライブの動作を設定する。このコマンドの設定は、双方のルータで一致させる必要がある。
lengthパラメータで指定するのはICMPデータ部分の長さであり、IPパケット全体の長さではない。
SWITCH = auto |
TYPE = heartbeat |
LENGTH = 64 |
INTERVAL = 10 |
COUNT = 6 |
インタフェースの説明を設定しておく、descriptionコマンドを新設した。
INTERFACE ... | LANインタフェース名、'pp'、'tunnel' |
DESCRIPTION ... | 説明の文字列 |
インタフェースの説明を設定しておく。'pp'、'tunnel'を指示した時にはそれぞれ、pp selectあるいはtunnel selectで選択したインタフェースの説明となる。
設定内容は、インタフェースに対するshow statusコマンドで表示される。
OSPFで、状態遷移とパケットの送受信をログに記録することができるようにした。
LOG ... |
|
OSPFで受け取った経路をルータの経路テーブルに導入するかどうかを設定するコマンドを新設した。
OSPFで受け取った経路をルータの経路テーブルに導入するかどうか
FILTER ... | ospf export filterコマンドのフィルタ番号 |
OSPF経路を経路テーブルに導入する際に適用するフィルタ定義
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
ネットボランチDNSで自動更新に失敗した場合のリトライ間隔と回数を設定するコマンドを新設した。
INTERVAL ... | 60 - 300[秒], auto |
COUNT ... | 1 - 50 |
INTERVALに'auto'を設定した時には、自動更新に失敗した場合には30秒から90秒の時間をおいて再度自動更新を行なう。それにも失敗した場合には、その後、60秒後間隔で自動更新を試みる。
自動更新に失敗してから、指定した時間までの間に手動実行をした場合は、その後の自動更新は行なわれない。
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
IPv6でDAD(Duplicate Address Detection)の送信回数を設定できるようにした。
COUNT ... | 選択したインタフェースでのDADの再送回数(0..10) |
インタフェースにIPv6アドレスが設定されたときに、アドレスの重複を検出するために送信するDADの送信回数を設定する。ただし、0を設定した場合は、DADを送信せずにアドレスを有効なものとして扱う。
COUNT ... | 1 |
ARPが解決されるまでの間に送信を保留しておくパケットの数を制御するコマンドを新設した。
INTERFACE ... | LANインタフェース名 |
LEN ... | キュー長、0〜10000 |
ARPが解決していないホストに対してパケットを送信しようとした時に、ARPが解決するか、タイムアウトによりARPが解決できないことが確定するまで、インタフェース毎に送信を保留しておくことのできるパケットの最大数を設定する。
0を設定するとパケットを保留しなくなるため、例えばARPが解決していない相手にpingを実行すると必ず最初の1パケットは失敗するようになる。
pp always-onコマンドを設定していて、そのPPインタフェースに対応するISDN回線のケーブルが抜けているときに、短時間に多数の発呼を繰り返し、ルータの動作が不安定になるバグを修正した。このバグを改善するため、ケーブルの抜けを検出した場合には、10秒の時間が経過するのを待ってから再発呼するように仕様を変更した。なお、このバグが発生したときには、show environmentコマンドにおけるCPU使用率の表示が100%になる。
nat descriptor sipコマンドの初期値をoffからonに変更した。
show status ppコマンド、show status pptpコマンドで、PPTPの負荷を表示しないようにした。
RTX1000で、使用部品の変更に伴いシリアルドライバを変更した。
ping、ping6、traceroute、traceroute6コマンドを一般ユーザモードで実行できるようにした。これにより、複数のコンソールから同時に実行できるようになる。
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を受信し、受信内容に従った処理が行えるようにした。
IPsecで復号したパケットに対して、ICMPエラーを送るかどうかの動作を切替えられるようにした。
SW ... | on | IPsecで復号したパケットに対してICMPエラーを送る |
off | IPsecで復号したパケットに対してICMPエラーを送らない |
ICMPエラーには復号したパケットの先頭部分が含まれるため、ICMPエラーが送信元に返送される時にもIPsecで処理されないようになっていると、本来IPsecで保護したい通信が保護されずにネットワークに流れてしまう可能性がある。特に、フィルタ型ルーティングでプロトコルによってIPsecで処理するかどうか切替えている場合には注意が必要となる。
ICMPエラーを送らないように設定すると、tracerouteに対して反応がなくなるなどの現象になる。
このコマンドが実装される以前の動作は、ノーマルパスではoff、ファストパスではonであった。
ネットボランチDNSで、登録・更新・削除に成功したときは、INFOレベルのsyslogを表示するようにした。また、登録・更新・削除に失敗した理由を表示するsyslogのレベルを、DEBUGレベルからINFOレベルに変更した。
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
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などで受け入れられた経路だけを表示する。
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を通過するSIPパケットについて、SDPのo=行のIPアドレスをNATで変換するようにした。
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バイトになるように処理されている。
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で設定を送り込むときに発生する。
PPTPメッセージの後ろにデータが含まれるIPパケットをPPTPパススルー機能で処理したときに、リブートすることがあるバグを修正した。1つのIPパケットに複数のPPTPメッセージが含まれる場合には、最初のPPTPメッセージのみを処理する。
IPsecで、対向のセキュリティゲートウェイへの経路を静的にフィルタ型経路で指定していると、IPsecで暗号化するパケットをファストパスで処理する場合にフィルタ型経路を正しく評価できず、必ず一番最初に記述したゲートウェイに送信してしまうバグを修正した。
IPsecで、対向のセキュリティゲートウェイへの経路がフィルタ型経路になっているときに、ノーマルパスで扱うパケットが正しいゲートウェイを選択できず、フィルタで示されるのとは異なるゲートウェイに転送されることがあるバグを修正した。
IPv6のIPsecで、ipsec ike local addressコマンドを設定していないときに、AHのトンネルモードで通信できないバグを修正した。
ppp ccp no-encryption rejectコマンドを設定しているときに、PPTPで、CCP以外のNCPのネゴシエーションが失敗しても接続を拒否しないようにした。これにより、ppp ccp no-encryption rejectコマンドを設定しているときに、Mac OS X 10.3でPPTPの接続ができない問題が解消される。
RFC2637で規定されていないPPTPメッセージを受信したときに、ルータの動作が不安定になる可能性があるのを修正した。
PPTPで、接続の開始時や終了時にルータの動作が不安定になることがあるのを修正した。
PPTPで、現在接続中の同じ相手から再びOutgoing-Call-RequestやIncoming-Call-Requestを受信したときに、強制的に接続を終了するようにした。修正前は正しく処理をしていなかったため、show status ppコマンドの表示で、接続中と表示されていた。
nat descriptor masquerade staticコマンドで指定した内側IPアドレスの機器から外部の機器に対してtracerouteを実行できないバグを修正した。ICMPパケットのデータ部分に設定されているIPヘッダ部分がIPマスカレードで変換されていなかったことによる。
IPマスカレードで、外部のホストからIPマスカレードの外側IPアドレスに対してpingを受信したとき、ICMPに対する静的IPマスカレードが設定されていない限りは、ルータ自身が返事を返し、ICMPパケットを内側へ転送しない仕様になっているが、実際には、ICMPパケットを内側へ転送してしまうことがあるのを修正した。
SIP-NAT機能において、インタフェースの外側から受信したREGISTERリクエストに対するレスポンスについて、Contactヘッダ内のIPアドレスも変換できるようにした。
NATディスクリプタで、TCPの静的IPマスカレードが動作しなくなることがあるのを修正した。NATに関係する設定を再び投入すると正常な状態に復帰する。
ip routeコマンドで複数のゲートウェイを設定している静的経路で、先頭のゲートウェイの状態がhideになっているが、後続のゲートウェイが有効でパケットを転送できる状態であるという設定になっているときに、その経路が、起動直後に動的経路プロトコルで配布されないバグを修正した。経路の設定を変更すると、経路が配布されるようになる。
MLDプロキシによるマルチキャストパケットの転送で、一部の出力インタフェースに対してファストパスで転送し、残りの出力インタフェースに対してノーマルパスで転送するときに、リブートする可能性を排除した。実際にリブートが発生する事象は見つかっていない。
ipv6 multicast routing processコマンドの引数としてfastを設定しているときに、設定が有効にならず、IPv6マルチキャストのファストパスが動作しないことがあるのを修正した。具体的には次の手順で発生する。
MLDプロキシの経路情報の出力インタフェースとして、ファストパスに対応するインタフェースを登録する。例えば、LANインタフェースがこれに該当する。
1の経路の出力インタフェースとして、ファストパスに対応しない出力インタフェースを追加する。例えば、PPPoEを除くPPインタフェースやトンネルインタフェースがこれに該当する。
なお、問題の発生したインタフェースのリンクを切断して再び接続すると、正常な状態に復旧する。
WWWブラウザ設定支援機能のIPsecを設定するページで、テーブルの書式が他のページと異なっているのを修正した。
管理パスワードを設定した状態でWWWブラウザ設定支援機能を使用したときにリブートする可能性があるのを修正した。
show logコマンド、あるいはless logコマンドで、コマンドを実行中に何もキー入力を行わない状態にし、ログインタイマがタイムアウトしログアウトするということを3回繰り返すと、その後、show log/less logコマンドを実行しても何もログが表示されないようになるバグを修正した。
「コマンドを実行中」とは、show logコマンドの場合は、画面の最終行に「---つづく---」あるいは「---more---」が表示されている状態を、less logコマンドの場合は最終行に「:」が表示されている状態を指す。
RTX1000のLAN3インタフェースで、設定不一致などでオートネゴに失敗した後は設定に関わらず半二重モードでリンクアップする場合があるが、いったんそうなるとその後、再起動したり、あるいはlan typeコマンドを再投入しない限り、必ず半二重モードになってしまうバグを修正した。
このバグの修正後は、ケーブルの抜き差しなどで一度リンクダウンを行うことで、lan typeコマンドの設定が正しくリンク状態に反映されるようになる。
ファストパスでSMTPプロトコルの動的フィルタを使用したときに、SMTPコネクションが正常に終了しても、動的フィルタの管理するコネクションとして長時間生存し続けるバグを修正した。SMTPコネクションの生成と消滅が数多く発生する状況下では、システムの処理性能が低下して、内部リソースの枯渇によりリブートすることがあった。
PIAFSで、データの受信中にルータがハングアップしたりリブートする可能性を排除した。
状態メール通知機能で送信するメールのヘッダにLFのない行があるのを修正した。
WWWブラウザ設定支援機能について、次のバグを修正した。
状態メール通知機能で、メールのサブジェクトが全角2文字以下の場合、送信するメールのサブジェクトが空欄になるバグを修正した。
IKEのSAの寿命値の減少が実際よりも遅くなるバグを修正した。Rev.8.01.12でエンバグしている。
IKEで、SAの数が300に達したときに、本来は過剰な情報を解放してメモリの圧迫を抑制するが、実際にはこの機構が不完全で、一部の情報を保存しようとするバグを修正した。この状態が継続するとメモリの使用率が上昇し続けて、やがてはリブートする。過剰に保存するメモリの量は、状態によって大きく変動するが、1回の鍵交換につき、おおよそ300〜1300キロバイトである。なお、メモリリークではないので、ipsec refresh saコマンドやipsec sa delete allコマンドを実行すると正常な状態に戻る。
IPsecとVRRPを併用する場合に、ipsec ike local addressコマンドでVRRPの仮想IPアドレスを設定していると、バックアップになったときにSAが消去されるものの、トンネルインタフェースがダウンしたとは見なされず、アップしたままの状態になるバグを修正した。インタフェースがアップしたままだとOSPFなどでの経路通知やhide指定した静的経路が無効にならないなどの影響がある。
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が確立しなくなる。
ルータの動作中にIPsec関係の設定変更を行うと、その後の動作が不安定になることがあるのを修正した。設定しているトンネルモードやトランスポートモードの設定が多いほど発生しやすい。設定後に再起動すれば、この問題を回避できる。
IPsecトンネルでRIPなどの動的ルーティングプロトコルを流し、かつIPsecの相手側のセキュリティゲートウェイへの経路を静的に設定していない場合、LANポートのケーブルを抜き差しするとリブートすることがあるのを修正した。
IPv6 over IPv6のIPsec ESPトンネルで、プロトコル識別子として間違って4を利用していたのを、41に修正した。この修正によって、古いファームウェアとの間で、IPv6 over IPv6 ESPトンネルの互換性がなくなる。
ipsec ike remote/local name コマンドで「"」、「#」、「 」などの特殊な文字を含んだ文字列を設定して再起動をすると、設定が正しく保存されず、show configコマンドを実行しても正しく表示しないバグを修正した。
IPv6の近隣キャッシュのエントリが50に達したとき、本来は最も古いエントリを削除しなければならないが、実際にはIPアドレスが最小のエントリを削除するバグを修正した。また、エントリの最大数を、50から256に変更した。
RIPngで、ipv6 INTERFACE rip receive offと設定すると、RIPngの受信だけではなく、送信も止まるバグを修正した。
RIPngで、他のルータから経路の削除を通知されても、それを別のインタフェースに対してすぐに広告しないバグを修正した。定期の経路広告があれば、やがては削除の通知は広告されるが、PPインタフェースで、ipv6 rip connect/disconnect sendコマンドをupdateに設定しているときには定期の経路広告がないので、経路が削除されない。
IPv6の重複アドレス検出で、不正な近隣要請(Neighbor Solicitation)を受信すると、重複アドレス検出に失敗するバグを修正した。
1つのインタフェースに対して、同じプレフィクスを持つ複数のIPv6アドレスを設定し、一方をno ipv6 addressコマンドで削除するとそのプレフィクスに対するimplicit経路が消えるバグを修正した。
IPv6のルータ要請を受信してから、ルータ広告を返送するまでの間に、新しいルータ要請を受信すると、ルータ広告を送信するタイミングが遅れるバグを修正した。多数の端末から一度に大量のルータ広告を受信する環境では、このバグによって、端末がルータ広告を受信できなくなることがある。
show ipv6 rip tableコマンドで、不要なパラメータを付けてコマンドを実行してもエラーとして扱わないバグを修正した。
MLDの処理で使用するタイマーについて、タイマーが満了するまでにかかる時間が、実際よりもわずかに長くなるバグを修正した。
LAN分割機能を設定したときに、lan1.2、lan1.3、lan1.4でマルチキャストパケットを受信できないバグを修正した。Rev.8.01.12でエンバグしている。
LAN分割機能で、lan1.2〜1.4のいずれかでPPPoEを利用するように設定し、ファストパスを利用するとき、lan1.1のリンクがダウンしていると、lan1.2〜1.4の各インタフェースでは、PPPoEのセッションを張ることはできるが、実際の通信ができないというバグを修正した。
TELNETでルータにログインし、show logコマンドで大量のログを表示しようとするとリブートするバグを修正した。show log以外のコマンドでも、大量の出力を発生するコマンドを実行すると、同じ問題が発生する可能性がある。
ospf areaコマンドでOSPFエリアが設定されていないときに、ospf area networkコマンドやospf area stubhostコマンドを設定しようとするとエラーになるようにした。従来は、対応するospf areaコマンドが自動的に設定されていた。また、ip INTERFACE ospf areaコマンドが設定されていないときに、ip INTERFACE ospf neighborコマンドを設定しようとするとエラーになるようにした。従来は、対応するip INTERFACE ospf areaコマンドが自動的に設定されていたが、その内容は間違っていた。
IPsecトンネルでOSPFを動作させているときに、トンネルに向けた静的経路にhideオプションを設定し、その経路をOSPFで広告していると、トンネルがダウンしたときに、メモリリークが発生するバグを修正した。リークするメモリは1経路あたり約100バイトである。
OSPFで、固定のIPアドレスが設定されているインタフェースが1つもなく、ルータIDとして利用できるIPアドレスが存在しない場合には、OSPFが動作しないようにした。無理に動作させようとしても以下のsyslogを表示してOSPFは無効になる。従来は、不定な値をルータIDとして使ってOSPFが動作していた。
[OSPF] There is no usable IP address for router-id, OSPF disabled.
OSPFの設定がないときに起動したときに、下記のsyslogを出力していたが、必要がないので、表示しないようにした。
[OSPF] There is no usable IP address for router-id, OSPF disabled.
フレームリレー回線の3対地以上のフルメッシュ構成で、インタフェースタイプをpoint-to-multipointとしてOSPFを動作させている場合で、既存の対地間で隣接関係が確立しているときに新たに対地を追加すると、新たに追加されたルータでは最初に隣接関係が確立できたルータ以外のルータと隣接関係が確立できないバグを修正した。隣接関係が確立できないルータが抱える経路などは隣接関係が確立できたルータ経由として認識されてしまう。
IP over IPトンネルをnumberedに設定してOSPFを動作させる設定で、設定を保存して再起動した後にshow status ospf interfaceコマンドを実行すると、numberedとunnumberedの2つのインタフェースが表示されるバグを修正した。
ospf import filterコマンドのフィルタのタイプとして、not include、not refines、not equalを使用して、複数のネットワークを指定した場合に、経路を導入するかどうか正しく判断できていなかったバグを修正した。
ospf export fromコマンドで経路をフィルタして受け入れない設定の場合に、受け入れるべき経路までフィルタされてしまうことがあるバグを修正した。
具体的には、別のOSPFルータを間に挟む形になっていて隣接関係にはなっていない2台のOSPFルータで、一方のOSPFルータのフィルタの設定が、他方のOSPFルータへ到達するための経路Aは受け入れないが、そのルータが広告している経路Bは受け入れるという設定の場合に、本来なら経路Bは受け入れなくてはいけないのに受け入れることができなかった。
BGPで、自身のholdtimeの設定が20秒以上の場合、相手から20秒未満のholdtimeを提示されてもそれを受け入れず、20秒で動作してしまうバグを修正した。このバグのため、相手のholdtimeが6秒以下になっている場合には、頻繁にBGPセッションが切れる。
bgp nerighborコマンドでhold-time=offと設定してキープアライブを使わない設定にした場合に、相手も同じ設定になっていないとキープアライブを使わない動作にならないバグを修正した。
BGPで、bgp exportコマンドで他のプロトコルへ広告する経路のフィルタを設定しており、BGPとOSPFで同一の経路を受信しているときに、動作中にbgp preferenceコマンドでプリファレンス値を変更しても、bgp configure refreshコマンドだけではBGPとOSPFで受信している同一の経路のプリファレンス値の比較にコマンドの設定が利用されず、ルータを再起動しないと有効にならないバグを修正した。
RIPで受信した経路と同じ経路をip routeコマンドで静的に設定し、その後、RIPの経路を受信しなくなってから静的経路を消すと、本来は消えているはずのRIPの経路が復活するバグを修正した。
ip INTERFACE rip sendコマンドで指定したバージョンとは異なるバージョンのRIPリクエストを受け取ったときに、それに対して応答してしまうバグを修正した。
ip INTERFACE rip receiveコマンドで受信するRIPのバージョンを指定していても、RIPv1/v2の両方のバーションのパケットを受信してしまうバグを修正した。
clear ip dynamic routingコマンドで動的経路プロトコルによる経路を削除するときに、本来は影響を受けないはずのtemporary経路がimplicit経路に変わったり、あるいは消えてしまうバグを修正した。
implicit経路に変わるのはPPP/IPCPにより割り当てられたリモート側のホスト経路であり、消えてしまうtemporary経路は、PPP/IPCP/MS拡張により相手から入手したDNSサーバに対するホスト経路である。
PP Anonymousインタフェースで、名前によるルーティングを設定しているとき、その名前のユーザで回線が接続するたびに、名前の文字列と同じサイズだけ、ルータの使用できるメモリが減少するバグを修正した。
PP anonymousで複数の相手先と接続しているときに、disconnect anonymousコマンドを実行すると、1つの相手先しか切断しないバグを修正した。
LANインタフェースに対するimplicit経路とまったく同じ経路をip routeコマンドで設定し、その後no ip routeコマンドで経路を削除すると、implicit経路が復活しないバグを修正した。再起動やLANインタフェースのケーブルの抜き差しで復活する。なお、implicit経路よりip routeコマンドの設定の方が優先されるのは仕様である。
ip routeコマンドでIPアドレスをゲートウェイとする静的経路を設定するときに、経路の出力インタフェースをコマンド投入時点での経路テーブルから検索する仕様になっており、一度インタフェースが確定すると、その後変更しないようになっている。しかし、この動作では、ゲートウェイが接続されているインタフェースに対するアドレスの設定よりも先にip routeコマンドを投入したときに、経路のゲートウェイが本来のインタフェースとは異なるインタフェースに向いてしまうことがある。そこで、インタフェースのIPアドレスが設定され、implicit経路が追加されたときには、インタフェースが確定している経路についても経路の検索をやり直すようにした。なお、以前のファームウェアでも、設定を保存して再起動すれば、経路は正しいインタフェースに向くようになっている。
[問題となる動作の例]
以下のような順序で設定した場合、192.168.100.0/24の経路はLAN1インタフェースへ向く。本来はLAN2インタフェースに向くべきである。
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
show status tunnelコマンドで、IPv6の送受信オクテットに間違った値が表示されることがあるのを修正した。
httpd hostコマンドで複数のLANインタフェースを設定したときにエラーとして扱わないバグを修正した。また、オンラインヘルプの文章を修正し、複数のLANインタフェースを設定できないことを明記した。
cold startの実行中にWWWブラウザ設定支援機能やTFTPを動作させると設定が残る可能性があるのを修正した。
コマンドのパラメータとして整数を指定する場合で、大きすぎる値を指定したときに、表示するエラーメッセージが正しくないバグを修正した。
TFTPで設定ファイルを直接ルータに書き込むときに、設定ファイルにclear configurationコマンドが含まれていると起動できなくなることがあるのを修正した。
PPPoEの状態をshow status ppコマンドで表示するときに、過去の接続相手(Access Concentrator)の文字列の一部が表示されることがあるのを修正した。
show ip rip tableコマンドで、不要なパラメータを付与しても、エラーとして扱わないバグを修正した。
snmp syscontact、snmp syslocation、snmp sysnameコマンドで、パラメータの位置でTABキーを入力すると「o」が表示されるバグを修正した。これらのコマンドのパラメータは任意の文字列なのでTABキーで補完されるキーワードは存在しない。
次のコマンドのオンラインヘルプの文章を修正した。
ipv6 routeコマンドで静的に設定していない経路に対してno ipv6 routeコマンドで経路を削除しようとしたときに、経路がないことを示すエラーメッセージを表示するようにした。
isdn auto disconnectコマンドを入力できるバグを修正した。
PIAFSで通信中のPPインタフェースについて、show status ppコマンドで表示する受信パケット数とオクテット数、SNMPのifInUCastPkts、ifInOctetsカウンタが実際の値よりも小さくなるバグを修正した。
no nat desciptor masquerade unconvertible portコマンドで、プロトコルとして何を指定しても、すべてのプロトコルの設定を消してしまうバグを修正した。
dns staticコマンドで、全く同じ内容を複数回入力すると、2回目以降の設定をエラーとして扱うバグを修正した。
show ip intrusion detectionコマンドで、インタフェースとしてLAN3を指定できないバグを修正した。
ip keepaliveコマンドで、設定できるターゲット数は1グループ当たり10以下、すべてのグループの合計で100以下となっているが、個々のグループでのターゲット数は満足しているが、すべてのグループの合計は制限を超えているというときに、設定したターゲットのうちグループの合計を超えたものに対するキープアライブ動作を行わないバグを修正した。コマンドの設定時に、すべてのグループの合計を超えているときはエラーになるようにし、グループの合計を超えるターゲットを設定できないようにした。
lan port-mirroring lan1コマンドで、offというパラメータを入力できないようにした。また、正しくないパラメータを与えられたときには適切なエラーを返すようにした。
コマンドの最大文字長である4095バイトで入力されたコマンドが、show configコマンドで正しく表示されないバグを修正した。
netvolante-dns get hostname list all コマンドを実行したときにリブートすることがあるのを修正した。
ネットボランチDNSのリトライ機能で、2回目以降のリトライで、netvolante-dns timeoutコマンドで設定した値が有効にならず、タイムアウト値がデフォルトの90秒で動作してしまうバグを修正した。
PPTPでキープアライブのsyslogを出力するように設定しているときに、実際の2倍のEcho Replyを送信しているように表示するバグを修正した。
PPTPで、順序が入れ替わったGREパケットを受信したときに、不正な応答のパケットを返すバグを修正した。また、順序の入れ替わったGREパケットを受信したときに、ログには「GRE Delayed ack number」または「GRE Delayed sequence number」と記録するようにし、show status pptpコマンドでそのような受信の回数を表示するようにした。
ISDNで、isdn call permit offとして発呼を禁止している相手先で、相手から着信してPPPのネゴシエーションをしている間に相手先へのパケットが発生すると、PPPのネゴシエーションを途中で中断してしまい接続できないバグを修正した。接続できないのはそのときだけで、次の着信では、同じようなタイミングでパケットが発生しない限り、正常に接続できる。
不正アクセス検知機能で、フラグメントパケットを検査するときには、それらのパケットを再構成するが、このときにIPヘッダのチェックサムが不正な値になるバグを修正した。もし、再構成したパケットがルータの外に出るときに再びフラグメントされるならば、そのときにチェックサムを修復するので問題とはならないが、フラグメントされずに送信されると、通信が停止するなどの問題につながる。
pp backupコマンドやtunnel backupコマンドでバックアップ先をISDNとしているときに、バックアップの発呼が失敗しても再発信規制がかからないバグを修正した。
パケットロスが多い環境で、NAT、IPマスカレードを利用すると、FTPの処理でTCPのシーケンス番号を正しく変換できなくなり、通信が停止することがあるのを修正した。
ルータのTELNETサーバ機能で、クライアントから接続された時に、クライアントがTELNETプロトコルの処理を行なわないでいると、30秒でタイムアウトして切断するようにした。従来は、クライアントがTELNETプロトコルの処理を行うか、あるいはクライアントからTCPを切断しないと処理が先に進まず、他のクライアントからのTELNET接続を受け入れることができなかった。
IPマスカレードを使用しているインタフェースにqueue type shapingコマンドを設定しているとき、そのインタフェースにおいて、外部から受けたpingに応答できないバグを修正した。また、それが繰り返し発生すると、やがて通信できなくなるという問題もあった。
nat descriptor masquerade incomingコマンドでdiscardを設定することで回避できる。
LAN1インタフェースのMACアドレスと同じMACアドレスを送信元とするイーサネットフレームをLAN1インタフェースで受信すると、その後、LAN1インタフェースでパケットを受信できなくなるバグを修正した。
バックアップ機能で、主系がダウンしている時にlan/pp/tunnel/fr backupコマンドを設定しても、show status backupコマンドで表示される状態がmasterのままでバックアップに切り替わらないバグを修正した。設定を保存して再起動したり、主系が一度アップしてからダウンすれば正常に動作を始める。
LAN3インタフェースに対してlan typeコマンドで設定を変更したときに、接続相手と設定が合わずにリンクダウンした場合でも、show statusコマンドでの表示がリンクアップのままになるバグを修正した。
wol sendコマンドをschedule atコマンドで実行しようとすると、最初の1回しか実行できないバグを修正した。
snmp trap link-updown separate-l2switch-port lan1コマンドで、設定に関係なく、常にonが設定されているように動作するバグを修正した。具体的には、LAN1ポートでのlinkUp、linkDownトラップが、各ポートのリンクアップ、リンクダウンのたびに送信される。
LAN分割機能を設定したときに、SNMPで分割されたインタフェースを正しく取り扱えないバグを修正した。
LANインタフェースで、能力以上のパケットを受信したときのパフォーマンスの悪化を軽減した。
syslog hostコマンドでsyslogを送信する設定にしているときに、syslogを送信しようとしたパケットのために何らかのsyslogが送信されるという状態が発生すると、ルータがリブートするバグを修正した。そのような状態ではsyslogを止めるようにした。
プライベートMIBで得られるインタフェース名が、LAN分割機能でのインタフェース名であるLAN1.1〜LAN1.4に対応していないバグを修正した。
ip INTERFACE proxyarp vrrpコマンドを設定していて、VRRPのバックアップとして動作している時に、実IPアドレスに対するARP問い合わせに返事を返すことができないバグを修正した。
ip vrrp shutdown triggerコマンドを設定するときに、パラメータが不足しているとリブートすることがあるのを修正した。
LAN3インタフェースに対してlan typeコマンドで設定を変更したときに、接続相手と設定が合わずにリンクダウンした場合でも、show statusコマンドでの表示がリンクアップのままになるバグを修正した。
ISDN 経由で発信するとき、ケーブル抜けの状態を検出したら10秒待ってから再発信するように変更した。従来は待たずに発信していたので、pp always-onコマンドでonを設定していると、短時間に多数の発信を繰り返していた。
あるホストが使っていたIPアドレスを他のホストが使用し始めたとき、ルータから送出するパケットがその新しいホストに届かないことがあるのを修正した。
終点IPアドレスがマルチキャストあるいはブロードキャストアドレスになっているUDPパケットを受信し、それを処理できないときに、従来はアドレスの種類に関わらずデバッグログに
can't receive UDP multicast packet
と表示していたが、これをブロードキャストアドレスの場合には
can't receive UDP broadcast packet
と表示するよう変更した。
シリアル経由のコンソールで、大量のデータを表示すると、ルータの動作が停止する可能性があるのを修正した。実際の現象は確認されていない。
帯域制御のキューにパケットが存在している状態でQoSの設定を変更すると、その後、パケットを送出しなくなるバグを修正した。
すでに設定されているフィルタ番号について、ipv6 filterコマンドを実行して設定を上書きすると、利用できるメモリが減るバグを修正した。
すでに設定されているフィルタ番号について、ip filter dynamicコマンドを実行して設定を上書きすると、利用できるメモリが減るバグを修正した。
nat descriptor logコマンドを設定した後で、TFTPでclear configurationコマンドを実行しても、nat descriptor logコマンドの設定が消えないバグを修正した。
account thresholdコマンドでインタフェース名を指定して課金額を制限したとき、実際には発信を制限しないバグを修正した。
ディレクティッドブロードキャストパケットを動的フィルタで処理しようとするとリブートするバグを修正した。
scheduleコマンドが実行されないことがあるバグを修正した。Rev.7.00.11でエンバグした。