# 7.Cisco Internetwork Operation System(IOS)
### 1.backup and restore running-setup
#### 1.1 backup
```linux
#sh run //查看DRAM中的running-config
#sh start //查看NVRAM中的start-config
#copy running-config start-config //將running-config複製到NVRAM, 文件名稱為start-config
#hostname Toddy
(Toddy)#copy run tftp //將running-config備份到TFTP service中, 文件名稱自動產生'Toddy_confg'
```
#### 1.2 restore
將1.1的backup設定還原
```linux
//修改running-config之後, 想恢復原先設定, from tftp restore
#copy tftp running-config
#copy tftp startup-config
```
#### 1.3 delete config
```
#erase startup-config
#reload
```
### 2.DHCP server setup
將Cisco Router設定成DHCP Server。以下網路為例。
先把R1設定成DHCP Server,R2則是DHCP Client。
設定完成後R2的fa0/0會自動完成IP設定

#### 2.1 用`ip dhcp pool <word>`進入DHCP Server Pool 設定模式
```
Router(config)#hostname R1
R1(config)#ip dhcp pool POOL_1 //進入DHCP server pool設定模式
R1(dhcp-config)#network 192.168.12.0 255.255.255.0 //要派發的IP範圍192.168.12.0/24
R1(dhcp-config)#default-router 192.168.12.1 //default gateway
R1(dhcp-config)#dns-server 192.168.12.101 //DNS server
R1(dhcp-config)#lease 7 //租用7天, 預設值是1天
```
##### 使用`ip dhcp excluded-address <IP>`保留IP不派出去
```
R1(config)#ip dhcp excluded-address 192.168.12.1 192.168.12.10 //保留10組IP不派發
R1(config)#ip dhcp excluded-address 192.168.12.101
```
##### 需要另外在fa0/0設定IP並且啟用
```
R1(config)#int fa0/0
R1(config-if)#ip address 192.168.12.1 255.255.255.0
R1(config-if)#no shutdown
```
#### 2.2 將R2的fa0/0的IP Address設定成DHCP
```
R2(config)#int fa0/0
R2(config-if)#ip address dhcp
R2(config-if)#no shutdown
```
##### 驗證R2是否取的IP
```
R2#sh int fa0/0 | i Internet
Internet address is 192.168.12.11/24
```
##### 在R1查看IP的派發狀況
```
R1(config)#sh ip dhcp binding
IP address Client-ID/ Lease expiration Type
Hardware address
192.168.12.11 0040.0B3A.3101 -- Automatic
```
#### 2.3 DHCP 中繼設定

```
(config)#int fa0/0
(config-if)#ip helper-address 10.10.10.254
```
#### 2.4 DHCP Cisco IOS設備驗證
```
#sh ip dhcp binding //列出已出租給client的IP地址, MAC address
#sh ip dhcp pool <poolname> //列出配置的IP地址的範圍, 每個pool中以出租address數量以及可用address數量
#sh ip dhcp server statistics //列出關於DHCP server訊息(很多)
#sh ip dhcp conflict //不知道做什麼的
```
### 3 Network Time Protocol網路時間協議(NTP)
假設有以下配置,system log server會紀錄來自控制台的消息,

```
R1(config)#logging host 172.16.10.1
R1(config)#service timestemp log datatime msec //給消息加上時間標籤
R1(config)#ntp server 172.16.10.1 servion 4 //統一使用NTP server給予的時間標籤
R1#sh ntp status //確認NTP client是否收到時間信號,stratum是1~15之間的數值, 16代表沒有收到時間訊號
R1#sh nttp associations
```
### 4 Cisco Discovery Protocol思科發現協議(CDP)

```
SW-3(config)#no cdp run //完全關閉CDP
SW-3(config)#cdp run //重啟CDP
SW-3(config-if)#cdp enable //在接口上啟用CDP
SW-3(config-if)#no cdp enable //在接口上進用CDP
```
#### 4.1 獲取CDP timer & holdtime資訊
- CDP globle parameter:
- CDP Timer:指定從活動接口發送CDP分組的週期
- CDP Holdtime:定發出的分組在臨接設備中保留多長時間
```
SW-3#sh cdp //顯示CDP Timer & CDP Holdtime
SW-3(config)#cdp timer 60 //每60秒發送一次CDP package
SW-3(config)#cdp holdtime 180 //鄰接設備保留分組多長時間
SW-3(config)#no cdp run //關閉CDP
SW-3(config)#cdp run //啟用CDP
SW-3(config-if)#cdp enable //在某接口啟用CDP
SW-3(config-if)#no cdp enable //在某接口禁用CDP
```
#### 4.2 收集鄰居訊息
- command `sh cdp neighbors`(sh cdp nei)只能可以提通<font color="red">直連設備</font>的訊息。<font color="red">如果RT和SW相連時,無法使用CDP獲得與SW相連設備的訊息</font>
- command `sh cdp neighbors detail`(sh cdp nei de)只能可以提通<font color="red">鄰接設備</font>的訊息。
```
SW-3#sh cdp neighbors //顯示鄰接設備
SW-3#sh cdp neighbors detail //顯示鄰接設備詳細訊息
```
:::info
`#sh cdp entry *`輸出的訊息和`sh cdp neighbors detail`一樣
:::

