GNS3 iTerm2 terminal says ‘telnet: not found’

May from macOS High Sierra, Apple removed telnet?

  1. macOS High Sierra 10.13.2
  2. GNS3 2.1.1
  3. terminal: iTerm2
  4. VMware Fusion Pro 10.1.0 (7370838)

telnet not found

sh-3.2$ exec telnet 172.16.98.128 5000
sh: exec: telnet: not found
sh-3.2$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin
$ brew install telnet
$ which telnet
/usr/local/bin/telnet

Configure GNS3 iTerm2 configuration.

osascript -e 'tell application "iTerm"' -e 'activate' -e 'if (count of windows) = 0 then' -e '   set t to (create window with default profile)' -e 'else' -e '   set t to current window' -e 'end if' -e 'tell t' -e '    create tab with default profile command "sh"' -e '    set s to current session' -e '    tell s' -e '        set name to "%d"' -e '        write text "exec telnet %h %p"' -e '    end tell' -e 'end tell' -e 'end tell'

changes following(specify telnet full path):

osascript -e 'tell application "iTerm"' -e 'activate' -e 'if (count of windows) = 0 then' -e '   set t to (create window with default profile)' -e 'else' -e '   set t to current window' -e 'end if' -e 'tell t' -e '    create tab with default profile command "sh"' -e '    set s to current session' -e '    tell s' -e '        set name to "%d"' -e '        write text "exec /usr/local/bin/telnet %h %p"' -e '    end tell' -e 'end tell' -e 'end tell'

CDP(Cisco Discovery Protocol)

CCIE R&S candidate の作業ログ。

CDP(Cisco Discovery Protocol)

トポロジは昨日と一緒。

R2#sh cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
R3               Fas 0/0            153         R S I     3725      Fas 0/1
R1               Fas 0/1            153         R S I     3725      Fas 0/0
R2#sh ver | inc IOS
Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)
R2#sh cdp neigh detail
-------------------------
Device ID: R3
Entry address(es):
  IP address: 192.168.23.3
Platform: Cisco 3725,  Capabilities: Router Switch IGMP
Interface: FastEthernet0/0,  Port ID (outgoing port): FastEthernet0/1
Holdtime : 179 sec

Version :
Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Tue 17-Aug-10 12:08 by prod_rel_team

advertisement version: 2
VTP Management Domain: ''
Duplex: half

デバイスのバージョン

R2(config)#no cdp run

R2#sh run | inc cdp
no cdp log mismatch duplex
no cdp run
R1(config)#no cdp run

特定のインターフェース(スタブネットワークで PC、サーバー等が接続される側)にはこういう無効化設定をすることが多いっぽい。
無駄にトラフィックを消費するので喋らせる意味もない。
さらにはインターネット側に面するインターフェースにCDPを無効にする。
IOS のバージョンからプラットフォームまでバレるのでセキュリティ上の理由からである。

R1(config)#cdp run
R1(config)#int f1/0
R1(config-if)#no cdp enable

別に CDP のフレームを観測するデバイスは Cisco のデバイスである必要はなく、 CDP フレームを解釈できるものであれば(Wireshark等)まるわかりである。

Wireshark で覗き見(合法)。

cdp

でフィルタをかけている。

イーサネットフレームの送信元と宛先を確認してみる。

宛先アドレスは I/G ビットが立っているのでマルチキャストMACアドレスとなっている。
送信元はユニキャストMACアドレス。

読める、読めるぞ!

R1#sh cdp
Global CDP information:
    Sending CDP packets every 30 seconds
    Sending a holdtime value of 90 seconds
    Sending CDPv2 advertisements is  enabled
R1#sh cdp interface f0/0
FastEthernet0/0 is up, line protocol is up
  Encapsulation ARPA
  Sending CDP packets every 30 seconds
  Holdtime is 90 seconds
R1#sh cdp interface f1/0

R1#
R2#sh cdp neigh
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
R3               Fas 0/0            178         R S I     3725      Fas 0/1
R1               Fas 0/1            72          R S I     3725      Fas 0/0

cdp table のクリア

