Cisco IOS システム管理 – telnetコマンドの詳細説明

スポンサーリンク

Cisco IOSのtelnetコマンドを用いてvtyに接続する方法についてまとめます。このコンテンツはもともとCCIE試験対策として作られたため、実践では滅多に使わないような重箱の隅をつつくような設定も含まれている事をご了承ください。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# enable password <password>
Router(config)# enable secret <password>

Router(config)# line vty <num_range>
Router(config-line)# password <password>
Router(config-line)# login
Router(config-line)# session-timeout <min>
Router(config-line)# exec-timeout <min> [ <sec> ]
Router(config-line)# absolute-timeout <min>
Router(config-line)# logout-warning <sec>

Router(config)# ip telnet quiet
Router(config)# ip telnet hidden { address | hostname }
Router(config)# busy-message <hostname> <message>

Router(config)# service telnet-zeroidle

構成図

これ以降の動作確認は、以下の環境で行います。

  +--------+        +--------+
  |   R1   +--------+   R2   |
  +--------+.1    .2+--------+
          e0/0    e0/1
         192.168.12.0/24

 R1 Loopback0      R2 Loopback0
 10.1.1.1/32       10.2.2.2/32
 [R1]
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0

 [R2]
router ospf 1
 network 0.0.0.0 255.255.255.255 area 0

設定全文は下記ファイルです。詳細設定は下記を参照ください。

R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R2
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router ospf 1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

telnet server

仕様説明

telnetやsshでのアクセス許可を設定するには、line vtyに対しての設定を施します。vtyとはVirtual Typewriterの略で、日本語では”仮想端末”などと訳される事が多いです。

telnetを許可するには、以下のコマンドを入力します。

コマンド 説明
password <password> line vtyに対してパスワードを定義します。
login 上記パスワードに基づく認証を行います。
Router(config)# line vty <num_range>
Router(config-line)# password <password>
Router(config-line)# login

vty接続したユーザは、enable passwordが定義されていない状態でuser modeからenable modeに昇格する事ができません。telnetなどのリモート操作を許可する場合は、以下のコマンドを使用してenable passwordを定義する必要があります。

Router(config)# enable password <password>
Router(config)# enable secret <password>

telnet 接続

telnetアクセスを許可する設定をR1に投入します。

 [R1]
line vty 0 4
 password cisco
 login

R2からR1へのtelnet接続が可能である事を確認します。また、enable passwordが未設定の状態ではenable modeに昇格できない事を確認します。

 [R2]
R2#telnet 192.168.12.1
Trying 192.168.12.1 ... Open


User Access Verification

Password:
R1>enable
% No password set
R1>

enable password

R1にenable passwordを定義します。

 [R1]
enable secret cisco

R2からR1へのtelnet接続が可能である事を確認します。また、enable modeへの昇格が可能である事を確認します。

R2#telnet 192.168.12.1
Trying 192.168.12.1 ... Open


User Access Verification

Password:
R1>enable
Password:
R1#

telnet client

仕様説明

以下のコマンドでtelnet clientの設定が可能です。

コマンド 説明
session-timeout vty接続したユーザが他のルータに接続した際、他のルータへの接続可能な時間の上限を定義します。
exec-timeout 何も入力しない状態が続いた場合の接続可能時間の上限を定義します。
absolute-timeout 入力が続続いた場合の接続可能時間の上限を定義します。
absolute-timeout absolute-timeoutによりログアウトされる前に警告メッセージを表示します。警告メッセージを表示することで、ログアウト前にwrite memoryを実行したりコマンド入力途中でのログアウトを防いだりする事が可能です。
ip telnet quiet telnet接続時の一切のメッセージを抑制します。
ip telnet hidden telnet接続時に、IPアドレスかホスト名の出力を抑制します。
busy-message telnet接続に失敗した時のメッセージを定義します。
Router(config-line)# session-timeout <min>
Router(config-line)# exec-timeout <min> [ <sec> ]
Router(config-line)# absolute-timeout <min>
Router(config-line)# logout-warning <sec>
Router(config-line)# ip telnet quiet
Router(config-line)# ip telnet hidden { address | hostname }
Router(config-line)# busy-message <hostname> <message>

接続設定

R2に対してtelnet接続の設定を投入します。送信元interfaceをLoopback 0に変更し、ip precedence 3 (tos 72)の優先度を定義します。

また、動作確認のために以下のようなACLをR1に適用します。

 [R2]
