วันเสาร์ที่ 29 กรกฎาคม พ.ศ. 2560

Python for Network Engineer : Telnet and Configure Cisco Devices


พอดีได้ลองทำ เลยมาเขียนแปะไว้ เผื่อท่านใดอยากลองเล่น

ผมลองเขียน Python โดยให้ตัวโปรแกรมสามารถ Telnet เข้าไปที่ Router และสั่งตั้งค่าตาม Code ที่เราเขียนไว้เป็นแบบอย่างง่ายๆ เบสิคๆ เลยครับ เพื่อให้ได้เห็นภาพแบบง่ายๆ และได้ไอเดียไปต่อยอดได้

ผมสร้าง Lab บน EVE-NG ขึ้นมา แบบง่ายๆ ผมต่อ Router ออกมาที่เครื่อง Notebook ผม


อย่างแรก ให้ดาวน์โหลด Python Interpreter ที่
https://www.python.org/downloads/



ใช้ Ver 2.x หรือ 3.x ก็ได้ครับ ใช้ได้เหมือนกัน จะต่างกันที่ Code บางตัว
แต่... ไม่ต้องห่วงครับ ในเว็บมี Document ให้ทั้ง Ver 2.x และ 3.x
  • Ver. 3.6 : https://docs.python.org/3.6/contents.html
  • Ver. 2.7 : https://docs.python.org/2.7/contents.html

ถัดมา ผมลงตัว PyCham ซึ่งเป็นตัว Editor มีประโยชน์มากๆ สำหรับใช้เขียนโปรแกรม Python ดาวน์โหลดได้ที่
https://www.jetbrains.com/pycharm/download/#section=windows

ใช้ Community Edition ก็เพียงพอครับ


หลังจากดาวน์โหลดมาแล้ว เปิดโปรแกรม PyCharm ขึ้นมา


ผมจะใช้ Python เพื่อให้ Telnet ไปที่อุปกรณ์ และ ลองสั่งให้ตั้งค่าที่ตัวอุปกรณ์ดูนะครับ

ผมใช้ Code ตามนี้เลย

import getpass
import telnetlib

HOST = "192.168.84.132"
user = input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")if password:
    tn.read_until(b"Password: ")
    tn.write(password.encode('ascii') + b"\n")
tn.write(b"enable\n")
tn.write(b"cisco\n")
tn.write(b"config ter\n")
tn.write(b"inter lo10\n")
tn.write(b"ip add 10.10.10.10 255.255.255.255\n")
tn.write(b"inter lo11\n")
tn.write(b"ip add 11.11.11.11 255.255.255.255\n")
tn.write(b"inter lo12\n")
tn.write(b"ip add 12.12.12.12 255.255.255.255\n")
print(tn.read_all().decode('ascii'))

มีส่วนที่ต้องแก้ไข ก็คือ
  • HOST = "หมายเลข IP address"
  • tn.write(b"ใส่คำสั่งที่ต้องการตั้งค่า\n")
ส่วนที่เหลือผมปรับมาให้บางส่วนละ สามารถลองนำไปใช้ได้เลย ปรับแค่ 2 ส่วนด้านบนก็พอครับ

ซึ่งผมเขียนให้สร้าง Interface Loopback10 , Loopback11 , Loopback12 และตั้งค่า IP address บนแต่ละ Interface Loopback

จากนั้นเอา Code ลองไป Run ใน PyCharm ดูครับว่าสามารถใช้งานได้ ไม่ติด Error ใดๆ


ในเคสที่ผม Run นี้ ไม่ติด Error ใดๆ แสดงว่า Code น่าจะใช้งานได้ เดี๋ยวต้องไปลองดู อันนี้ Save เป็นไฟล์เก็บไว้ก่อน ผมตั้งชื่อว่า "telnet.py"


ถัดมา ผมตั้งค่า IP address กับเปิด Telnet บน Router ก่อน



Router>enable
Router#configure terminal
Router(config)#enable password cisco
Router(config)#username supakorn password cisco
Router(config)#line vty 0 4
Router(config-line)# login local
Router(config-line)# transport input telnet

ลองทดสอบดูก่อนว่าสามารถ Telnet ได้จริง ผมลอง Telnet หา IP address ของตัวเอง


Router#telnet 192.168.84.132
Trying 192.168.84.132 ...

Open User Access Verification
Username: supakorn
Password:

Router>en
Password:
Router#

แบบนี้ แสดงว่า Telnet ได้ปกติ เดี๋ยวเราลอง Run ผ่าน Python ดูครับ

Code ที่ผมเขียนนี้ คือให้สร้าง Interface Loopback10 , Loopback11 , Loopback12 และตั้งค่า IP address บนแต่ละ Interface Loopback

ผมลอง "show ip interface brief" บน Router ดูก่อน   

Router#sh ip int br
Interface              IP-Address      OK? Method Status                Protocol
Ethernet0/0            unassigned      YES unset  administratively down down    
Ethernet0/1            192.168.84.132  YES DHCP   up                    up      
Ethernet0/2            unassigned      YES unset  administratively down down    
Ethernet0/3            unassigned      YES unset  administratively down down    

สังเกตุว่ายังไม่มี Interface Loopback นะครับ

เดี๋ยวลอง Run Python ที่เขียนเอาไว้ดู เอาแบบง่ายๆ ก็ ดับเบิ้ลคลิก ที่ไฟล์ได้เลยครับ

หลังจาก ดับเบิ้ลคลิก "telnet.py" ก็จะแสดงให้ใส่ username/password สำหรับ Telnet