R2#clear cdp table
R2#sh cdp neighbors
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater

Device ID        Local Intrfce     Holdtme    Capability  Platform  Port ID
R2#

特定のエントリの詳細のみ表示。

R2#show cdp entry ?
  *     all CDP neighbor entries
  WORD  Name of CDP neighbor entry

R2#show cdp entry R1
-------------------------
Device ID: R1
Entry address(es):
  IP address: 192.168.12.1
Platform: Cisco 3725,  Capabilities: Router Switch IGMP
Interface: FastEthernet0/1,  Port ID (outgoing port): FastEthernet0/0
Holdtime : 74 sec

Version :
Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Tue 17-Aug-10 12:08 by prod_rel_team

advertisement version: 2
VTP Management Domain: ''
Duplex: half

CDP のトラフィック統計情報を見る。
CDP version 2 のパケットのみ送受信している。

R2#sh cdp traffic
CDP counters :
    Total packets output: 812, Input: 681
    Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
    No memory: 0, Invalid packet: 0, Fragmented: 0
    CDP version 1 advertisements output: 0, Input: 0
    CDP version 2 advertisements output: 812, Input: 681

CDP 統計情報をリセットする

R2#clear cdp counters
R2#sh cdp traffic
CDP counters :
    Total packets output: 0, Input: 0
    Hdr syntax: 0, Chksum error: 0, Encaps failed: 0
    No memory: 0, Invalid packet: 0, Fragmented: 0
    CDP version 1 advertisements output: 0, Input: 0
    CDP version 2 advertisements output: 0, Input: 0

ちなみに CDP に相当する LLDP が IEEE802.1AB で標準化されたマルチベンダの Layer 2 プロトコル。
Link Layer Discovery Protocol

遠くにあるデバイスの接続インターフェースもわかるし便利だね。

References

  1. Ciscoデバイスの操作 – CDP(Cisco Discovery neighbors)

Cisco Fundamentals: ping, traceroute, debug

CCIE R&S candidate の作業ログ。

Tips

sh int f0/13 するときに画面分割してコンソール接続してるとあと少しで見えそうなのにもう一回スペース入れる必要があったりして微妙に面倒なときがある。
そんなときは terminal length 0 便利。 terminal length 30 とかでもいいかもしれないけど。

ping

拡張ping

R1#
R1#ping
Protocol [ip]:
Target IP address: 172.18.1.2
Repeat count [5]: 100
Datagram size [100]: 1500
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 100, 1500-byte ICMP Echos to 172.18.1.2, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/2/4 ms
R1#ping
Protocol [ip]:
Target IP address: 172.18.1.2
Repeat count [5]: 100
Datagram size [100]: 1500
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: f0/0
% Invalid source. Must use same-VRF IP address or full interface name without spaces (e.g. Serial0/1)
Source address or interface: FastEthrnet0/0
% Invalid source. Must use same-VRF IP address or full interface name without spaces (e.g. Serial0/1)
Source address or interface: FastEthernet0/0
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 100, 1500-byte ICMP Echos to 172.18.1.2, timeout is 2 seconds:
Packet sent with a source address of 172.18.1.1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/2/4 ms

R1#ping 172.18.1.2 ?
  data      specify data pattern
  df-bit    enable do not fragment bit in IP header
  repeat    specify repeat count
  size      specify datagram size
  source    specify source address or name
  timeout   specify timeout interval
  validate  validate reply data
  <cr>

この記事より前に CCIE R&S Official Cert Guide Vol.1 で苦戦してたのでいろいろ前後している。
うるさいスイッチの音に耐えられなくなってきたので以下は GNS3 で構築したラボ上でのPoC。

VPC1

ip 192.168.1.254 255.255.255.0 192.168.1.1
save

VPC2

ip 192.168.4.254 255.255.255.0 192.168.4.4
save

R1

conf t
int f1/0
ip addr 192.168.1.1 255.255.255.0
no shut
int f0/0
ip addr 192.168.12.1 255.255.255.0
no shut
router ospf 1
network 192.168.0.0 0.0.255.255 area 0
end
wr

R2

