概要
生存通知功能是指,连接着网络的路由器,向其他kyoten的路由器发送包含自己的名称和IP地址的数据包,通知可以正常通信的状态的功能。接收到通知数据包的路由器会在log中输出名称和IP地址,并保存。可以使用本功能来判断,WAN的IP地址非固定的kyoten的路由器和其他kyoten的路由器之间是否可以通信。
关于release
本文将以前实装的生存通知功能作为release1,本次新实装的生存通知功能作为release2。两者的功能概念虽然相同,但是命令体系,运行也没有互换性,请注意。
以后,如果没有特别说明,本文所写的生存通知功能都是release2。
release2的特点
以下列举release2的主要特点。
- 生存通知数据包使用UDP/8512号端口(源/目标相同)。
- 接收到生存通知的路由器,通过名称来识别发送源路由器。所以,发送生存通知的每个路由器必须设置固定的名称。
- 发送侧路由器和接收侧路由器都持有共享密钥和认证密钥,所以可以进行通知信息的加密和检测是否遭到了篡改。
- 在有多条相互通信的环境中,为了简化运维管理,在发送/接收设置中通过指定各自的识别号,可以做到同时设置多个对端了。成对的发送侧的发送设置和接收侧的接收设置中,必须指定相同的识别码。该设置识别码会包含在通知数据包中,因此接收侧对任意的通知数据包可以只设置一个接收设置。
- 以前要和schedule命令组合使用才能实现的通知的定期发送,现在通过发送设置的命令就可以执行了。
- 通知的IP地址原则上应该设置为发送生存通知数据包的接口的IP地址。该接口上设置了NAT或IP伪装的话,发送的通知数据包使用的是NAT/IP伪装设置的IP地址。
但是,使用unnumbered线路,发送生存通知数据包时,通知的是设置有IP地址的LAN接口中的LAN接口编号较小一方的IP地址。 - 接收的生存通知的信息可以用show status heartbeat2命令显示。
注意事项
- 为了使用本功能,发送侧和接收侧的路由器必须都支持本功能。和release1不能相互使用。关于支持的机型,固件版本,请参考「支持的机型和版本」。
- 在本功能中,不管线路的连接状态如何,都将尝试向指定的IP地址发送数据包。因此,使用ISDN线路时,可能会发生意想外的呼叫而进行收费。为了防止此情况,需要使用静态过滤,设置为在切断时不发送生存通知数据包。
关于设置,请参考「设置例」→「unnumbered连接的例」。 - 从本设备发送的生存通知数据包成为各种过滤的处理对象时,根据功能不同,通知数据包的IP报头的源地址可能会被当成0.0.0.0。在这些功能中,请将匹配的源地址指定为0.0.0.0。另外,上述动作中,运用上应该留意的功能如下所示。
- 过滤型路由
- 数据包转发过滤
- 生存通知数据包发送1次的话,用show status lanN/pp/tunnel 等命令显示的数据包计数会显示为2次,但是实际发送的通知数据包为1个。为了调查通知信息中包含的自身的IP地址,事先会在内部流转调查用数据包。调查用数据包在发送前就被丢弃。
- 接收到的生存信息,除了使用clear heartbeat2命令以外,变更以下的命令时也会被删除。
- heartbeat2 receive命令:只删除变更对象的使用接收设置识别码接收到的生存信息。
- heartbeat2 receive enable命令:删除所有的生存信息。
- heartbeat2 receive record limit命令:删除所有的生存信息。
支持的机型和版本
雅马哈RT系列中的以下的机型和固件中,支持生存通知功能 release2。
机型 | 固件 |
---|---|
RTX5000 | Rev.14.00.15以后 |
RTX820 | Rev.11.03.16以后 |
RTX1200 | Rev.10.01.20以后 |
RTX800 | Rev.10.01.20以后 |
详细
生存通知的设置和运行的流程
接收侧路由器(以下、路由器B:IP地址 10.0.0.1)的设置
首先进行生存通知接收侧的设置。这里指定的加密密钥,认证密钥和设置识别码必须和发送侧一致。
这时实际上还没有进行接收动作。这时需要使接收设置有效,使处于可接收生存通知的状态。
发送侧路由器(以下、路由器A:IP地址 172.16.1.254)的设置
其次,进行发送侧的设置。在发送设置中,指定和接收侧相同的加密密钥,认证密钥和设置识别码。还要设置发送时包含在通知信息中的自己的名称。
接下来,使发送设置有效。
之后,路由器A会定期的发送生存通知。这时,通知内容会加密并且附加认证信息。
另外,本例中的发送间隔为默认值30秒。可以使用heartbeat2 transmit interval命令来变更。
发送的通知数据包中含有以下的数据。
- 使用认证密钥(yamaha_auth)计算得出的摘要信息
- 名称(kyoten-1)
- 发送接口的IP地址(172.16.1.254)
- 通知设置的识别号
- 序列号/会话号(为了检测reply攻击)
- 应用程序头
这里,名称和IP地址为加密对象,含有序列号和应用程序头的信息为认证的对象。
接收到的通知内容的确认
接收侧可以用show status heartbeat2命令来查看目前为止接收到的通知信息。
开头的登记数表示「显示对象的登记数/当前的接收登记总数」。另外,接收间隔在2次接收到相同对端的生存通知时会显示。
另外,接收侧路由器上设置了heartbeat2 receive monitor命令,将监控设置有效的话,监控时间内没有收到通知时,输出syslog,发送SNMP Trap。另外,超过监控时间后,同一对端再次进行通知时,会输出显示生存通知再开的log。
MIB变量
以下的MIB変数可以通过生存通知的接收信息取得。
- yamahaRTIp
- yrIpHeartbeat2Table
接收的生存通知表的信息- yrIpHeartbeat2Entry
- yrIpHeartbeat2Index
表索引 - yrIpHeartbeat2Name
通知的名称 - yrIpHeartbeat2From
通知的IP地址 - yrIpHeartbeat2RecvTime
最后接收通知的时间 - yrIpHeartbeat2Interval
通知的接收间隔
- yrIpHeartbeat2Index
- yrIpHeartbeat2Entry
- Trap
- yrIpHeartbeat2Trap
指定期间内没有通知时发送
- yrIpHeartbeat2Trap
- yrIpHeartbeat2Table
命令
- 发送设置
- 接收设置
- 状态管理
通知名称的设置
[格式]
[设置值]
- NAME ... 生存通知中使用的名称(1~64字符/ASCII,1~32字符/Shift JIS)
[说明]
设置生存通知中本机的名称。
NAME不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。
[默认值]
无设置
通知设置的定义
[格式]
[设置值]
- TRANS_ID ... 通知设置的识别号(1..65535)
- CRYPTO_KEY ... 用ASCII字符串表示的加密密钥(1~32字符)
- AUTH_KEY ... 用ASCII字符串表示的认证密钥(1~32字符)
- DEST_ADDR ... 发送源路由器的IPv4地址,或者FQDN(用空格区分,可以指定4个)
[说明]
定义生存通知的定期的发送设置。以本命令设置的AUTH_KEY为基础,在通知数据包中附加上认证信息。另外,指定了CRYPTO_KEY时,会进一步加密通知内容。
对应的接收侧,在设置heartbeat2 receive命令时,RECV_ID和本命令的TRANS_ID必须一致。另外,CRYPTO_KEY、AUTH_KEY也必须一致。
本命令用语定义发送时最低限的必要的参数,并和TRANS_ID绑定。实际上,让发送处理有效,必须设置hertbeat2 transmit enable命令。
另外,为了分散多个通知设置的发送负载,对每个发送目标,从通知设置有效,到发送通知数据包为止的时间为随机生成(30秒以内)。
[默认值]
无设置
※目前,关于本命令的运行,已经确认了有一些问题。详细请参考已知的问题-1。
通知设置的有效化
[格式]
[设置值]
- TRANS_ID_LIST ... 想要有效的通知设置的识别号的列表
- 1个数字,或者以 - 分割的数字(范围指定),或者是这些的任意的排列组合(128个以内)
[说明]
从定义的通知设置中,指定想要有效的识别号。识别号的列表,通过空格分隔,可以最多指定128个。
指定'one-shot'关键字时,只执行一次TRANS_ID_LIST指定的各设置的通知处理。另外,这种形式的命令无法保存。
[默认值]
无设置
通知间隔的设置
[格式]
[设置值]
- TRANS_ID ... 通知设置的识别号
- TIME ... 通知间隔秒数(30..65535)
[说明]
指定TRANS_ID对应的通知设置的发送间隔。
省略TRANS_ID时,所有的通知设置都为适用对象。但是,会优先适用TRANS_ID个别指定的识别号。
[默认值]
30
发送通知时是否记录log的设置
[格式]
[设置值]
- TRANS_ID ... 通知设置的识别号
- SW
- on ... 发送的内容输出至syslog
- off ... 发送的内容不输出至syslog
[说明]
进行TRANS_ID对应的通知设置的log输出相关的设置。SW指定为'on'时,发送生存通知时,输出INFO级别的syslog。
省略TRANS_ID时,所有的通知设置都为适用对象。但是,会优先适用TRANS_ID个别指定的识别号。
[默认值]
off
接收设置的定义
[格式]
[设置值]
- RECV_ID ... 接收设置的识别号
- CRYPTO_KEY ... 用ASCII字符串表示的加密密钥(1~32字符)
- AUTH_KEY ... 用ASCII字符串表示的认证密钥(1~32字符)
[说明]
定义生存通知的接收设置。进行接收处理时,以基于通知数据包中包含的发送侧的设置识别号(TRANS_ID)为基础,相同的RECV_ID,使用本命令的设置进行解密,认证检查。
对应的发送侧在设置了heartbeat2 transmit命令时,TRANS_ID和本命令的RECV_ID必须一致。另外同样的,CRYPTO_KEY、AUTH_KEY也必须一致。
本命令用语定义接收时最低限的必要的参数,并和RECV_ID绑定。实际上,让接收处理有效,必须设置hertbeat2 receive enable命令。
[默认值]
无设置
接收设置的有效化
[格式]
[设置值]
- RECV_ID_LIST ... 想要有效的通知设置的识别号的列表
- 1个数字,或者以 - 分割的数字(范围指定),或者是这些的任意的排列组合(128个以内)
[说明]
从定义的接收设置中,指定想要有效的识别号。识别号的列表,通过空格分隔,可以最多指定128个。
[默认值]
无设置
接收间隔的监控设置
[格式]
[设置值]
- RECV_ID ... 接收设置的识别号
- TIME ... 监控时间
- 秒数(30..21474836)
- off ... 不监控接收间隔
[说明]
进行RECV_ID对应的接收设置的接收间隔的监控的设置。监控为有效时,在指定的时间内没有收到生存通知时,会输出INFO级别的syslog和发送SNMP Trap。
省略RECV_ID时,所有的接收设置都为适用对象。但是,会优先适用RECV_ID个别指定的识别号。
[默认值]
off
设置接收到通知时是否记录log
[格式]
[设置值]
- RECV_ID ... 接收设置的识别号
- SW
- on ... 接收的内容输出至syslog
- off ... 接收的内容不输出至syslog
[说明]
进行RECV_ID对应的接收设置的log输出相关的设置。SW指定为'on'时,接收到生存通知时输出INFO级别的syslog。
省略RECV_ID时,所有的接收设置都为适用对象。但是,会优先适用RECV_ID个别指定的识别号。
[默认值]
off
可以同时维持的生存信息的最大数的设置
[格式]
[设置值]
- NUM ... 生存信息的最大维持数(RTX5000:64..10000、其他机型:64..1000)
[说明]
设置可以同时维持的接收到的生存信息的最大数。生存信息数到达最大数时,将无法接收新的信息。这时可以通过clear heartbeat2命令删除不需要的信息。
[默认值]
64
生存通知的状态的显示
[格式]
[设置值]
- RECV_ID ... 接收设置的识别号
- STRING ... 字符串(1~64字符/ASCII、1~32字符/shift JIS)
[说明]
显示接收的生存通知的信息。
第1种格式显示维持中的所有信息。
第2种格式只显示指定的接收设置的接收信息。
第3种格式只显示通知名称中包含指定字符串的信息。
STRING中不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。
生存通知的状态的清除
[格式]
[设置值]
- RECV_ID ... 接收设置的识别码
- STRING ... 字符串(1~64字符/ASCII、1~32字符/Shift JIS)
[说明]
清除接收的生存通知的信息。
第1种格式清除维持中的所有信息。
第2种格式只清除指定的接收设置的接收信息。
第3种格式只清除通知名称中包含指定字符串的信息。
STRING中不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。
设置例
确认非固定地址的路由器的生存
网络构成
设置
- 路由器A
- 路由器B
路由器A的show status heartbeat2
unnumbered连接的例
网络构成
设置
- 路由器A
- 路由器B
路由器A的show status heartbeat2
SYSLOG信息一览
本功能输出的SYSLOG信息一览如下所示。另外,实际输出的各信息的前头会加上"[HEARTBEAT2] "的前缀。
级别 | 输出信息 | 内容 |
---|---|---|
INFO | Send to DEST_ADDR: NAME IP_ADDRR | 将含有自身的信息(NAME和IP_ADDR)的通知发送给了DEST_ADDR。 |
Cannot resolve the host name: FQDN | 无法解析发送目标指定的终端名(FQDN)。 | |
Cannot transmit: DEST_ADDR (FQDN) | 无法发送生存通知给DEST_ADDR(FQDN)。 | |
Received from NAME IP_ADDR | 接收到从含有NAME、IP_ADDR的信息的终端发送的生存通知。 | |
Not received for a given period: NAME IP_ADDR | 没有在监控时间内接收到从NAME、IP_ADDR的路由器发送的生存通知。 | |
Received IP address is changed from PREV_ADDR to NEW_ADDR : NAME | NAME的路由器通知IP地址从PREV_ADDR变更为NEW_ADDR。 | |
Resumed the receiving from NAME IP_ADDR | 接收到超过监控时间的对端再次发送的通知数据包。 | |
DEBUG | Digest is wrong : SRC_ADDR | 接收到SRC_ADDR的生存通知的摘要不正确。 |
Format is wrong : SRC_ADDR | 不能解析接收到SRC_ADDR的生存通知的内容。 | |
Detected duplicate session, ignored: NAME | 和上次的通知相同,丢弃。 |
已知的问题
- 生存通知的发送目标指定为FQDN时,可能无法通知
- heartbeat2 transmit命令用FQDN指定发送目标时,对那个终端可能无法发送通知。
为了更加可靠的通知,请用IP地址指定发送目标。
- heartbeat2 transmit命令用FQDN指定发送目标时,对那个终端可能无法发送通知。