ทีนี้ลองมาดูฝั่ง Router บ้างครับ (ผมทำการ "debug telnet" ไว้บน Router)

*Jul 29 14:11:54.398: Telnet2: 1 1 251 1
*Jul 29 14:11:54.398: TCP2: Telnet sent WILL ECHO (1)
*Jul 29 14:11:54.398: Telnet2: 2 2 251 3
*Jul 29 14:11:54.398: TCP2: Telnet sent WILL SUPPRESS-GA (3)
*Jul 29 14:11:54.398: Telnet2: 80000 80000 253 24
*Jul 29 14:11:54.398: TCP2: Telnet sent DO TTY-TYPE (24)
*Jul 29 14:11:54.398: Telnet2: 10000000 10000000 253 31
*Jul 29 14:11:54.398: TCP2: Telnet sent DO WINDOW-SIZE (31)
*Jul 29 14:11:54.399: TCP2: Telnet received DONT ECHO (1)
*Jul 29 14:11:54.399: TCP2: Telnet sent WONT ECHO (1)
*Jul 29 14:11:54.400: TCP2: Telnet received DONT SUPPRESS-GA (3)
*Jul 29 14:11:54.400: TCP2: Telnet sent WONT SUPPRESS-GA (3)
*Jul 29 14:11:54.400: TCP2: Telnet received WONT TTY-TYPE (24)
*Jul 29 14:11:54.400: TCP2: Telnet sent DONT TTY-TYPE (24)
*Jul 29 14:11:54.400: TCP2: Telnet received WONT WINDOW-SIZE (31)
*Jul 29 14:11:54.400: TCP2: Telnet sent DONT WINDOW-SIZE (31)
*Jul 29 14:11:54.414: TCP2: Telnet received DONT ECHO (1)
*Jul 29 14:11:54.414: TCP2: Telnet received DONT SUPPRESS-GA (3)
*Jul 29 14:11:54.414: TCP2: Telnet received WONT TTY-TYPE (24)
*Jul 29 14:11:54.414: TCP2: Telnet received WONT WINDOW-SIZE (31)

จะเห็นว่ามี Session Telnet เข้ามาที่ Router ครับ ทีนี้ไปลองดูบน Router ว่า Interface Loopback ได้ถูก configure ไปแล้วหรือไม่

Router#show ip int br
Interface                  IP-Address      OK? Method Status                Protocol
Ethernet0/0                unassigned      YES unset  administratively down down    
Ethernet0/1                192.168.84.132  YES DHCP   up                    up      
Ethernet0/2                unassigned      YES unset  administratively down down    
Ethernet0/3                unassigned      YES unset  administratively down down    
Loopback10                 10.10.10.10     YES manual up                    up      
Loopback11                 11.11.11.11     YES manual up                    up      
Loopback12                 12.12.12.12     YES manual up                    up      

มาแล้วครับ Interface Loopback !!!! 

อาจจะไม่ได้เขียนวิธีการ และ ไม่ได้อธิบายโดยละเอียดไว้นะครับ..
แต่เท่านี้ก็หวังว่าจะเป็นตัวอย่างแบบง่ายๆ ให้ได้ไอเดีย เผื่อใครอยากจะไปลองเล่นดูครับ

เราสามารถค่อยทยอยปรับ หรือ เขียนให้ Advance ขึ้นไปอีกได้ อย่างเช่น... 
เราใส่ Command ไว้เป็น Text File แล้วให้ตัวโปรแกรมไปเอา Command จากใน Text File มาเพื่อตั้งค่าลงบนอุปกรณ์ เป็นต้น

วันพุธที่ 5 เมษายน พ.ศ. 2560

Basic IOS XR Configuration (การตั้งค่า IOS XR พื้นฐาน) ตอนที่ 1



Network Diagram

 

Lab Content
  • LAB-X01 : ตั้งค่า Hostname
  • LAB-X02 : ตั้งค่า IPv4 Address
  • LAB-X03 : ตั้งค่า IPv6 Address
  • LAB-X04 : ตั้งค่า OSPFv2
  • LAB-X05 : ตั้งค่า OSPF Network Type
  • LAB-X06 : ตั้งค่า OSPF Cost

LAB-X01 : ตั้งค่า Hostname

IOS XR

RP/0/0/CPU0:ios#
RP/0/0/CPU0:ios# configure terminal
RP/0/0/CPU0:ios(config)# hostname XR1
RP/0/0/CPU0:ios(config)# commit
Tue Apr  4 13:57:17.310 UTC
RP/0/0/CPU0:XR1(config)#
RP/0/0/CPU0:XR1(config)#

IOS

Router# configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)# hostname R1
R1(config)#

LAB-X02 : ตั้งค่า IPv4 Address

IOS XR

RP/0/0/CPU0:XR1#
RP/0/0/CPU0:XR1# configure terminal
RP/0/0/CPU0:XR1(config)# interface Loopback0
RP/0/0/CPU0:XR1(config-if)# ipv4 address 2.2.2.2 255.255.255.255
RP/0/0/CPU0:XR1(config-if)# no shutdown
RP/0/0/CPU0:XR1(config-if)# interface GigabitEthernet0/0/0/0
RP/0/0/CPU0:XR1(config-if)# ipv4 address 172.16.0.2 255.255.255.0
RP/0/0/CPU0:XR1(config-if)# no shutdown
RP/0/0/CPU0:XR1(config-if)# commit

IOS