conf t
int f0/1
ip addr 192.168.12.2 255.255.255.0
no shut
int f0/0
ip addr 192.168.23.2 255.255.255.0
no shut
router ospf 1
network 192.168.0.0 0.0.255.255 area 0
end
wr

R3

conf t
int f0/1
ip addr 192.168.23.3 255.255.255.0
no shut
int f0/0
ip addr 192.168.34.3 255.255.255.0
no shut
router ospf 1
network 192.168.0.0 0.0.255.255 area 0
end
wr

R4

conf t
int f0/1
ip addr 192.168.34.4 255.255.255.0
no shut
int f1/0
ip addr 192.168.4.4 255.255.255.0
no shut
router ospf 1
network 192.168.0.0 0.0.255.255 area 0
end
wr

GNS3 2.1.1 入れてみたけど不安定だ。
ネイバー関係ロストしたり。
macOS High Sierra になってから GNS3 も Cisco VIRL も、仮想化ハイパーバイザである VMware Fusion も 10 になりいろんなものがバージョンアップされていろいろ不安定になっている。
ちょっとアップグレード早すぎたんじゃないかと思った。

R1#sh ip ro
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.12.0/24 is directly connected, FastEthernet0/0
O    192.168.4.0/24 [110/31] via 192.168.12.2, 00:19:17, FastEthernet0/0
O    192.168.23.0/24 [110/20] via 192.168.12.2, 00:19:17, FastEthernet0/0
O    192.168.34.0/24 [110/30] via 192.168.12.2, 00:19:17, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet1/0
R1#ping
Protocol [ip]:
Target IP address: 192.168.4.4
Repeat count [5]: 100
Datagram size [100]: 1500
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: FastEthernet1/0
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 100, 1500-byte ICMP Echos to 192.168.4.4, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 16/44/88 ms

R1#ping 192.168.4.4 ?
  data      specify data pattern
  df-bit    enable do not fragment bit in IP header
  repeat    specify repeat count
  size      specify datagram size
  source    specify source address or name
  timeout   specify timeout interval
  validate  validate reply data
  <cr>

above example equivalent following:

インターフェース名は省略せずに入力する必要がある。

R1#ping 192.168.4.4 repeat 100 size 1500 source FastEthernet 1/0

Type escape sequence to abort.
Sending 100, 1500-byte ICMP Echos to 192.168.4.4, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 16/41/80 ms

traceroute

traceroute コマンド。

R1#trace 192.168.4.4

Type escape sequence to abort.
Tracing the route to 192.168.4.4

  1 192.168.12.2 16 msec 20 msec 20 msec
  2 192.168.23.3 40 msec 36 msec 40 msec
  3 192.168.34.4 40 msec 64 msec 84 msec

R1#trace 192.168.4.4 ?
  numeric  display numeric address
  port     specify port number
  probe    specify number of probes per hop
  source   specify source address or name
  timeout  specify time out
  ttl      specify minimum and maximum ttl
  <cr>

拡張trace

ping 同様

R1#trace
Protocol [ip]:
Target IP address: 192.168.4.4
Source address: FastEthernet1/0
% Invalid source address
R1#trace
Protocol [ip]:
Target IP address: 192.168.4.4
Source address: 192.168.1.1
Numeric display [n]: y
Timeout in seconds [3]:
Probe count [3]: 4
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 192.168.4.4

  1 192.168.12.2 24 msec 16 msec 24 msec 20 msec
  2 192.168.23.3 20 msec 20 msec 20 msec 20 msec
  3 192.168.34.4 44 msec 60 msec 20 msec 44 msec

R1#trace 192.168.4.254

Type escape sequence to abort.
Tracing the route to 192.168.4.254

  1 192.168.12.2 8 msec 4 msec 8 msec
  2 192.168.23.3 20 msec 24 msec 28 msec
  3 192.168.34.4 36 msec 36 msec 20 msec
  4 192.168.4.254 60 msec 52 msec 36 msec

R1#traceroute 192.168.4.254 probe 4

