生存通知功能 release2

概要

生存通知功能是指,连接着网络的路由器,向其他kyoten的路由器发送包含自己的名称和IP地址的数据包,通知可以正常通信的状态的功能。接收到通知数据包的路由器会在log中输出名称和IP地址,并保存。可以使用本功能来判断,WAN的IP地址非固定的kyoten的路由器和其他kyoten的路由器之间是否可以通信。

关于release

本文将以前实装的生存通知功能作为release1,本次新实装的生存通知功能作为release2。两者的功能概念虽然相同,但是命令体系,运行也没有互换性,请注意。

(参考)生存通知 release1的说明的链接

以后,如果没有特别说明,本文所写的生存通知功能都是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)的设置

  1. 首先进行生存通知接收侧的设置。这里指定的加密密钥,认证密钥和设置识别码必须和发送侧一致。

    router-B# heartbeat2 receive 101 crypto yamaha_crypto auth yamaha_auth
    
  2. 这时实际上还没有进行接收动作。这时需要使接收设置有效,使处于可接收生存通知的状态。

    router-B# heartbeat2 receive enable 101
    

发送侧路由器(以下、路由器A:IP地址 172.16.1.254)的设置

  1. 其次,进行发送侧的设置。在发送设置中,指定和接收侧相同的加密密钥,认证密钥和设置识别码。还要设置发送时包含在通知信息中的自己的名称。

    router-A# heartbeat2 transmit 101 crypto yamaha_crypto auth yamaha_auth 10.0.0.1
    router-A# heartbeat2 myname kyoten-1
    
  2. 接下来,使发送设置有效。

    router-A# heartbeat2 transmit enable 101
    

之后,路由器A会定期的发送生存通知。这时,通知内容会加密并且附加认证信息。
另外,本例中的发送间隔为默认值30秒。可以使用heartbeat2 transmit interval命令来变更。

发送的通知数据包中含有以下的数据。

  • 使用认证密钥(yamaha_auth)计算得出的摘要信息
  • 名称(kyoten-1)
  • 发送接口的IP地址(172.16.1.254)
  • 通知设置的识别号
  • 序列号/会话号(为了检测reply攻击)
  • 应用程序头

这里,名称和IP地址为加密对象,含有序列号和应用程序头的信息为认证的对象。

接收到的通知内容的确认

  • 接收侧可以用show status heartbeat2命令来查看目前为止接收到的通知信息。

    # show status heartbeat2
     entries: 1/1
     ?: heartbeat unreachable
         No                 name             IP address       last received        interval(sec)
    -------------------------------------------------------------------------------------------
        101                kyoten-1         172.16.1.254      2006/07/20 21:37:48        -
    
    #
    

开头的登记数表示「显示对象的登记数/当前的接收登记总数」。另外,接收间隔在2次接收到相同对端的生存通知时会显示。

另外,接收侧路由器上设置了heartbeat2 receive monitor命令,将监控设置有效的话,监控时间内没有收到通知时,输出syslog,发送SNMP Trap。另外,超过监控时间后,同一对端再次进行通知时,会输出显示生存通知再开的log。

MIB变量

以下的MIB変数可以通过生存通知的接收信息取得。

  • yamahaRTIp
    • yrIpHeartbeat2Table
      接收的生存通知表的信息
      • yrIpHeartbeat2Entry
        • yrIpHeartbeat2Index
          表索引
        • yrIpHeartbeat2Name
          通知的名称
        • yrIpHeartbeat2From
          通知的IP地址
        • yrIpHeartbeat2RecvTime
          最后接收通知的时间
        • yrIpHeartbeat2Interval
          通知的接收间隔
    • Trap
      • yrIpHeartbeat2Trap
        指定期间内没有通知时发送

命令

通知名称的设置

[格式]

heartbeat2 myname NAME
no heartbeat2 myname

[设置值]

  • NAME ... 生存通知中使用的名称(1~64字符/ASCII,1~32字符/Shift JIS)

[说明]

设置生存通知中本机的名称。

NAME不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。

[默认值]

无设置

通知设置的定义

[格式]

heartbeat2 transmit TRANS_ID [crypto CRYPTO_KEY] auth AUTH_KEY DEST_ADDR ...
no heartbeat2 transmit TRANS_ID

[设置值]

  • 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

通知设置的有效化

[格式]

heartbeat2 transmit enable [one-shot] TRANS_ID_LIST
no heartbeat2 transmit enable