R1#
R1# configure terminal
R1(config)# interface Loopback0
R1(config-if)# ip address 1.1.1.1 255.255.255.255
R1(config-if)# no shutdown
R1(config-if)# interface GigabitEthernet0/0
R1(config-if)# ip address 172.16.0.1 255.255.255.0
R1(config-if)# no shutdown

ตรวจสอบการตั้งค่า IPv4 Address

IOS XR

RP/0/0/CPU0:XR1# show ipv4 interface brief
Tue Apr  4 13:49:43.691 UTC

Interface                             IP-Address      Status             Protocol Vrf-Name
Loopback0                           2.2.2.2            Up                 Up         default
MgmtEth0/0/CPU0/0            unassigned      Shutdown       Down     default
GigabitEthernet0/0/0/0         172.16.0.2        Up                  Up         default
GigabitEthernet0/0/0/1         unassigned      Shutdown        Down     default
GigabitEthernet0/0/0/2         unassigned      Shutdown        Down     default  


IOS 

R1# show ip interface brief
Interface                      IP-Address      OK? Method     Status                Protocol
GigabitEthernet0/0         172.16.0.1       YES manual     up                    up     
GigabitEthernet0/1         unassigned      YES NVRAM    up                    up     
GigabitEthernet0/2         unassigned      YES NVRAM    administratively down down   
GigabitEthernet0/3         unassigned      YES NVRAM    administratively down down   
Loopback0                     1.1.1.1            YES manual     up                    up      



LAB-X03 : ตั้งค่า IPv6 Address

IOS XR

RP/0/0/CPU0:XR1#
RP/0/0/CPU0:XR1# configure terminal
RP/0/0/CPU0:XR1(config)# interface Loopback0
RP/0/0/CPU0:XR1(config-if)# ipv6 address 2001::2/128
RP/0/0/CPU0:XR1(config-if)# no shutdown
RP/0/0/CPU0:XR1(config-if)# interface GigabitEthernet0/0/0/0
RP/0/0/CPU0:XR1(config-if)# ipv6 address 2001:172:16::2/64
RP/0/0/CPU0:XR1(config-if)# no shutdown
RP/0/0/CPU0:XR1(config-if)# commit

IOS

R1#
R1# configure terminal
R1(config)# interface Loopback0
R1(config-if)# ipv6 address 2001::1/128
R1(config-if)# no shutdown
R1(config-if)# interface GigabitEthernet0/0
R1(config-if)# ipv6 address 2001:172:16::1/64
R1(config-if)# no shutdown

ตรวจสอบการตั้งค่า IPv6 Address

IOS XR

RP/0/0/CPU0:XR1# show ipv6 interface brief
Tue Apr  4 14:05:59.564 UTC
Loopback0              [Up/Up]
    fe80::64d2:cbff:fed0:ae91                    
    2001::2  
                                    
MgmtEth0/0/CPU0/0      [Shutdown/Down]
    unassigned                                   
GigabitEthernet0/0/0/0 [Up/Up]
    fe80::5200:ff:fe01:1                         
    2001:172:16::2  
                             
GigabitEthernet0/0/0/1 [Shutdown/Down]
    unassigned                                   
GigabitEthernet0/0/0/2 [Shutdown/Down]
    unassigned                        


IOS 

R1# show ipv6 interface brief
GigabitEthernet0/0     [up/up]
    FE80::5200:FF:FE02:0
    2001:172:16::1

GigabitEthernet0/1     [up/up]
    unassigned
GigabitEthernet0/2     [administratively down/down]
    unassigned
GigabitEthernet0/3     [administratively down/down]
    unassigned
Loopback0              [up/up]
    FE80::5200:FF:FE02:0
    2001::1


LAB-X04 : ตั้งค่า OSPFv2

IOS XR

RP/0/0/CPU0:XR1(config)# router ospf 1
RP/0/0/CPU0:XR1(config-ospf)# router-id 2.2.2.2
RP/0/0/CPU0:XR1(config-ospf)# area 0
RP/0/0/CPU0:XR1(config-ospf-ar)#  interface Loopback0
RP/0/0/CPU0:XR1(config-ospf-ar-if)#  exit
RP/0/0/CPU0:XR1(config-ospf-ar)#  interface GigabitEthernet0/0/0/0
RP/0/0/CPU0:XR1(config-ospf-ar-if)# commit

IOS

R1(config)# router ospf 1
R1(config-router)# router-id 1.1.1.1
R1(config-router)# network 1.1.1.1 0.0.0.0 area 0
R1(config-router)# network 172.16.0.1 0.0.0.0 area 0

ตรวจสอบ OSPFv2

IOS XR

RP/0/0/CPU0:XR1# show ospf neighbor
Tue Apr  4 14:16:49.610 UTC

* Indicates MADJ interface
# Indicates Neighbor awaiting BFD session up

Neighbors for OSPF 1
Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1         1     FULL/ DR        00:00:36    172.16.0.1      GigabitEthernet0/0/0/0
    Neighbor is up for 08:57:30   



RP/0/0/CPU0:XR1# show ospf database
Tue Apr  4 14:18:54.651 UTC
            OSPF Router with ID (2.2.2.2) (Process ID 1)
                Router Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         347         0x8000001a 0x00bf84 3
2.2.2.2         2.2.2.2         230         0x8000001a 0x005ddd 3



RP/0/0/CPU0:XR1# show route ospf
Tue Apr  4 14:22:30.396 UTC
O    1.1.1.1/32 [110/2] via 172.16.0.1, 00:00:04, GigabitEthernet0/0/0/0