Type escape sequence to abort.
Tracing the route to 192.168.4.254

  1 192.168.12.2 12 msec 20 msec 16 msec 12 msec
  2 192.168.23.3 32 msec 20 msec 20 msec 16 msec
  3 192.168.34.4 28 msec 36 msec 36 msec 52 msec
  4 192.168.4.254 76 msec 52 msec 68 msec 48 msec

DNS lookup の無効化

トレース先のIPの逆引きをするから遅い。
ちなみに GNS3 ではデフォルトでは投入済みである。

R1#sh run | inc domain
no ip domain lookup

グローバルコンフィギュレーションモードで DNS ルックアップをするようにしてみた。

R1(config)#ip domain-lookup

体感数十倍遅くなった。

R1#traceroute 192.168.4.254

Type escape sequence to abort.
Tracing the route to 192.168.4.254

  1 192.168.12.2 28 msec 24 msec 20 msec
  2 192.168.23.3 32 msec 48 msec 20 msec
  3 192.168.34.4 20 msec 56 msec 20 msec
  4 192.168.4.254 72 msec 40 msec 72 msec

R1#sh run | inc domain
R1#

さて元に戻す

R1(config)#no ip domain lookup
R1(config)#^Z
R1#
*Mar  1 00:41:40.035: %SYS-5-CONFIG_I: Configured from console by console

この場合はハイフン有り無しどっちでもいいっぽい。

R1#sh run | inc domain
no ip domain lookup

存在しないノードを指定する

R1#traceroute 192.168.4.111

Type escape sequence to abort.
Tracing the route to 192.168.4.111

  1 192.168.12.2 12 msec 20 msec 20 msec
  2 192.168.23.3 28 msec 20 msec 16 msec
  3 192.168.34.4 48 msec 20 msec 40 msec
  4  *  *  *
  5  *  *  *
  6  *  *  *
  7  *  *  *
  8  *  *  *
  9  *  *  *
 10  *  *  *

Ctrl+Shift+6 は Windows の場合有効だが Mac (当方 iTerm2 使用)では使えない。

よかった、よかった、と思ったら、Key mappingを作らなくても Ctrl+^ でHEX 1Eが送れることが発覚しました。 ガ〜ン。
もちろんTerminalからも送れます。

Ctrl+^ (HEX 1Es)
R1#traceroute 192.168.4.111

Type escape sequence to abort.
Tracing the route to 192.168.4.111

  1 192.168.12.2 12 msec 20 msec 8 msec
  2 192.168.23.3 24 msec 20 msec 28 msec
  3 192.168.34.4 28 msec 24 msec 40 msec
  4  *
R1#

ホンマや。

debug

負荷が高い。
必要なトラフィックに絞って実行する。

R1#debug ip icmp
ICMP packet debugging is on
R1#ping 192.168.4.4

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/32/40 ms
R1#
*Mar  1 01:08:24.303: ICMP: echo reply rcvd, src 192.168.4.4, dst 192.168.12.1
*Mar  1 01:08:24.323: ICMP: echo reply rcvd, src 192.168.4.4, dst 192.168.12.1
*Mar  1 01:08:24.367: ICMP: echo reply rcvd, src 192.168.4.4, dst 192.168.12.1
*Mar  1 01:08:24.391: ICMP: echo reply rcvd, src 192.168.4.4, dst 192.168.12.1
*Mar  1 01:08:24.431: ICMP: echo reply rcvd, src 192.168.4.4, dst 192.168.12.1

オフるには。

R1#no debug all
All possible debugging has been turned off

あるいは

R1#undebug all
All possible debugging has been turned off

debug all を稼働環境で使うと機器が停止するらしい。

rm -rf /

をやってはいけないと言われるのと同様にやってみたくなるのが人間の性である。

そして下記コマンドも負荷が高いとのこと。

show tech-support

入力したら YAMAHA の show techinfo の比じゃない量の出力がされた(5分ぐらいたった今でも出力し続けている)。
考えうるあらゆるものを出力している。

show techinfo はサポート窓口に問合せるときに使う機器の技術情報を出力するコマンドで
ログ、コンフィグ、機器の状態が一切の出力される。

さあ、本日のフィナーレとして debug all コマンドを投入してみようじゃないか。

