日々之迷歩

世の中わからんことだらけ

ITが複雑で難しくなっていく様に翻弄される日々です。微力ながら共著させていただいた「シェル・ワンライナー160本ノック」をよろしくお願い申し上げます。

RTX1100弄り始め

何をトチ狂ったのか、SNMP弄りが出来るネットワーク機材が欲しくなった。シェルスクリプトでSNMPマネージャーもどきやるとか・・・

個人で買えるくらいのないかなーとTwitter上で聞いてみたら、リプライがあった。ありがたや。

NETGEARの方は高かったので・・・YAMAHAのRTX1100中古をAmazonで探してみたら、5,000円弱であった。後先考えずにポチってしまった。

で思ったよりも早く配達されていた。本格的に弄るのはしばらく出来そうにないが、動作不良とかが無いか確認する必要があるため、最低限の設定をしてみることにした。

telnetログインしたい

シリアルコンソールケーブルは持ってるのだが、あいにく会社に置いてる。何とかtelnetログインが出来ないか調べたら、rarpdやIPv6リンクローカル接続をする方法があった。MACアドレスは機材の裏側にシールで貼ってあるので確認しておく。設定用のパソコンはMac。OSX El Capitanを利用。

webdev.seesaa.net

rarpdを試してみる。

$ sudo vim /etc/ethers
00:A0:DE:XX:XX:XX 192.168.X.X
$ sudo rarpd -d en7

別の端末からtelnetしてみるが・・・ダメ。

$ telnet 192.168.X.X
Trying 192.168.X.X...

arp -sを使う手も試してみる。 がこっちもダメ・・・

$ sudo arp -s 192.168.X.X 00:A0:DE:XX:XX:XX
$ telnet 192.168.X.X
Trying 192.168.X.X...

ということでIPv6リンクローカルアドレスを試してみた。やり方は下記を参考に。

my notes: In search of RARP server for MacOS

インターフェース名はen7(USB有線LAN使ってるので)。必要な部分のみを記載。

まずはマルチキャストにping。

$ ping6 -I en7 ff02::2
PING6(56=40+8+8 bytes) fe80::217:89ff:feXX:XXXX%en7 --> ff02::2
16 bytes from fe80::2a0:deff:feXX:XXXX%en7, icmp_seq=0 hlim=64 time=1.589 ms
16 bytes from fe80::2a0:deff:feXX:XXXX%en7, icmp_seq=1 hlim=64 time=0.915 ms

$ netstat -rn
Routing tables
Internet6:
Destination                             Gateway                         Flags         Netif Expire
fe80::2a0:deff:feXX:XXXX%en7            0:a0:de:XX:XX:XX                UHLWIi          en7

これでIPv6リンクローカルが分かったので、telnetでログイン。念のため端末の文字コードはShift-JISにしておく。

$ telnet fe80::2a0:deff:feXX:XXXX%en7
Trying fe80::2a0:deff:feXX:XXXX...
Connected to fe80::2a0:deff:feXX:XXXX%en7.    Escape character is '^]'.

Password:

RTX1100 Rev.8.03.94 (Thu Dec  5 19:06:16 2013)
  Copyright (c) 1994-2012 Yamaha Corporation. All Rights Reserved.
  Copyright (c) 1991-1997 Regents of the University of California.
  Copyright (c) 1995-2004 Jean-loup Gailly and Mark Adler.
  Copyright (c) 1998-2000 Tokyo Institute of Technology.
  Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.
  Copyright (c) 2002 RSA Security Inc. All rights reserved.
  Copyright (c) 1997-2004 University of Cambridge. All rights reserved.
  Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.
  Copyright (c) 1995 Tatu Ylonen , Espoo, Finland All rights reserved.
  Copyright (c) 1998-2004 The OpenSSL Project.  All rights reserved.
  Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved.
  Copyright (c) 2006 Digital Arts Inc. All Rights Reserved.
00:a0:de:XX:XX:XX, 00:a0:de:XX:XX:XX, 00:a0:de:XX:XX:XX,
Memory 32Mbytes, 3LAN, 1BRI
> administrator
Password:

ログイン出来たぞ!!

最低限の設定

よっしゃーということで、最低限の設定をする。本格的に運用する設定ではなく、あくまでもSNMPとかで遊ぶためだけの設定。

# ip lan1 address 192.168.X.X/24
# snmp host any
# snmp community read-only papiron
# snmp syscontact @papiron
# snmp sysname papiron_RTX1100
# snmp syslocation papiron_room
# httpd host any
# save
セーブ中... CONFIG0 終了

SNMPで情報取得

SNMPで情報取得出来るかチェック。

$ snmpwalk -v 1 -c papiron 192.168.X.X system
RFC1213-MIB::sysDescr.0 = STRING: "RTX1100 Rev.8.03.94 (Thu Dec  5 19:06:16 2013)"
RFC1213-MIB::sysObjectID.0 = OID: YAMAHA-PRODUCTS-MIB::rtx1100
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (245441) 0:40:54.41
RFC1213-MIB::sysContact.0 = STRING: "@papiron"
RFC1213-MIB::sysName.0 = STRING: "papiron_RTX1100"
RFC1213-MIB::sysLocation.0 = STRING: "papiron_room"
RFC1213-MIB::sysServices.0 = INTEGER: 12