RP/0/0/CPU0:XR1# show ospf interface g0/0/0/0
Tue Apr  4 14:27:42.205 UTC

GigabitEthernet0/0/0/0 is up, line protocol is up
  Internet Address 172.16.0.2/24, Area 0
  Process ID 1, Router ID 2.2.2.2, Network Type BROADCAST, Cost: 1
  Transmit Delay is 1 sec, State DR, Priority 1, MTU 1500, MaxPktSz 1500
  Designated Router (ID) 2.2.2.2, Interface address 172.16.0.2
  Backup Designated router (ID) 1.1.1.1, Interface address 172.16.0.1
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    Hello due in 00:00:03:762
  Index 2/2, flood queue length 0
  Next 0(0)/0(0)
  Last flood scan length is 1, maximum is 2
  Last flood scan time is 0 msec, maximum is 0 msec
  LS Ack List: current length 0, high water mark 2
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 1.1.1.1  (Backup Designated Router)
  Suppress hello for 0 neighbor(s)
  Multi-area interface Count is 0


IOS 

R1# show ip ospf neighbor
Neighbor ID     Pri   State           Dead Time   Address         Interface
2.2.2.2           0   FULL/  BDR        00:00:39    172.16.0.2      GigabitEthernet0/0



R1# show ip ospf database
            OSPF Router with ID (1.1.1.1) (Process ID 1)
                Router Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum Link count
1.1.1.1         1.1.1.1         126         0x8000001D 0x006815 2
2.2.2.2         2.2.2.2         128         0x8000001C 0x005A17 2

                Net Link States (Area 0)
Link ID         ADV Router      Age         Seq#       Checksum
172.16.0.2      2.2.2.2         128         0x80000001 0x005017



R1# show ip route ospf

Gateway of last resort is not set
      2.0.0.0/32 is subnetted, 1 subnets
O        2.2.2.2 [110/2] via 172.16.0.2, 00:03:03, GigabitEthernet0/0



R1# show ip ospf interface gi0/0
GigabitEthernet0/0 is up, line protocol is up
  Internet Address 172.16.0.1/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 1
  Topology-MTID    Cost    Disabled    Shutdown      Topology Name
        0           1         no          no            Base
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 2.2.2.2, Interface address 172.16.0.2
  Backup Designated router (ID) 1.1.1.1, Interface address 172.16.0.1
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:02
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 2/2, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 2.2.2.2  (Designated Router)
  Suppress hello for 0 neighbor(s)



LAB-X05 : ตั้งค่า OSPF Network Type

IOS XR

RP/0/0/CPU0:XR1(config)# router ospf 1
RP/0/0/CPU0:XR1(config-ospf)# area 0
RP/0/0/CPU0:XR1(config-ospf-ar)# interface gigabitEthernet0/0/0/0
RP/0/0/CPU0:XR1(config-ospf-ar-if)# network point-to-point
RP/0/0/CPU0:XR1(config-ospf-ar-if)# commit

IOS

R1(config)# interface gigabitEthernet 0/0
R1(config-if)# ip ospf network point-to-point

ตรวจสอบการตั้งค่า IPv4 Address

IOS XR

RP/0/0/CPU0:XR1# show ospf interface gigabitEthernet 0/0/0/0 | inc Network
Tue Apr  4 14:37:40.664 UTC
  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_POINT, Cost: 1


IOS 

R1# show ip ospf interface gigabitEthernet 0/0 | inc Network
  Internet Address 172.16.0.1/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1



LAB-X06 : ตั้งค่า OSPF Cost

ตรวจสอบค่า OSPF Cost เดิมก่อนปรับค่า

IOS XR

RP/0/0/CPU0:XR1# show ospf interface gigabitEthernet 0/0/0/0 | inc Network
Tue Apr  4 14:37:40.664 UTC
  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_POINT, Cost: 1


IOS 

R1# show ip ospf interface gigabitEthernet 0/0 | inc Network
  Internet Address 172.16.0.1/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 1



ตั้งค่า OSPF Cost

IOS XR

RP/0/0/CPU0:XR1(config)# router ospf 1
RP/0/0/CPU0:XR1(config-ospf)# area 0
RP/0/0/CPU0:XR1(config-ospf-ar)# interface gigabitEthernet 0/0/0/0
RP/0/0/CPU0:XR1(config-ospf-ar-if)# cost 10
RP/0/0/CPU0:XR1(config-ospf-ar-if)# commit
IOS

R1(config)# interface gigabitEthernet 0/0
R1(config-if)# ip ospf cost 10

ตรวจสอบค่า OSPF Cost

IOS XR

RP/0/0/CPU0:XR1# show ospf interface gigabitEthernet 0/0/0/0 | inc Network
Tue Apr  4 14:37:40.664 UTC
  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_POINT, Cost: 10


IOS 

R1# show ip ospf interface gigabitEthernet 0/0 | inc Network
  Internet Address 172.16.0.1/24, Area 0, Attached via Network Statement
  Process ID 1, Router ID 1.1.1.1, Network Type POINT_TO_POINT, Cost: 10 



วันอาทิตย์ที่ 30 ตุลาคม พ.ศ. 2559

การตั้งค่า Cisco WLC โดยใช้ Local Web Authentication (LWA) ด้วย Local Users

สวัสดีครับ วันนี้ ผมจะมาแบ่งปันวิธีการตั้งค่า Cisco Wireless LAN Controller (WLC) แบบ Local Web Authentication (LWA) โดยใช้ Local Users กันครับ