[设置值]

  • TRANS_ID_LIST ... 想要有效的通知设置的识别号的列表
    • 1个数字,或者以 - 分割的数字(范围指定),或者是这些的任意的排列组合(128个以内)

[说明]

从定义的通知设置中,指定想要有效的识别号。识别号的列表,通过空格分隔,可以最多指定128个。

指定'one-shot'关键字时,只执行一次TRANS_ID_LIST指定的各设置的通知处理。另外,这种形式的命令无法保存。

[默认值]

无设置

通知间隔的设置

[格式]

heartbeat2 transmit interval TIME
heartbeat2 transmit interval TRANS_ID TIME
no heartbeat2 transmit interval [TIME]
no heartbeat2 transmit interval TRANS_ID TIME

[设置值]

  • TRANS_ID ... 通知设置的识别号
  • TIME ... 通知间隔秒数(30..65535)

[说明]

指定TRANS_ID对应的通知设置的发送间隔。

省略TRANS_ID时,所有的通知设置都为适用对象。但是,会优先适用TRANS_ID个别指定的识别号。

[默认值]

30

发送通知时是否记录log的设置

[格式]

heartbeat2 transmit log [TRANS_ID] SW
no heartbeat2 transmit log [TRANS_ID]

[设置值]

  • TRANS_ID ... 通知设置的识别号
  • SW
    • on ... 发送的内容输出至syslog
    • off ... 发送的内容不输出至syslog

[说明]

进行TRANS_ID对应的通知设置的log输出相关的设置。SW指定为'on'时,发送生存通知时,输出INFO级别的syslog。

省略TRANS_ID时,所有的通知设置都为适用对象。但是,会优先适用TRANS_ID个别指定的识别号。

[默认值]

off

接收设置的定义

[格式]

heartbeat2 receive RECV_ID [crypto CRYPTO_KEY] auth AUTH_KEY
no heartbeat2 receive RECV_ID

[设置值]

  • 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命令。

[默认值]

无设置

接收设置的有效化

[格式]

heartbeat2 receive enable RECV_ID_LIST
no heartbeat2 receive enable

[设置值]

  • RECV_ID_LIST ... 想要有效的通知设置的识别号的列表
    • 1个数字,或者以 - 分割的数字(范围指定),或者是这些的任意的排列组合(128个以内)

[说明]

从定义的接收设置中,指定想要有效的识别号。识别号的列表,通过空格分隔,可以最多指定128个。

[默认值]

无设置

接收间隔的监控设置

[格式]

heartbeat2 receive monitor TIME
heartbeat2 receive monitor RECV_ID TIME
no heartbeat2 receive monitor [TIME]
no heartbeat2 receive monitor RECV_ID TIME

[设置值]

  • RECV_ID ... 接收设置的识别号
  • TIME ... 监控时间
    • 秒数(30..21474836)
    • off ... 不监控接收间隔

[说明]

进行RECV_ID对应的接收设置的接收间隔的监控的设置。监控为有效时,在指定的时间内没有收到生存通知时,会输出INFO级别的syslog和发送SNMP Trap。

省略RECV_ID时,所有的接收设置都为适用对象。但是,会优先适用RECV_ID个别指定的识别号。

[默认值]

off

设置接收到通知时是否记录log

[格式]

heartbeat2 receive log [RECV_ID] SW
no heartbeat2 receive log [RECV_ID]

[设置值]

  • RECV_ID ... 接收设置的识别号
  • SW
    • on ... 接收的内容输出至syslog
    • off ... 接收的内容不输出至syslog

[说明]

进行RECV_ID对应的接收设置的log输出相关的设置。SW指定为'on'时,接收到生存通知时输出INFO级别的syslog。

省略RECV_ID时,所有的接收设置都为适用对象。但是,会优先适用RECV_ID个别指定的识别号。

[默认值]

off

可以同时维持的生存信息的最大数的设置

[格式]

heartbeat2 receive record limit NUM
no heartbeat2 receive record limit

[设置值]

  • NUM ... 生存信息的最大维持数(RTX5000:64..10000、其他机型:64..1000)

[说明]

设置可以同时维持的接收到的生存信息的最大数。生存信息数到达最大数时,将无法接收新的信息。这时可以通过clear heartbeat2命令删除不需要的信息。

[默认值]

64

生存通知的状态的显示