ip telnet source-interface Loopback 0
ip telnet tos 72

 [R1]
ip access-list extended COUNT_PREC
 10 permit ip any any precedence 0
 20 permit ip any any precedence 1
 30 permit ip any any precedence 2
 40 permit ip any any precedence 3
 50 permit ip any any precedence 4
 60 permit ip any any precedence 5
 70 permit ip any any precedence 6
 80 permit ip any any precedence 7
!
interface Ethernet0/0
 ip access-group COUNT_PREC in

R2からR1へtelnet接続します。

 [R2]
R2#telnet 10.1.1.1
Trying 10.1.1.1 ... Open


User Access Verification

Password:
R1>

送信元がR2 Loopback 0 (10.2.2.2)になっている事とip precedence 3 (flash)で送信されている事が分かります。

 [R1]
R1#show tcp brief
TCB       Local Address           Foreign Address        (state)
64A64964  10.1.1.1.23             10.2.2.2.25425         ESTAB
R1#
R1#
R1#show access-lists
Extended IP access list COUNT_PREC
    10 permit ip any any precedence routine
    20 permit ip any any precedence priority
    30 permit ip any any precedence immediate
    40 permit ip any any precedence flash (45 matches)
    50 permit ip any any precedence flash-override
    60 permit ip any any precedence critical
    70 permit ip any any precedence internet (4 matches)
    80 permit ip any any precedence network
R1#

表示設定

R2にtelnet接続に関する表示を一切禁止する設定を投入します。

さらに動作確認のため、R1 Loopback0をshutdownし、R2に名前解決の設定を投入します。

 [R2]
ip telnet quiet
!
ip host R1Lo0 10.1.1.1
ip host R1e0 192.168.12.1

 [R1]
interface Loopback0
 shutdown

R2からR1に接続する際に一切の出力がなくなっている事が分かります。接続に失敗した旨のメッセージや接続先のホスト名, IPアドレスが表示されなくなった事が分かります。

左側に初期設定の出力を、右側に”ip telnet quiet”を入力した場合の出力を示します。

[初期設定]                                        [ip telnet quiet]
R2#telnet R1Lo0                                   R2#telnet R1Lo0
Trying R1Lo0 (10.1.1.1)...                      |
% Destination unreachable; gateway or host down |

R2#                                               R2#
R2#                                               R2#
R2#telnet R1e0                                    R2#telnet R1e0
Trying R1e0 (192.168.12.1)... Open              |


User Access Verification                          User Access Verification

Password:                                         Password:
R1>                                               R1>

telnet接続時、IPアドレスの表示を禁止する設定を投入します。

 [R2]
no ip telnet quiet
ip telnet hidden address

R2からR1に接続する際にIPアドレスが表示されなくなった事が分かります。

左側に初期設定の出力を、右側に”hidden ip address”を入力した場合の出力を示します。

[初期設定]                                         [hidden ip address]
R2#telnet R1Lo0                                    R2#telnet R1Lo0
Trying R1Lo0 (10.1.1.1)...                       | Trying R1Lo0 address #1 ...
% Destination unreachable; gateway or host down    % Destination unreachable; gateway or host down

R2#                                                R2#
R2#                                                R2#
R2#telnet R1e0                                     R2#telnet R1e0
Trying R1e0 (192.168.12.1)... Open               | Trying R1e0 address #1 ... Open


User Access Verification                           User Access Verification

Password:                                          Password:
R1>                                                R1>

telnet接続時、IPアドレスの表示を禁止する設定を投入します。

 [R2]
busy-message R1Lo0 # sorry, your connection failed #
no ip telnet hidden address

R2からR1への接続失敗時に、エラーメッセージが変わった事が分かります。

左側に初期設定の出力を、右側に”busy-message”を入力した場合の出力を示します。

[初期設定]                                        [busy-message]
R2#telnet R1Lo0                                   R2#telnet R1Lo0
Trying R1Lo0 (10.1.1.1)...                      | sorry, your connection failed
% Destination unreachable; gateway or host down |

R2#                                               R2#

service telnet-zeroidle

仕様説明

service telnet-zeroidleは接続中断時のメッセージが抑制されないようにする機能です。”Shift + Ctrl + 6″の後に”x”を押下による接続中断を行うと、接続先へのtcp window sizeを0にします。0にする事によって接続先からのメッセージが流れてこなくなり、telnet接続中断による重要なメッセージ(link down event, ospf eventなど)の見落としを防ぐ事ができます