จุดประสงค์
  1. เมื่อเชื่อมต่อ SSID แล้ว ให้แสดงหน้า Web Authentication ขึ้นมา
  2. Username/Password ที่ใช้งาน Login ผ่าน Web ให้ใช้ Local User ที่สร้างไว้บน Cisco WLC
เราลองมาดูวิธีการตั้งค่ากันครับ


1. สร้าง SSID สำหรับ Web Authen



2. ตั้งค่า SSID 
  • ในหน้า General
    • Status : ติ๊กถูก Enabled
    • Interface/Interface Group(G) : เลือก Interface ที่ต้องการใช้งาน (ในตัวอย่างนี้ผมใช้เป็น Interface Management ซึ่งจะต้องตั้งค่า Interface ของ WLC ก่อนนะครับ)
    • Broadcast SSID : ติ๊กถูก Enabled

  • ในหน้า Security > Layer 2
    •  เลือก Layer 2 Security เป็น "None"
  • ในหน้า Security > Layer 3
    • เลือก Layer 3 Security เป็น "Web Policy"
    • เลือก "Authentication"
  •  ในหน้า Security > AAA Servers
    • เลื่อนลงมาด้านล่างสุด ตรงหัวข้อ "Authentication priority order for web-auth user" ให้สังเกตุตรง "Order Used For Authentication" เลือก "LOCAL" มาอยู่บนสุด เพื่อใช้งาน User ที่สร้างบน Cisco WLC

 3. ตั้งค่า Web Authentication
  • ในหน้า Security ด้านบน
    • ไปที่เมนู "Web Auth" ด้านซ้าย แล้วเลือก "Web Login Page" 
    • ตรงหัวข้อ "Web Authentication Type" เลือกใช้เป็น "Internal (Default)"
    • สามารถปรับแต่งหัวข้อและข้อความตามต้องการได้
      • เมื่อปรับแต่งข้อความเสร็จแล้ว ให้กด "Apply" และ ดู "Preview"
      •  กดดู "Preview"
  

 4. สร้าง Username / Password บน Cisco WLC
  •  ในหน้า Security ด้านบน
    • ไปที่เมนู "Local Net Users" ด้านซ้าย แล้วเลือก "New"
    • สร้าง Username / Password ให้เรียบร้อย
    • เลือก WLAN Profile เป็น SSID ชื่อ "Web" (ที่เราสร้างขึ้นมาตอนแรก เพื่อให้ User นี้ใช้งานกับ SSID ชื่อ Web ได้เพียง SSID เดียว)
    • จากนั้นกด "Apply"


5. ทดสอบการใช้งาน
  • เชื่อมต่อ SSID : Web
  • Cisco WLC จะทำการ redirect web authentication ขึ้นมาให้ (ให้ทำการกด continue ไปได้เลย)
  •  ทำการใส่ Username / Password ที่สร้างไว้ก่อนหน้านี้ แล้วกด "Submit"
  •  ถ้า Username / Password ถูกต้อง และ สามารถใช้งานได้ ก็จะแสดงหน้า Login Successful
  •  สามารถใช้งานได้ตามปกติ


ก็จบไปแล้ว สำหรับการตั้งค่า Cisco WLC โดยใช้ Local Web Authentication ด้วย Local Users นะครับ ก็หวังว่าน่าจะเป็นประโยชน์กับผู้ที่กำลังศึกษาอยู่นะครับ แล้วไว้รอบหน้าจะทยอยมาเขียนเพิ่มให้เรื่อยๆอีกนะครับ

ขอบคุณครับ
By ReFeeL

วันอังคารที่ 17 พฤษภาคม พ.ศ. 2559

New CCNA R&S Version 3.0 (200-125)

สวัสดีครับทุกท่าน วันนี้ได้รับข่าวดีมาจาก Cisco (หรือจะเป็นข่าวร้าย ฮ่าๆ) ซึ่งทาง Cisco ได้ประกาศเปลี่ยนรหัสสอบของ CCNA Routing and Switching

จาก CCNA R&S Version 2.0 (200-120) เปลี่ยนเป็น CCNA R&S Version 3.0 (200-125)

ซึ่งในเนื้อหาของ CCNA R&S Version 3.0 มีการปรับเปลี่ยนเนื้อหาเยอะพอสมควรครับ ผมลองสรุปมาให้ดูว่าในเวอร์ชั่นใหม่ จะมีเนื้อหาอะไรเพิ่มเข้ามาบ้าง

หัวข้อที่เปลี่ยนไประหว่าง Version 2.0 และ Version 3.0 



ลองมาดูเนื้อหาของ Version 3.0 ที่เพิ่มเข้ามาในแต่ละ Module กันบ้างครับ

1.0 Network Fundamentals
  • เพิ่มเนื้อหาเบื้องต้นเกี่ยวกับ
    • Firewalls
    • Access points
    • Wireless controllers
  • เพิ่มเนื้อหาเกี่ยวกับ cloud resource
    • Traffic path to internal and external cloud services
    • Virtual services
    • Basic virtual network infrastructure
  • เพิ่มเนื้อหาสำหรับวิธีการแก้ไขปัญหา 
  • เพิ่มเนื้อหาเชิงลึกสำหรับ IPv6

2.0 LAN Switching Technologies
  • เพิ่มเนื้อหาสำหรับวิธีการแก้ไขปัญหาบน Interface และ Cable
  • เพิ่มเนื้อหาเบื้องต้นเกี่ยวกับ Voice VLAN
  • เพิ่มเนื้อหาเกี่ยวกับ STP features
    • PortFast
    • BPDU guard
  • เพิ่มเนื้อหา LLDP
  • เนื้อหา VTP (v1 , v2) ถูกเพิ่มกลับเข้ามา
  • เพิ่มเนื้อหาเกี่ยวกับ Stacking และ Chassis Aggregation