#### 4.3 使用CDP建立網路拓樸文件

```
Lab_A#sh run //顯示每個接口IP
Lab_A#sh cdp neighbors //連接設備類型, 接口類型
```
:::info
鏈路層發現協定(Link Layer Discovery Protocol,LLDP)是一種資料鏈路層協定,網路裝置可以通過在本地網路中傳送LLDPDU(Link Layer Discovery Protocol Data Unit)來通告其他裝置自身的狀態。是一種能夠使網路中的裝置互相發現並通告狀態、相互資訊的協定。跟CDP提供的資訊依樣,但可用於多家廠家。後續又針對語音做改版,改版後版名稱為LLDP-MAD(Media Endpoint discovery)。LLDP和LLDP-MAD不相容
:::
### 5.使用Telnet
是TCP/IP protocal 的一部分,一種虛擬終端協議,能夠遠端到設備,進而蒐集資料

```
//SW-3設定VTY密碼
SW-3(config)#line vty 0 15
SW-3(config-line)#login
SW-3(config-line)#password telnet
SW-3(config-line)#login
SW-1#telnet 10.100.128.8 //遠端到SW-3
SW-1#10.100.128.8//在cisco設備上可以不輸入telnet也可以遠端到SW-3
```
VTY密碼是user mode密碼,無法進入特權模式
#### 5.1 同時遠端到多台設備上
```
SW-1#10.100.128.8 //遠端到SW-3
SW-3>Ctrl+Shift+6 //再按X
SW-1# //回到SW-1
```
#### 5.2 檢查Telnet連線
```
SW-1#sh session
conn Host Address Byte Idle ConnName
1 10.100.128.9 10.100.128.9 0 10.100.128.9
*2 10.100.128.8 10.100.128.8 0 10.100.128.8
//*是代表最後建立,輸入兩次exit就可以返回
```
#### 5.3 檢查Telnet用戶
檢查當前switch使用的所有活動控制台端口和VTY端口
```
SW-1#sh users
Line User Host(s) Idle Location
0 con 0 10.100.128.9 00:00:01 //con代表本地控制台
```
#### 5.4 關閉Telnet會話
```
//處於遠端設備時使用exit
SW-3>exit
//處本地端設備時使用disconnect
SW-1#sh session //查看Telnet用戶
SW-1#disconnect 2
```
### 6.解析主機名稱
如果使用主機名稱(而不是IP位址)來連接遠端設備,需要解析主機名稱
解析主機名稱的方式兩種:
- 在每一台router創建主機表
- 配置domain name system(DNS)erver, 相當於動態主機表
#### 6.1創建主機表(手動)
主機表只提供所屬的router名稱解析
`ip host host_name [tcp_port_number] ip_address`
Telnet 默認使用TCP port 23, 當然也可以指定其他port。每個主機名稱最多可指定8的IP位址
```
SW-1#config t
SW-1(config)#ip host SW-2 10.100.128.9
SW-1(config)#ip host SW-3 10.100.128.8
SW-1(config)#do sh hosts //查看主機表
Host Port Flags Age Type Address(es)
SW-3 None (perm, OK) 0 IP 10.100.128.8
SW-2 None (perm, OK) 0 IP 10.100.128.9
```
查看主機表sh hosts, Flegs欄位顯示perm表示此筆資料是手動配置,
如果該欄位的值是temp,則是DNS解析得到的
##### 驗證主機表明稱的解析功能
```
SW-1#SW-3
password:
SW-3>Ctrl+Shift+6
SW-1#sh sessions
conn Host Address Byte Idle ConnName
1 SW-3 10.100.128.8 0 1 SW-3
*2 SW-2 10.100.128.9 0 1 SW-2
// 將主機名稱從主機表中刪除
SW-1(config)#no ip host SW-3
```
#### 6.2使用DNS解析名稱
```
//
SW-1#config t
SW-1(config)#ip domain-lookup // 啟用域名查找功能(系統默認),如果要取消此功能, 使用no ip domain-lookup
SW-1(config)#ip name-server 4.4.4.4 //指定DNS server位址, 最多6個
SW-1(config)#ip domain-name lammle.com //此命令可選, 鑑於DNS使用全限定域名(FQDN)系統, 必須以domain.com的格式提供二級DNS名稱
SW-1(config)#^z
```
:::info
如果沒有設定命令ip domain-name lammle.com, 之後要ping主機名稱就要輸入ping SW-3.lammle.com, 會稍微麻煩些
:::
配置DNS後, 可直接使用主機名稱ping或遠端使用設備, 如下:
```
SW-1#ping SW-3
SW-1#sh hosts //查看設備緩存的主機表中名稱解析訊息
```
### 7.網路連接性檢查和故障排除
###### tags: `CCNA`