service telnet-zeroidleを有効にするには以下のコマンドを使用します。

Router(config)# service telnet-zeroidle

初期設定時の挙動

service telnet-zeroidleを理解するために、まずはservice telnet-zeroidleが無効である(初期設定)状態の動作を確認します。検証の都合上、先程投入した設定の一部を削除します。

 [R2]
no ip telnet source-interface Loopback 0

telnet接続中断時にメッセージが抑制させてしまう事を確認するために、以下の操作を実施します。手順がやや複雑なので、まずは概要を示します。

コンソール 操作
R2 R2からR1へtelnet接続します。
R2 “terminal monitor”コマンドでコンソールに出力されるメッセージが見えるようにします。
R2 “Shift + Ctrl + 6″の後に”x”を押下し、接続を中断させます。
R1 Loopback 0でshut/no shutを繰り返し、ログメッセージを数件発生させます。
R2 Enterを押下し接続を再開します。上記ログメッセージが表示されるかを確認します。

R2からR1へ接続し、ログメッセージが見えるようにします。

 [R2]
R2#telnet 192.168.12.1
Trying 192.168.12.1 ... Open


User Access Verification

Password:
R1>
R1>enable
Password:
R1#
R1#terminal monitor

R2に接続された端末で”Shift + Ctrl + 6″の後に”x”を押下し、telnet接続を中断します。

 [R2]
R1# # press Sift + Ctrl + 6 then x
R1#
R2#show sessions
Conn Host                Address             Byte  Idle Conn Name
*  1 192.168.12.1        192.168.12.1           0     0 192.168.12.1

R2#

R1でLooopback0のshut/no shutを2セット行います。

 [R1]
R1(config)#interface Loopback 0
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:08:27.259: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:08:28.259: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:08:38.207: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:08:39.207: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:08:50.087: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:08:51.087: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:08:59.311: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:09:00.311: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#

R1でLooopback0のshut/no shutを2セット行います。

R1(config)#interface Loopback 0
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:08:27.259: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:08:28.259: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:08:38.207: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:08:39.207: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:08:50.087: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:08:51.087: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:08:59.311: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:09:00.311: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#

R2に接続された端末でEnterを押下し、telnet接続を再開させます。ログメッセージが8件中4件しか表示されない事が分かります。service telnet-zeroidleが無効である状態では一部のメッセージが失われてしまっている事が分かります。

 [R2]
R2#
[Resuming connection 1 to 192.168.12.1 ... ]

*Mar  1 00:08:27.259: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:08:28.259: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
*Mar  1 00:08:38.207: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:08:39.207: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1#

service telnet-zeroidle

R2でservice telnet-zeroidleを有効化します。

 [R2]
service telnet-zeroidle

先程と同様の手順でR2からR1へtelnet接続した後に、接続を中断します。

 [R2]
R2#telnet 192.168.12.1
Trying 192.168.12.1 ... Open


User Access Verification

Password:
R1>enable
Password:
R1#
R1#terminal monitor
R1#
R1#
R2#show sessions
Conn Host                Address             Byte  Idle Conn Name
*  1 192.168.12.1        192.168.12.1           0     0 192.168.12.1

R2#

R1でLooopback0のshut/no shutを2セット行います。

 [R1]
R1(config)#interface Loopback 0
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:40:50.963: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:40:51.963: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:41:02.159: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:41:03.159: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#shutdown
R1(config-if)#
*Mar  1 00:41:08.919: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:41:09.919: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
R1(config-if)#no shutdown
R1(config-if)#
*Mar  1 00:41:14.659: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:41:15.659: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1(config-if)#

Enterを押下しtelnet接続を再開させます。ログメッセージが8件中8件全て表示されている事が分かります。service telnet-zeroidleが有効にする事によって、全てのメッセージが表示されるようになる事が分かります。

 [R2]
R2#
[Resuming connection 1 to 192.168.12.1 ... ]

*Mar  1 00:40:50.963: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:40:51.963: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
*Mar  1 00:41:02.159: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:41:03.159: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
*Mar  1 00:41:08.919: %LINK-5-CHANGED: Interface Loopback0, changed state to administratively down
*Mar  1 00:41:09.919: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to down
*Mar  1 00:41:14.659: %LINK-3-UPDOWN: Interface Loopback0, changed state to up
*Mar  1 00:41:15.659: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
R1#
タイトルとURLをコピーしました