3.0 Routing Technologies
  • เพิ่มเนื้อหา Routing Concept
    • Packet handling along the path through a network
    • Forwarding decision based on route lookup
    • Frame rewrite
  • เพิ่มเนื้อหาการทำ static route มากขึ้น
    • Default route
    • Network route
    • Host route
    • Floating static
  • เพิ่มเนื้อหาการทำ Inter VLAN Routing
    • SVI
  • เพิ่มเนื้อหาเกี่ยวกับ OSPF (IPv4 และ IPv6) มากขึ้น
    • excluding authentication
    • filtering
    • manual summarization
    • Redistribution
    • Stub
    • virtual-link
    • LSAs
  • เพิ่มเนื้อหาเกี่ยวกับ EIGRP (IPv4 และ IPv6) มากขึ้น
    • excluding authentication
    • filtering
    • manual summarization
    • Redistribution
    • Stub
  • เพิ่มเนื้อหา RIPv2 กลับเข้ามา
  • เพิ่มเนื้อหาสำหรับวิธีการแก้ไขปัญหาบน Layer 3

4.0 WAN Technologies
  • เพิ่มเนื้อหา PPP และ MLPPP บน WAN โดยใช้ local authentication
  • เพิ่มเนื้อหา PPPoE โดยใช้ local authentication
  • เพิ่มเนื้อหาเกี่ยวกับ Internet VPN
    • DMVPN
    • Site-to-Site VPN
    • Client VPN

  • เพิ่มเนื้อหาเกี่ยวกับ single-homed branch connectivity โดยใช้ eBGP IPv4
  • เพิ่มเนื้อหาเกี่ยวกับ QoS พื้นฐาน
    • Marking
    • Device Trust
    • Priority
      • Voice
      • Video
      • Data
    • Shaping
    • Policing
    • Congestion Management

5.0 Infrastructure Services
  • เนื้อหาส่วนนี้คล้ายเนื้อหาเดิม มีเพิ่มเนื้อหาเชิงลึกของ DNS


6.0 Infrastructure Services
  • เพิ่มเนื้อหา access layer security
    • 802.1X
    • DHCP snooping
    • Nondefault native VLAN

  • เพิ่มเนื้อหาตรวจสอบ ACLs โดยใช้ APIC-EM path trace
  • เพิ่มเนื้อหา AAA ด้วย TACACS+ และ RADIUS

7.0 Infrastructure Management
  • เพิ่มเนื้อหา SNMPv3
  • เพิ่มเนื้อหา การแก้ปัญหา network connectivity โดยใช้ ICMP exho-based IP SLA
  • เพิ่มเนื้อหา การ verify IOS upgrade และ recovery ผ่าน SCP , FTP , TFTP และการทำ MD5 verity
  • เพิ่มเนื้อหา การแก้ไขปัญหาโดยใช้ IOS Tools
    • Ping และ Traceroute ด้วย Extend option
    • Terminal Monitor
    • Log Events
    • Local SPAN 
  • เพิ่มเนื้อหาเกี่ยวกับ network programmability
    • Function of a controller
    • Separation of control plane and data plane
    • Northbound and southbound APIs

เนื้อหาที่ถูกตัดออก
  • Switching Process (CEF , Store and Forward , Cut Through)
  • Frame-Relay
  • VRRP และ GLBP
  • NetFlow

เท่าที่ผมลองดูเนื้อหาแล้ว โดยความคิดเห็นส่วนตัวผมว่าเนื้อดูกระชับและทันสมัยกับเทคโนโลยีในปัจจุบันเลยทีเดียวครับ และสุดท้ายก็ตัด Frame-Relay ออกไปจาก CCNA R&S ได้ซักที ฮ่าๆ

เนื้อหาใหม่ดูน่าสนใจมากๆครับ สามารถไปดูหัวข้อเต็มๆได้ที่ Cisco เลยครับ ตาม Link ด้านล่าง

สุดท้าย CCNA R&S Version 2.0 (200-120) จะสามารถสอบได้ในวันสุดท้ายวันที่ 20 สิงหาคม 2559 (August 2016) สำหรับท่านใดที่กำลังเตรียมตัวสอบ CCNA R&S เร็วนี้ อาจจะต้องวางแผนกันซักหน่อยแล้วครับ
By ReFeeL

วันพฤหัสบดีที่ 11 กุมภาพันธ์ พ.ศ. 2559

ความหมายและการตั้งค่า Timeout 3 ค่า บน Cisco WLC

มาดูความหมายและการตั้งค่า Timeout 3 ค่า บน Cisco WLC กันครับ
  1. Sesstion Timeout
  2. User Idle Timeout
  3. Sleeping Client Timeout
Session Timeout
อยู่ภายใต้ WLANs จากนั้นเข้าไปที่ SSID และเลือก tab "Advanced"



Session Timeout คือ ค่าระยะเวลาที่กำหนด session ของ client กับ WLC เมื่อถึงระยะเวลาที่กำหนดไว้ WLC จะทำการตัด session กับ client ถ้า client ยังต้องการใช้งานอยู่ จะต้องทำการ authen ใหม่ (re-authen) ซึ่งมีค่า default อยู่ที่ 1800 วินาที