R1#debug all

This may severely impact network performance. Continue? (yes/[no]): yes

おっ、確認してくるなんで親切じゃないですか。

ッターン。

とめどなくデバッグログが出力される。

undebug all

全然入力できない、というか受け付けない。

改行コード込みで Ctrl+V 連打してるがまったく効果がない。

GNS3 上でプロセスごとリセットかけて復旧。
debug all の危険性がよくわかった。

References

  1. Ciscoデバイスの操作 – Cisco IOSネットワーク診断ツール ping, trace, debug

Windows の GNS3 で Cisco ルーターの設定を初期化する

GNS3 上でトポロジを構成する際、誤ったコンフィグを投入してしまって、あまつさえ保存してしまったとします。
こういった場合設定を初期化したいのですが、 erase startup-config だけだとルーターのホスト名の設定やロギングの挙動の調整といった、
ルーター初回起動時に投入される便利なコンフィグが読み込まれません。
最低限ルーター名だけでも最初から投入してくれないとわかりにくくて大変です。
GNS3 のドキュメント探してみましたが相当するようなドキュメントが見つからなかったので結構苦労しました。

トポロジを構成するルーターが 1, 2 台ならプロジェクト作り直せばいいかで済むんですが、 5 台以上になってくると大変です。
トポロジを作るのに加えてインターフェイスのラベルの位置とか微調整しているので作り直しってなったら発狂したくなります。

つーか、 Mac 版だと コンフィグ消したら NVRAM が勝手に初期化されたから、 Windows 版のバグのような気がしないでもない。

R1#erase startup-config
Erasing the nvram filesystem will remove all configuration files! Continue? [confirm]
[OK]
Erase of nvram: complete
R1#
*Mar  1 00:00:26.751: %SYS-7-NV_BLOCK_INIT: Initialized the geometry of nvram

誰か教えて下しあ。。。
GNS3 のドキュメントに載ってるのかな。。
今度腰を据えて GNS3 のドキュメント読もうかな。
というか GNS3 2.0 RC2 までいったようで、熱いね。
もうリリース間近といった感じ。

Releases · GNS3/gns3-gui

以下は Windows 版でのみの話し

ルーター上で

erase startup-config

これでルーターを再起動しても初回起動時に投入されるコンフィグは入らない。
ホスト名も設定されていない完全にまっさらに初期化されたルーターが起動される。
まあ、物理的なルーターの動作としてはこれが正しいんだが、コンセプトを理解したい場合は違う、そうじゃないとなる。

次に、ルーターを停止させる。これ重要。

右クリックでコンフィグをインポートする。

Windows なら

C:\Users\wnoguchi\GNS3\configs\ios_base_startup-config.txt

Mac なら

/Users/wnoguchi/GNS3/configs/ios_base_startup-config.txt

Linux なら(エスパーしている)

/home/GNS3/configs/ios_base_startup-config.txt

ちなみにコンフィグは以下のような感じになっていた。

!
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname %h
!
ip cef
no ip domain-lookup
no ip icmp rate-limit unreachable
ip tcp synwait 5
no cdp log mismatch duplex
!
line con 0
 exec-timeout 0 0
 logging synchronous
 privilege level 15
 no login
line aux 0
 exec-timeout 0 0
 logging synchronous
 privilege level 15
 no login
!
!
end

%h の部分がホスト名に置換されているわけですな。

プライベートコンフィグは読み込まなくて良い。

そしてルーター起動。

これで OK 。

GNS3 1.5.x では Windows, Mac 間の portable project のエクスポート、インポートがうまくいかない

ご注意: GNS3 1.5 系のポータブルプロジェクトファイルは私が試した限り Windows と Mac 間では互換性がありません。

それと Windows 間のインポートだとエクスポート元で GNS3 VM 上で実行していたやつでも、インポート先だとローカルの Dynamips で実行されてしまうっぽい。。。
設定の問題なのかなあ。。。

最初この事実を知った時、うーんって感じでした。
まあ、マルチプラットフォームの難しさは推して量るべしですが・・・。
こういったコミュニティに積極的にコミットできるようになりたい。