[格式]

show status heartbeat2
show status heartbeat2 id RECV_ID
show status heartbeat2 name STRING

[设置值]

  • RECV_ID ... 接收设置的识别号
  • STRING ... 字符串(1~64字符/ASCII、1~32字符/shift JIS)

[说明]

显示接收的生存通知的信息。

第1种格式显示维持中的所有信息。
第2种格式只显示指定的接收设置的接收信息。
第3种格式只显示通知名称中包含指定字符串的信息。

STRING中不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。

生存通知的状态的清除

[格式]

clear heartbeat2
clear heartbeat2 id RECV_ID
clear heartbeat2 name STRING

[设置值]

  • RECV_ID ... 接收设置的识别码
  • STRING ... 字符串(1~64字符/ASCII、1~32字符/Shift JIS)

[说明]

清除接收的生存通知的信息。

第1种格式清除维持中的所有信息。
第2种格式只清除指定的接收设置的接收信息。
第3种格式只清除通知名称中包含指定字符串的信息。

STRING中不只可以使用ASCII字符,还可以使用shift JIS表示的日语字符(除去半角片假名)。但是,只有console character命令设置为sjis时才能正常设置,显示。

设置例

确认非固定地址的路由器的生存

网络构成

          ┌─────────┐
          |      路由器A     |
          └─────────┘
 中心侧       | lan2
----------------------------
              | 10.0.0.1/28(固定)
    ―――――――――――――――――――――――
  /                                              \
 |                   Internet                     |
  \                                              /
    ―――――――――――――――――――――――
              | PPPoE/IPCP/NAT(NAT的外侧地址:10.0.11.121)
----------------------------
 kyoten-A     | lan2
         ┌───――――――──┐
         |        路由器B       |
         └───――――――──┘

设置

  • 路由器A
    heartbeat2 receive 101 crypto crypto-A auth auth-A
    heartbeat2 receive monitor 1 300
    heartbeat2 receive enable 101
    heartbeat2 receive record limit 128
    
  • 路由器B
    heartbeat2 myname kyoten-A
    heartbeat2 transmit 101 crypto crypto-A auth auth-A 10.0.0.1
    heartbeat2 transmit interval 101 60
    heartbeat2 transmit log 101 on
    heartbeat2 transmit enable 101
    

路由器A的show status heartbeat2

# show status heartbeat2
 entries: 1/1
 ?: heartbeat unreachable
     No                 name             IP address       last received          interval(sec)
---------------------------------------------------------------------------------------------
    101                kyoten-A          10.0.11.121   2006/07/20 21:37:48       60

#

unnumbered连接的例

网络构成

              |lan1 192.168.100.1/24
         ┌─────────┐
         |     路由器A      |
         └─────────┘
 中心侧       | bri1
----------------------------
              | unnumbered
        ―――────────――――
      /                              \
     |             ISDN               |
      \                              /
        ――――────────―――
              | unnumbered
---------------------------
 kyoten-B     | bri1
        ┌─────────┐
        |      路由器C     |
        └─────────┘
              | lan1 192.168.101.1/24

设置

  • 路由器A
    heartbeat2 receive 201 crypto crypto-B auth auth-B
    heartbeat2 receive monitor 201 600
    heartbeat2 receive enable 201
    
  • 路由器B
    heartbeat2 myname kyoten-B
    heartbeat2 transmit 201 crypto crypto-B auth auth-B 192.168.100.1
    heartbeat2 transmit interval 201 45
    heartbeat2 transmit enable 201
    ip filter 1 restrict * 192.168.100.1 udp * 8512  # 切断时阻断生存通知
    ip filter 100 pass * * * * *                     # 通过其他的通信
    pp select 1
     ip pp secure filter out 1 100                   # 适用过滤
    

路由器A的show status heartbeat2

# show status heartbeat2
  entries: 1/1
 ?: heartbeat unreachable

     No                 name             IP address       last received          interval(sec)
---------------------------------------------------------------------------------------------
    201                kyoten-B        192.168.101.1   2006/07/20 21:37:48       45 

#

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 和上次的通知相同,丢弃。

已知的问题

  1. 生存通知的发送目标指定为FQDN时,可能无法通知
    • heartbeat2 transmit命令用FQDN指定发送目标时,对那个终端可能无法发送通知。
      为了更加可靠的通知,请用IP地址指定发送目标。

返回顶部Return to Top