ตัวอย่างการใช้งาน เช่น
เราต้องปรับให้ client มีการ re-authen ทุกๆ 3 นาที เราก็สามารถไปปรับค่า session timeout เป็น 180 วินาทีได้

ซึ่งการตั้งค่า session timeout สามารถตั้งค่าระยะเวลาได้ดังนี้
  • 300-86400 สำหรับการใช้งาน 802.1x
  • 0-65535 สำหรับ security ชนิดอื่น
  • สามารถ disable session timeout หรือ ใส่ "0"  สำหรับ SSID ที่เป็น Open (ไม่ได้ใช้งาน authen)

User Idle Timeout
อยู่ภายใต้ Controller และ General ด้านซ้ายมือ


User Idle Timeout เป็น การตั้งค่าบน global (สามารถตั้งค่าเป็น per SSID ได้เช่นกัน) ซึ่งถ้าระหว่าง Access Point กับ client ไม่มีการสื่อการส่ง data กันภายในระยะเวลาที่กำหนด client นั้นก็จะถูกลบออกจาก WLC ไป ซึ่งอาจจะเกิดจาก client ปิดเครื่องไป หรือ เดินไปที่อื่น โดยที่ไม่ได้ dis-associate กับ Access Point เป็นต้น ซึ่งมีค่า default อยู่ที่ 300 วินาที

เมื่อ client เครื่องเดิมจะกลับมาใช้งานใหม่ก็ต้องทำการ associate ใหม่ และ authen ใหม่


Sleeping Client Timeout
อยู่ภายใต้ WLANs จากนั้นเข้าไปที่ SSID และเลือก tab "Security" --> tab "Layer "


Sleeping Client Timeout ใช้ในกรณีเมื่อ client ทำการ authen ผ่าน web authen ไปแล้ว และ client เกิด sleep ไป เช่น sleep notebook ไว้เดินจากที่นึงไปอีกที่นึง เป็นต้น เมื่อเปิดเครื่องขึ้นมาจาก sleep ก็สามารถใช้งานได้เลย โดยไม่ต้อง authen ใหม่

ซึ่งถ้าเราไม่ตั้งค่า Sleeping Client Timeout ไว้ เมื่อ client sleep ไปแล้วกลับขึ้นมาใช้งานจะต้องทำการ authen ใหม่ทุกครั้ง

** Sleeping Client Timeout เป็น local มีผลเฉพาะบน WLC ตัวที่ client ใช้งานอยู่ ถ้า client มีการใช้งานข้าม WLC จะต้องทำการ authen ใหม่กับ WLC ตัวอื่น **


By ReFeeL

วันพฤหัสบดีที่ 7 มกราคม พ.ศ. 2559

การลบ VLAN ออกจาก Switch โดยที่ยังมี VLAN อยู่บน Interface จะเกิดอะไรขึ้น !!

การลบ VLAN ออกจาก Switch โดยที่ยังมี VLAN อยู่บน Interface จะเกิดอะไรขึ้น
.
.
หายไปนานเลยครับ งานยุ่งๆ พอดีมีคำถามมาจากกลุ่มใน Facebook CCNA Hunter Group ว่า
"การลบ VLAN ออกจาก Switch โดยที่ยังมี VLAN อยู่บน Interface จะเกิดอะไรขึ้น

ผมเลยนำมาตอบ และ ทดสอบให้ดูในบทความนี้ครับ มาลองดูกันดีกว่า
.
.
ปกติแล้ว ถ้าเรา access vlan xx ลงไปที่ Interface เช่น
interface fa0/1
 switchport mode access
 switchport access vlan 10

ถ้าเรายังไม่สร้าง vlan 10 เมื่อใส่ command "switchport access vlan 10" switch จะทำการสร้าง vlan 10 ขึ้นมาให้ใน database โดยอัตโนมัติ
interface fa0/1
 switchport mode access
 switchport access vlan 10 
% Access VLAN does not exist. Creating vlan 10

เมื่อ show vlan brief จะเห็น ว่า vlan10 มี Fa0/1 เป็น member


แต่พอลบ vlan 10 ออกไปแล้ว ทำให้ไม่มี vlan 10 อยู่ใน database
Switch(config)# no vlan 10

แต่ถ้า show run interface fa0/1 จะเห็นมี switchport access vlan 10
Switch#show run int fa0/1
.
interface FastEthernet0/1

  switchport access vlan 10
  switchport mode access
เนื่องจากมันไม่ได้เกี่ยวกัน การไม่มี vlan database ไม่ได้ทำให้ config บน RAM หายไป และพอร์ตนั้นก็ไม่ได้ถูก shutdown ด้วย
Switch#sh int fa0/1
FastEthernet0/1 is up, line protocol is up (connected)
แต่ให้ลองสังเกตุโดยใช้ "show interface fa0/1 switchport"

สังเกตุบรรทัดรองสุดท้าย "Access Mode VLAN: 10 (Inactive)"

พอร์ตนี้ยังคงอยู่ใน vlan 10 นะครับ แต่เป็น Inactive เพราะไม่มี vlan database และมันไม่สามารถ forward ได้อย่างแน่นอน เพราะไปสัมพันธ์กับ Spanning-Tree ลองดูผลของ show spanning-tree


เห็นไหมครับว่า ไม่มี vlan 10 ใน spanning-tree เพราะฉะนั้นมัน forward ไม่ได้แน่นอนล่ะ (แล้ว vlan 1 ที่เราเห็นว่า block มันเป็น native vlan ก็ไม่ได้ใช้งานเพราะ Fa0/1 ไม่ได้เป็น Trunk Mode)
 