$ snmpwalk -v 1 -c papiron 192.168.X.X ifDescr
RFC1213-MIB::ifDescr.1 = STRING: "LAN1"
RFC1213-MIB::ifDescr.2 = STRING: "LAN2"
RFC1213-MIB::ifDescr.3 = STRING: "LAN3"
RFC1213-MIB::ifDescr.4 = STRING: "BRI1"
RFC1213-MIB::ifDescr.139 = STRING: "NULL"
RFC1213-MIB::ifDescr.140 = STRING: "LOOPBACK1"
RFC1213-MIB::ifDescr.141 = STRING: "LOOPBACK2"
RFC1213-MIB::ifDescr.142 = STRING: "LOOPBACK3"
RFC1213-MIB::ifDescr.143 = STRING: "LOOPBACK4"
RFC1213-MIB::ifDescr.144 = STRING: "LOOPBACK5"
RFC1213-MIB::ifDescr.145 = STRING: "LOOPBACK6"
RFC1213-MIB::ifDescr.146 = STRING: "LOOPBACK7"
RFC1213-MIB::ifDescr.147 = STRING: "LOOPBACK8"
RFC1213-MIB::ifDescr.148 = STRING: "LOOPBACK9"

とりあえずは取得出来た。だがifDescrのリストを見ると、物理ポート毎の情報が取れるわけではなさそう。まあスイッチでは無いし、(業務用としては)安価なルーターだからそんなもんか。

RTX1100には物理的な通信ポートが7つある。

  • LAN1に4つ(LAN側)
  • LAN2に1つ(WAN側)
  • LAN3に1つ(WAN側)
  • ISDNのS/Tが1つ(WAN側)

LAN1の物理的なポート毎の情報が何かしら取れないのか?ということでYAMAHA private MIBを調べる。下記にMIB情報のASN.1形式データが置いてある。

YAMAHA private MIB

ここからMIB情報をダウンロードして、使えるようにする。

$ mkdir temp
$ cd temp
$ wget http://www.rtpro.yamaha.co.jp/RT/docs/mib/yamaha-private-mib.tar.gz
$ tar zxvf yamaha-private-mib.tar.gz
$ mkdir -p ~/.snmp/mibs
$ cp *.txt ~/.snmp/mibs
$ sudo vim /etc/snmp/snmp.conf
mibdirs /usr/share/snmp/mibs:/Users/ログイン名/.snmp/mibs
mibs all

これで準備完了。では物理ポートについての情報を取得してみる。YrIfPhysicalPortEntryというエントリが使えそうだ。

$ snmpwalk -v 1 -c papiron 192.168.X.X YrIfPhysicalPortEntry
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.1 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.2 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.3 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.4 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.5 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.6 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfSlotIndex.1.7 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.1 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.2 = INTEGER: 2
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.3 = INTEGER: 3
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.4 = INTEGER: 4
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.5 = INTEGER: 5
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.6 = INTEGER: 6
YAMAHA-RT-INTERFACES::yrIfPortIndex.1.7 = INTEGER: 7
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.1 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.2 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.3 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.4 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.5 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.6 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfInterfaceType.1.7 = INTEGER: bri(2)
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.1 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.2 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.3 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.4 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.5 = INTEGER: 2
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.6 = INTEGER: 3
YAMAHA-RT-INTERFACES::yrIfInterfaceNum.1.7 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.1 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.2 = INTEGER: 2
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.3 = INTEGER: 3
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.4 = INTEGER: 4
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.5 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.6 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortNumber.1.7 = INTEGER: 1
YAMAHA-RT-INTERFACES::yrIfPortType.1.1 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.2 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.3 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.4 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.5 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.6 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.7 = INTEGER: bri-st(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.1 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.2 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.3 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.4 = INTEGER: up(1)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.5 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.6 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.7 = INTEGER: down(2)

お、物理ポート毎の情報が取れていそうである。yrIfPortTypeyrIfPortLinkStateのみを見てみる。

$ snmpwalk -v 1 -c papiron 192.168.X.X yrIfPortType
YAMAHA-RT-INTERFACES::yrIfPortType.1.1 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.2 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.3 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.4 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.5 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.6 = INTEGER: lan(1)
YAMAHA-RT-INTERFACES::yrIfPortType.1.7 = INTEGER: bri-st(2)

$ snmpwalk -v 1 -c papiron 192.168.X.X yrIfPortLinkState
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.1 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.2 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.3 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.4 = INTEGER: up(1)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.5 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.6 = INTEGER: down(2)
YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.7 = INTEGER: down(2)

LAN1の4番目のポートがリンクアップしている(LANケーブルを挿している)が、その様子が下記の行で確認出来る。

YAMAHA-RT-INTERFACES::yrIfPortLinkState.1.4 = INTEGER: up(1)

とりあえず今回は、やったことのメモ的なエントリ。SNMP情報取得の練習出来る時間は当分先だろう・・・