แต่ถ้ามี vlan 10 ใน database ผลจะเป็นแบบนี้



สรุปได้ว่า การที่เราลบ VLAN xx ออกจาก switch โดยที่ยังมี VLAN xx บน interface อยู่ (ด้วย command "switchport access vlan xx") จะทำให้ไม่สามารถใช้งาน VLAN xx บน interface นั้นได้ครับ

ถ้าเราสร้าง VLAN xx คืนกลับมาบน database ก็จะให้ interface ที่มี VLAN xx อยู่ สามารถกลับมาใช้งานได้ตามปกติครับ

การทดสอบนี้อ้างอิงจาก Cisco IOS นะครับ ซึ่งบน IOS-XE , NX-OS อาจจะให้ผลแตกต่างกันออกไป


ก็หวังว่าจะเป็นประโยชน์นะครับ ขอบคุณมากครับที่ติดตาม
By ReFeeL

วันเสาร์ที่ 16 พฤษภาคม พ.ศ. 2558

การ Ping หลายๆ IP พร้อมกัน โดยใช้ TCL Script (TCLSH)

การ Ping หลายๆ IP พร้อมกัน โดยใช้ TCL Script (TCLSH)


TCL (Tool Control Language) เป็นภาษา Script ที่สามารถใช้บน Cisco IOS ตั้งแต่ Version 12.2(25) ขึ้นไป มันคือการเขียน Programming เพื่อสั่งให้อุปกรณ์ทำตามคำสั่งที่เราเขียนไว้ ถ้าผู้ใช้งานมีพื้นฐานด้าน programming มาก่อน จะสามารถใช้งานได้ง่ายขึ้นครับ

ในการสอบ CCIE Routing and Switching นั้น ผลสุดท้ายของโจทย์คือ ทั้ง Topology จะต้องติดต่อกันได้ทุก IP ตามที่โจทย์กำหนด ดังนั้นด้วยเวลาที่จำกัด การที่มาคอย Ping ที่ละ IP จะทำให้เสียเวลาเป็นอย่างมาก ดังนั้นเพื่อลดเวลาตรงจุดนี้ (หรือพูดง่ายๆก็คือ ขี้เกียจนั่นเอง 555+ ) เราจึงหา Tool มาช่วยซักหน่อย

วันนี้ผมจะนำ TCL Script มาใช้ในการช่วย Ping หลายๆ IP พร้อมกัน โดยที่เราไม่ต้องมานั่ง Ping ทีละ IP แบบอย่างง่าย โดยมีขั้นตอน ดังนี้
  1. ทำการ Lists IP address ที่เราต้องการ Ping ออกมาก่อน ตัวอย่าง เช่น
    12.1.1.1
    14.1.1.1
    11.1.1.1
    11.2.1.1
    11.3.1.1
    12.1.1.2
  2. เขียนคำสั่ง TCL Script โดยเอาชุด IP ที่ต้องการ Ping ไปวาง ดังนี้
    tclsh
    foreach ip {
    12.1.1.1
    14.1.1.1
    11.1.1.1
    11.2.1.1
    11.3.1.1
    12.1.1.2 } {ping $ip repeat 10}
    สร้างตัวแปรชื่อ ip โดยใส่หมายเลข IP address ไปเก็บไว้ จากนั้นเขียน foreach เพื่อให้วน loop หมายเลข IP address แล้วสั่ง ping โดยเรียกตัวแปรมาใช้ $ip (repeat 10 หมายถึงให้ Ping 10 packet)
     
  3. จากนั้น Copy TCL Script ข้อ 2 ไปวางใน Router
    Router#tclsh
    Router(tcl)#foreach ip {
    +>(tcl)#12.1.1.1
    +>(tcl)#14.1.1.1
    +>(tcl)#11.1.1.1
    +>(tcl)#11.2.1.1
    +>(tcl)#11.3.1.1
    +>(tcl)#12.1.1.2 } {ping $ip re 10}
  4. จากนั้นกด Enter
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 14.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.1.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.2.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 11.3.1.1, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 12.1.1.2, timeout is 2 seconds:
    !!!!!!!!!!
    Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

เห็นไหมครับว่า แบบนี้จะลดเวลาของเราได้พอสมควรถ้าต้องการ Ping หลายๆ IP address แล้วเราก็มาไล่ดูว่ามี IP address ไหนบ้างที่ Ping ไม่เจอ


การใช้งาน TCL Script สามารถประยุกต์ใช้ได้ตามหลักการ Programming เลยครับ ตัวอย่าง เช่น
proc ping_net {x} {
 for {set n 1} {$n<=$x} {incr n 1} {
    exec "ping 192.168.1.$n" }}
Script นี้หมายถึง ถ้าผมพิมพ์ "ping_net 5" มันก็จะ ping ip 192.168.1.1 - 192.168.1.5 นั่นเอง

ถ้าใครสนใจเรื่อง TCL เพิ่มเติมลองดูหนังสือของ Ciscopress ได้ครับ เล่มนี้เลย
http://www.ciscopress.com/store/tcl-scripting-for-cisco-ios-9781587059452

จบแล้วครับ ก็หวังว่าจะเป็นประโยชน์ที่จะสามารถนำไปประยุกต์ใช้ได้ในการทำงานครับ สำหรับคนที่ไม่เก่ง Programming แบบผม ก็อาศัยหา Code เอาจากเว็บ Cisco นี่ล่ะครับ 555+


By ReFeeL