วิธีทำ DDNS ไว้ใช้งานเอง

สืบเนื่องจากว่าอยากจะลองทำ ddns ไว้ใช้งานเองไม่อยากจะสมัครใช้งานของ noip,dyndns หรืออื่นๆ ซึ่งลิมิตใช้งานต้องเสียตังค์ ก็เลยคิดว่าอยากจะทำเอง อีกทั้งมี domain ที่มีอยู่แล้ว อยากให้มีชื่อ domain ของเราเองต่อท้ายแบบโก้ๆ เลยไปหาวิธีทำมา ถามวิธีการจาก ChatGPT

มันเวิร์กดีก็เลยอยากจะเอามาแชร์ มีวิธีการดังนี้
1. จดโดเมน (khun-teee.com) ซึ่งเราจะไม่เข้าไปยุ่ง nameserver หลัก อยากจะทำ subdomain ย่อยขึ้นมาโดย delegation ไปที่อีก server โดยตั้งชื่อ domain ย่อยว่า ddns.khun-teee.com. และเวลาใช้งานจริงจะมีรูปแบบ url แบบนี้ (server).ddns.khun-teee.com:(สามารถระบุพอร์ทได้ด้วย)
2. มี server dns เอง โดยติดตั้ง bind server
3. ที่เครื่อง Client มี Script เช็ค Public IP ของตัวเองแล้วส่งไปอัพเดทที่ bind ได้ใช้ ddns-key

1) ขั้นแรกให้ไปที่ DNS Provider ที่เราจดทะเบียนอยู่ ที่ Record ของ DNS ให้ทำการเพิ่ม Record ดังนี้
1. name (ddns) type(ns) Variable (ns1.ddns.khun-teee.com)
2. name (ns1.ddns.khun-teee.com.). type (A) Variable (Your Public IP Address)

2) ขั้นที่สองติดตั้ง bind server
apt update
apt install bind9 bind9-utils bind9-dnsutils -y
อย่าลืมติดตั้ง webmin ด้วยเพื่อที่จะสามารถเข้าไปแก้ไข Record และสามารถเช็คจากหน้าเว็บได้ (ลองหาวิธีติดตั้งจากในเว็บ)

จาก Webmin ไปสร้าง New Master Zone. ddns.khun-teee.com
$ORIGIN .
$TTL 3600 ; 1 hour
ddns.khun-teee.com IN SOA ns1.ddns.khun-teee.com (your servername) (
2026022515 ; serial
3600 ; refresh (1 hour)
600 ; retry (10 minutes)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
NS ns1.ddns.khun-teee.com.
A xxx.xxx.xxx.xxx (แทน xxx ด้วย public ip)
$ORIGIN ddns.khun-teee.com.
$TTL 300 ; 5 minutes

สร้าง ddns-key วิธีสร้าง ddns-key (TSIG) สำหรับ BIND บน Linux
#tsig-keygen -a hmac-sha256 ddns-key
จะได้ผลลัพธ์ประมาณนี้:
key “ddns-key” {
algorithm hmac-sha256;
secret “AbCdEfGhIjKlMnOpQrStUvWxYz1234567890=”;
};

จากนั้น บันทีกลงในไฟล์
#nano /etc/bind/ddns.key
วางเนื้อหาผลลัพธ์จากข้างบนที่ได้ลงไป กดเซฟ

#nano /etc/bind/named.conf.local
จะได้ประมาณนี้
zone “ddns.khun-teee.com” {
type master;
file “/var/lib/bind/ddns.khun-teee.com.hosts”;
allow-update {
key “ddns-key.”;
};
allow-transfer { none; };
};

เช็คความถูกต้องของ named config และ Restart
#named-checkconf
#systemctl restart bind9
#netstat -lntup (ตรวจดูด้วยว่ามีพอร์ท 53 รันอยู่ไหม)
จากนั้นให้เข้าไปหน้า webmin และลองสร้าง Record เพื่อทดสอบ
เลือก zone > ddns.khun-teee.com ที่ได้สร้างไว้

ลองเพิ่ม record ตามนี้ดูก่อน เมื่อสร้างเสร็จจะเห็น record test.ddns.khun-teee.com. ip:0.0.0.0

จากนั้นเราจะลองเทส Update Record ดูจะเครื่อง localhost server ว่า สามารถอัพเดทได้หรือไม่
เขียน script
#nano test-bind.txt
server 127.0.0.1
zone ddns.khun-teee.com
update delete test.ddns.khun-teee.com. A
update add test.ddns.khun-teee.com. 300 A 5.5.5.5

send
(กด Ctrl+x)Y เพื่อ Save

เปิด terminal อีก session เพื่อ monitor แบบ realtime ว่าสามารถอัพเดทได้ไหม
#journalctl -u named -f
#journalctl -u named -p err -f

ทดสอบรันคำสั่งอัพเดท โดยจะลอง Update IP 5.5.5.5 ไปแทนที่ 0.0.0.0 ที่ record test.ddns.khun-teee.com. ip:0.0.0.0
#nsupdate -k /etc/bind/ddns.key test-bind.txt

จะเจอข้อความประมาณนี้ที่หน้า realtime monitor log
Feb 25 13:15:27 xxxx named[648512]: client @0x7f08fad68098 127.0.0.1#36654/key ddns-key: signer “ddns-key” approved
Feb 25 13:20:42 xxxx named[648512]: client @0x7f08fad68098 127.0.0.1#41311/key ddns-key: signer “ddns-key” approved
Feb 25 13:20:42 xxxx named[648512]: client @0x7f08fad68098 127.0.0.1#41311/key ddns-key: updating zone ‘ddns.khun-teee.com/IN’: deleting rrset at ‘test.ddns.khun-teee.com’ A
Feb 25 13:20:42 xxxx named[648512]: client @0x7f08fad68098 127.0.0.1#41311/key ddns-key: updating zone ‘ddns.khun-teee.com/IN’: adding an RR at ‘test.ddns.khun-teee.com’ A 5.5.5.5
Feb 25 13:20:42 xxxx named[648512]: client @0x7f08fad68098 127.0.0.1#38232/key ddns-key: signer “ddns-key” approved
แสดงว่าอัพเดทถูกแล้ว

ลองเช็คจากคำสั่ง
CheckUpdate
root@server# dig NS test.ddns.khun-teee.com
root@server# dig @127.0.0.1 test.ddns.khun-teee.com +norecurse
root@server# dig @8.8.8.8 test.ddns.khun-teee.com

3) จากนั้นไปเขียนสคริปต์ให้อัพเดทที่เครื่อง Client ที่ต้องการใช้งาน
3.1 สร้างไฟล์ TSIG key บนเครื่อง Client
#sudo nano /etc/ddns.key
เป็น Key ตัวเดียวกันที่เราสร้างไว้ฝั่ง Server
key “ddns-key” {
algorithm hmac-sha256;
secret “AbCdEfGhIjKlMnOpQrStUvWxYz1234567890=”;
};

#sudo chmod 600 /etc/ddns.key

3.2) สร้าง script update
#sudo nano ddns-update.sh

#!/bin/bash

#############################################
# Dynamic DNS Update Script (TSIG Secure)
#############################################

DNS_SERVER=”ns1.ddns.khun-teee.com”
ZONE=”ddns.khun-teee.com”
RECORD=”test.ddns.khun-teee.com”
KEYFILE=”/etc/ddns.key”
TTL=”300″
LOGFILE=”/var/log/ddns-client.log”

# ===== Function: Write Log =====
log() {
echo “$(date ‘+%Y-%m-%d %H:%M:%S’) – $1” >> $LOGFILE
}

# ===== Detect Public IP =====
CURRENT_IP=$(curl -4 -s –max-time 10 https://api.ipify.org)

if [[ -z “$CURRENT_IP” ]]; then
log “ERROR: Cannot detect public IP”
exit 1
fi

# ===== Get Current DNS IP =====
DNS_IP=$(dig @$DNS_SERVER +short $RECORD A)

# ===== Compare IP =====
if [[ “$CURRENT_IP” == “$DNS_IP” ]]; then
log “No change. Current IP is still $CURRENT_IP”
exit 0
fi

log “IP changed: $DNS_IP → $CURRENT_IP”
log “Sending update to DNS server…”

# ===== Send Update =====
nsupdate -k $KEYFILE << EOF
server $DNS_SERVER
zone $ZONE
update delete $RECORD A
update add $RECORD $TTL A $CURRENT_IP
send
EOF

# ===== Verify Update =====
sleep 2
NEW_DNS_IP=$(dig @$DNS_SERVER +short $RECORD A)

if [[ “$NEW_DNS_IP” == “$CURRENT_IP” ]]; then
log “SUCCESS: DNS updated to $CURRENT_IP”
else
log “ERROR: DNS update failed (Expected: $CURRENT_IP, Got: $NEW_DNS_IP)”
exit 1
fi

exit 0

เสร็จแล้ว(กด Ctrl+x)Y เพื่อ Save
#sudo chmod +x ddns-update.sh
ทดลองรัน
#./ddns-update.sh
#tail -f /var/log/ddns-client.log
2026-02-25 13:58:37 – IP changed: 5.5.5.5 → (public ip)
2026-02-25 13:58:37 – Sending update to DNS server…
2026-02-25 13:58:41 – SUCCESS: DNS updated to (public ip)

แสดงว่า DNS เราอัพเดทแล้ว ตั้งเวลา cron job ให้เช็ค IP ทุก 5 นาที หรือนานกว่านั้นก็ได้
#crontab -e
*/5 * * * * /home/teee/ddns-update.sh

4) ให้ IP เราออกเข้าจากเน็ทได้

สมมติว่า IP เครื่อง Client เรา 10.10.10.120 อยากจะให้เข้าเว็บระบุพอร์ท http://test.ddns.khun-teee.com:8888

ขั้นแรกให้ไปตั้งค่า Forward port ที่ Router ให้ Forward ไปที่ขานอกของ Fortigate

จากนั้นไป MAP IP ขานอกของ Fortigate -> (server-10.10.10.120)

และกำหนดที่ Firewall

Ok หลังจาก Allow Firewall แล้ว ลอง เข้าจากมือถือ หรือจาก Internet เส้นอื่นๆที่ไม่ใช่เส้นที่ใช้งาน
สำหรับ MAP IP ให้กับ local server IP 10.10.10.120 ดูก็จะสามารถเข้าใช้งานได้เป็นอันสำเร็จ
ทั้งนี้สามารถนำไปประยุกต์ใช้งานกับเครื่องที่เป็น Windows โดยเขียน PowerShell Script เพื่อทำการอัพเดทได้

Fortigate วิธีการทำ IPsec_VPN

วิธีการสร้าง IPsec บน Fortigate

1. ขั้นแรกให้ไปที่เมนู IPsec  Wizard ตั้งชื่อการเชื่อมต่อ และเลือกเป็น Remote Access > Client-based > FortiClient

2. ที่ Incoming Interface ให้เลือกขา Wan ที่จะเข้ามาเชื่อมต่อ
และสร้าง Pre-shared Key (อันนี้สำคัญตอนสร้าง Connection จาก Client จดไว้ด้วย)

และเลือก User Group กลุ่มผู้ที่จะเข้ามาใช้งาน ในที่นี้ได้สร้างไว้แล้ว และเพิ่มผู้จะใช้งานเข้ากลุ่มแล้ว
ตัวอย่างการสร้างจาก SSL_VPN

3. เลือก Local Interface ในที่นี้เลือกเป็น ขาของ SD-WAN หรือถ้าใช้งาน Internet จากพอร์ทไหนก็เลือกที่พอร์ทนั้น เช่น WAN  ส่วน Local Address เลือก All

ในส่วนของ Client Address Range อันนี้เป็นส่วนของ IP ที่ FortiClient จะได้รับแจกตอนที่เชื่อมต่อเข้ามา
ส่วนอื่นๆไม่ต้องแก้ไขอะไรกด Next ต่อไปเลย

4. อันนี้เลือกว่าจะอนุญาตให้ Forticlient เชื่อมต่อเข้ามาสามารถ Save รหัสผ่านได้ไหม กด Next ต่อไปได้เลย

5. ขั้นตอนสรุปภาพรวมของ Config ทั้งหมด กด Create เพื่อสร้าง IPSec Tunnels ได้เลย

6. หลังจากสร้างเสร็จแล้วก็จะมีให้สร้างเพิ่มไหม ในที่นี้ไม่สร้างเพิ่ม กด Show Tunnel List เพื่อแสดง ที่เราสร้างสำเร็จแล้ว

7. หลังจากที่เราสร้างเสร็จก็จะปรากฏ Tunnel ที่เราเพิ่งสร้างไป

8. ที่ Firewall จะปรากฏ Policy ที่ IPSec Wizard สร้างให้ซึ่งสามารถเชื่อมต่อเข้ามาได้แล้ว

9. จาก Firewall Policy ที่ Wizard สร้างให้  ถ้าเราต้องการจะ Allow เพิ่มเติมเพื่อให้สามารถใช้งานได้อย่างสมบูรณ์ เช่น ในที่นี้ต้องการจะ Allow Vlan10 เพื่อให้สามารถ เข้าใช้งาน Fortigate Management ได้ซึ่งจะอนุญาตให้เฉพาะ Vlan10 เท่านั้นเข้าได้ ไม่อนุญาตให้เข้าจาก Public ก็เพิ่ม Firewall Policy นี้เข้าไปด้วย

10. สรุป Firewall Policy ที่เกี่ยวข้องกับ IPSec

11. ที่ฝั่งของ FortiClient การตั้งค่าเชื่อมต่อ เลือกเป็น IPsec VPN

12. ใส่ชื่อ Domain ที่ต้องการจะเชื่อมต่อ

13.ใส่ Pre-sharedKey ที่ตั้งไว้ตามข้อ 2

14.ถ้าต่อจาก Router ก็ไป Forward Port มาที่ Fortigate

15. ทดสอบการเชื่อมต่อ

 

 

Fortigate วิธีการทำ SSL-VPN โดยใช้งาน Internet บ้าน (True,AIS,NT)

ปัญหาคือ Internet ที่ใช้งานตามบ้านไม่ได้ทำการ Fix IP ไว้ทำให้ได้รับ Public IP ไม่ซ้ำกันทำให้ยากที่จะ เข้าใช้งานจาก Public Interet

Diagram


ส่วนใหญ่ต้องแก้ปัญหาด้วยการใช้งาน Dynamic DNS ซึ่งต้องสมัครใช้งานเรื่อยๆ เช่น no-ip.com,dyndns.org
แต่ใน fortigate ได้มีบริการ dynamic dns ติดมาด้วย ดังนั้นจะต้องไปเปิดใช้งานเพื่อใช้คุณสมบัตินี้
ให้ไปที่เมนู Network > DNS

เปิดใช้งาน FortiGuard DDNS
เลือก Interface ( internet ที่ใช้งานอยู่)
เลือก Server ที่ ทาง Fortigate เปิดให้ใช้บริการ
Unique location (พิมพ์ชื่อที่ต้องการใช้งานโดยจะไม่ซ้ำกับชื่ออื่นๆที่ใช้งานไปแล้ว)
จากนั้นก็จะได้  ชื่อที่เราตั้ง . ตามด้วย Domain DDNS ที่ Fortigate ให้ใช้งานได้ พร้อมแสดง Public IP ของเราที่ใช้งาน

จากนั้นก็ไป Forward Port บน Router และ กำหนด VPN SSL Port ที่เราต้องการใช้งานในที่นี้จะกำหนดให้เป็นพอร์ท 10443

ไปสร้างกลุ่ม IP Address สำหรับใช้งาน VPN ว่างต้องการ Range IP เท่าไหร่ โดยสามารถใช้งาน Default ที่ระบบ
สร้างให้หรือสร้างเองก็ได้ ในที่นี้จะกำหนดเอง ตามรูป

ไปเพิ่มบน VPN Setting ด้วย

จากนั้นไปสร้างกลุ่มที่จะ VPN เข้ามาใช้งาน และ Account ที่จะใช้งาน Login
ชื่อกลุ่มตั้งเป็นชื่ออะไรก็ได้ และเลือกสมาชิคเข้ากลุ่มที่ต้องการใช้งาน vpn

ไปเพิ่มกลุ่มนี้ใน Authentication/Portal Mapping ด้วย

หลังจากตั้งค่า VPN Setting เสร็จแล้วก็ให้ไปตั้งค่าที่ Firewall Policy เพื่ออนุญาตให้ VPN เข้ามา

Outgoing Interface คือ VLAN ในออฟฟิศ VLAN10-10.10.10.0/24 ตาม Diagram

Destination ก็ใส่เป็น VLAN10

สุดท้ายอย่าลืมไป Forward Port จาก Router เพื่อใช้งาน พอร์ท 10443 ตามที่ตั้งค่า ไว้ใน VPN Setting

LAN Host คือ IP ของ Fortigate ขา WAN ที่ต่อจาก Router เพื่อออก Internet

หลังจาก Forward Port เรียบร้อยแล้วก็ทดสอบการใช้งาน โดยไป Download Fortinet Client มาติดตั้งและลองทดสอบต่อ VPN

สร้าง VPN Connection Name ตามชอบ

Server : ใส่เป็นชื่อที่ได้จองไว้ตอนเปิด FortiGuard DDNS.       เสร็จแล้ว Save แล้วลองเขื่อมต่อดู

 

การ Map External Public IP ไปที่ Internal Server IP

การ Map External Public IP ไปที่ Internal Server IP เพื่อให้ Server
สามารถเข้าใช้งานได้จาก Internet และสามารถนำ IP Public ไป Map DNS เพื่อเข้าใช้งานผ่าน Domain Name ได้ขั้นแรกให้ทำการ Map External Public IP Address กับเครื่อง Server ของเราก่อน

จากนั้นก็นำไปใช้งานโดยไปกำหนด Policy ที่ Firewall
โดยกำหนดให้ Destination เป็น VirtualIPs ที่ได้ Map ไว้จากด้านบน
อย่าลืม Disable NAT ด้วย เพราะเราจะทำให้ได้ Log ที่วิ่งเข้ามาที่เครื่องได้ IP จริงจาก Public

การสร้าง Geo Location ให้เฉพาะ IP ภายในประเทศเข้าได้เท่านั้น

ขั้นแรกให้ไปที่เมนู Policy&Objects > Addresses และเลือก Type เป็น Geography / Thailand

การนำไปใช้ ให้เลือก Source จาก Address ที่ได้สร้างไว้

การตั้งค่า SD-WAN บน Fortigate เพื่อใช้งาน Internet มากกว่า 1 เส้น

เคสตัวอย่าง มี Internet ที่ใช้งาน อยู่ 2 เส้น  โดยเป็น ISP คนละค่าย   True และ NT
จุดประสงค์ของการตั้งค่าคือต้องการให้ True เป็น Internet เส้นหลัก จะสลับอัตโนมัติไปใช้งาน NT ในกรณีที่
True Fiber มีปัญหาไม่สามารถใช้งานได้    เมื่อ True กลับมาใช้งานได้แล้วก็จะสลับกลับมาใช้งานเป็นเส้นหลักเหมือนเดิม

1. ขั้นแรกตั้งค่า SD-WAN ให้สามารถใช้งาน Internet ได้ก่อน โดยตั้งค่าให้ต่อไปที่พอร์ท WAN1(True), WAN2(NT)

2. เพิ่ม Link ไปที่ SD-WAN ตามด้วย Cost ถ้ายิ่งน้อยคือจะให้ความสำคัญมาก่อนเป็นอันดับแรก

Statc Route ให้ชี้ Destination ไปที่ 0.0.0.0/0.0.0.0 เลือก Interface เป็น virtual-wan-link ตามตัวอย่าง

3. ถ้าจะ Monitor Link ด้วยก็ไห้ไปที่ SD-Wan เปิด SLA-target  Ping

4. ข้อนี้สำคัญมากคือต้องการให้ True เป็น Link หลัก  ถ้า Fiber ขาด ใช้งานไม่ได้ให้สลับไปใช้งาน NT และเมื่อ
ซ่อม Link กลับมาใช้งานได้แล้ว Fortigate ก็จะสลับกลับมาใช้งาน Link True เหมือนเดิม

Interface selection strategy > Manual
Interface preference > เลือก Interface True เป็น Link แรก เลือก NT เป็น Link ที่ 2  ตามลำดับ

5. สุดท้ายอย่าลืมเช็คหน้า Dash Board ตามสีว่า ใช้งาน Link ไหนอยู่

6. หรือเช็ค Speed test ที่เว็บ https://www.speedtest.net/th จะมีบอกว่า Internet ที่ใช้งานวิ่งออกไปที่ ISP จ้าวไหน

วิธีการเก็บ Log IP ของ Client บน Fortigate โดยไม่ NAT

จุดประสงค์ของการทำคือต้องการเก็บ Log IP Client ที่วิ่งผ่าน Fortigate โดยไม่ NAT

1. ที่ Router จะต้องทำ Static Route กลับมายังขา External ของ Fortigate ด้วย

2. ที่ Fortigate เอา NAT ออก ให้ NAT ครั้งเดียวที่ Router พอแล้วจะได้ไม่ต้อง NAT ซ้ำซ้อนกันสองรอบ
**ถ้าไม่ได้ทำ Static Route กลับมาที่ Router จะต้อง Enable NAT ด้วย ไม่งั้นออกเน็ทไม่ได้ และ Log ที่เห็นก็จะเจอแค่ IP Interface LAN ของ Fortigate ไม่ได้ระบุว่ามาจากเครื่องไหน **

ตั้งค่า IP Management ให้กับ HPE ArubaOS-CX – LAB

ต้องการเทส LAB สำหรับ HPE Switch Aruba AOS-CX
ขั้นแรกให้สมัครบัญชีของ HPE ก่อน https://networkingsupport.hpe.com/
จากนั้นให้ทำการ Login เข้า HPE Portal

และตรง Global Search ให้ค้นหาคำว่า switch simulator

จากนั้นเลือกดาวโหลดที่เป็น *ova.zip
แตกไฟล์ออกจะได้ ไฟล์ที่นามสกุล *.ova ให้ทำการเปิดกับ virtualbox

จะได้หน้าตาประมาณนี้ Interface เป็น bridge เพื่อที่จะให้สามารถเชื่อมต่อกับเครื่อง host ได้และสามารถต่อออกเน็ทได้
display ให้ตั้งเป็น vmsvga ตามตัวอย่าง

Adapter 1 ใน VirtualBox จะถูกจองไว้เป็น OOBM (Management Port) เสมอ (ใช้จัดการ Switch)
Adapter 2 เป็นต้นไป ถึงจะเป็น Data Port (1/1/1, 1/1/2, …)

 การตั้งค่าที่ตัว VirtualBox (Hypervisor)

เพื่อให้ Port ข้อมูลออกอินเทอร์เน็ตได้ จะต้องขยับ Adapter ใน VirtualBox ใหม่:

ปิด VM ก่อน

Adapter 1: ปล่อยไว้เป็น Bridged (สำหรับเข้า SSH/Web UI จากเครื่องจริง)

Adapter 2 (สำคัญมาก): ต้องเปิดใช้งานและเลือกเป็น Bridged Adapter หรือ NAT (เพื่อให้ขา 1/1/1 ของ Switch เชื่อมกับโลกภายนอกได้)

Adapter 3 – 9: ตั้งค่าเป็น Internal Network หรือตามที่ต้องการใช้งาน

จากนั้นให้ทำการ StarVM
หลังจาก start เสร็จจะมีให้ Login โดย default จะชื่อผู้ใช้งาน admin รหัสผ่านไม่มี enter ผ่านได้เลย จากนั้นก็สามารถตั้งค่า อื่นๆได้เลย
# คำสั่งพื้นฐานของ AOS-CX

#conf t
#show interface mgmt
#interface mgmt
#ip (dhcp/static) 10.10.10.111/24
#default-gateway 10.10.10.254
#nameserver 8.8.8.8
#no shutdown
หรือ
#ip dns server-address 8.8.8.8 vrf mgmt
#show ip dns vrf mgmt

#ping 8.8.8.8 vrf mgmt

#username admin password plaintext StrongPassword123! role network-admin
#ssh server vrf mgmt
ถ้าอยากให้ SSH ได้เฉพาะ mgmt (แนะนำ)
ถ้าจะใช้ in-band ให้ใช้ vrf default
#ssh server port         (เปลี่ยนจากพอร์ท 22 เป็น พอร์ทอื่นเพื่อความปลอดภัย)

#end
#write memory
#show run

#boot system (สำหรับสั่ง Reboot)

ถ้าอยากจะลบ config ออกทั้งหมดให้เป็น default factory

#erase startup-config
#boot system ถ้ามีข้อความถามว่า save ไหมให้กด n และจะถามอีกครั้งว่า Reboot ไหมให้กด y จะทำการ Reboot ให้

หลังจากได้ทำการ Reboot แล้วจะเข้าสู่ขั้นตอนการตั้งค่าใหม่อีกครั้งโดย default login เข้าจะชื่อ admin / ไม่มีรหัสผ่าน
สามารถดู ip ได้จากที่ login เข้าหน้า console ใช้คำสั่ง
#show interface mgmt เมื่อรู้ IP แล้วก็สามารถ ssh เข้าเพื่อทำการทดสอบ config ใหม่ได้เลยโดยใช้ User admin
ssh admin@ip (ไม่มีรหัสผ่าน)

สามารถเข้าดูการตั้งค่าหน้าเว็บได้ด้วยนะ

ตั้งค่า ssh,console password,enable mode password,banner

SWITCH(config)#hostname C3850-24P
C3850-24P(config)#vlan 10
C3850-24P(config)#interface vlan10
C3850-24P(config-if)#ip address 10.10.10.250 255.255.255.0
C3850-24P(config-if)#no shut
C3850-24P(config-if)#exit
C3850-24P(config)#ip name-server 8.8.8.8
C3850-24P(config)#ip default-gateway 10.10.10.254
C3850-24P(config)#interface gigabitEthernet 1/0/24
C3850-24P(config)#switchport mode access
C3850-24P(config)#switchport access vlan 10
C3850-24P(config)#exit

SSH

C3850-24P#conf t
C3850-24P(config)#ip domain-name omtel.local
C3850-24P(config)#crypto key generate rsa
The name for the keys will be: C3850-24P.omtel.local
Choose the size of the key modulus in the range of 512 to 4096 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [1024]: 2048
% Generating 2048 bit RSA keys, keys will be non-exportable…
[OK] (elapsed time was 100 seconds)

C3850-24P(config)#ip ssh version 2
C3850-24P(config)#username admin privilege 15 secret YourSecurePassword
C3850-24P(config)#line vty 0 15
C3850-24P(config-line)#login local
C3850-24P(config-line)#transport input ssh
C3850-24P(config-line)#exit

(Option)
C3850-24P(config)#ip ssh time-out 60
C3850-24P(config)#ip ssh authentication-retries 3

Console Password

C3850-24P#conf t
C3850-24P(config)#line console 0
C3850-24P(config-line)#password YourSecurePassword
C3850-24P(config-line)#login
C3850-24P(config-line)#exit
C3850-24P(config)#exit
C3850-24P#wr
Building configuration…
[OK]

ถ้าอยากให้ console disconnect อัตโนมัติหลังไม่ใช้งาน

C3850-24P(config-line)# exec-timeout 5 0

5 0 = 5 นาที 0 วินาที

ถ้าต้องการตั้งค่า Password สำหรับ Enable Mode (Privilege Exec Level 15) บน Cisco 3850 ทำได้ดังนี้
C3850-24P>en
C3850-24P#conf t
Enter configuration commands, one per line. End with CNTL/Z.
C3850-24P(config)#enable secret YourSecurePassword
C3850-24P(config)#exit
C3850-24P#wr
Building configuration…
[OK]

ถ้าอยากเอา Password ออกจาก Enable Mode
C3850-24P#conf t
C3850-24P(config)#no enable secret

ถ้าอยากเอา Password ออกจาก Console

C3850-24P#conf t
C3850-24P(config)#line console 0
C3850-24P(config-line)#no password
C3850-24P(config-line)#exit
C3850-24P(config)#exit
C3850-24P#wr
Building configuration…
[OK]

เพิ่ม Banner

C3850-24P(config)#banner motd#********************************************************
WARNING! Authorized access only!
Disconnect IMMEDIATELY if you are not an authorized user!
********************************************************
#

C3850-24P(config)#exit

C3850-24P#wr
Building configuration…
[OK]

กรณีที่มี Log วิ่งที่หน้าจอรบกวนการทำงาน สามารถปิดไปก่อนได้

C3850-24P#conf t
C3850-24P(config)#no logging console
C3850-24P(config)#exit
C3850-24P#wr
Building configuration…
[OK]

Cisco Catalyst 3850 (C3850) มีโหมดการบู๊ต (Boot Mode)

Cisco Catalyst 3850 (C3850) มีโหมดการบู๊ต (Boot Mode) อยู่ 2 แบบหลัก ๆ และแต่ละแบบใช้งานต่างกัน ดังนี้:

1. INSTALL MODE

โหมดนี้เป็นค่าเริ่มต้นของ C3850 รุ่นใหม่ ๆ และเป็นโหมดที่ Cisco แนะนำให้ใช้งาน

🔹 ลักษณะของ INSTALL MODE

ใช้ไฟล์ .bin ในรูปแบบ package-based

> ระบบโหลดไฟล์หลายตัวจากแพ็กเกจ ไม่ใช่ไฟล์เดียวแบบ monolithic
> สามารถใช้คำสั่ง software install เพื่อจัดการอัปเกรด/ดาวน์เกรดแบบปลอดภัย
> รองรับ ISSU (In-Service Software Upgrade) ในบางรุ่น
> การอัปเกรดจะไม่ยุ่งยาก และไฟล์จะอยู่ใน flash:packages.conf

🔹 ตรวจสอบว่าอยู่โหมดไหน
show version | include Mode
หรือ
show version | include System

Switch#show version | include Mode
Model Revision Number : AC0
Model Number : WS-C3850-24T
Switch Ports Model SW Version SW Image Mode

Switch#show version | include System
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Cisco IOS-XE software, Copyright (c) 2005-2025 by cisco Systems, Inc.
System returned to ROM by Reload Command
System image file is “flash:cat3k_caa-universalk9.16.12.13.SPA.bin” <– Bundle Mode

หลักฐานว่าตอนนี้เป็น Bundle Mode
show version ให้ข้อมูลว่า:
System image file is “flash:cat3k_caa-universalk9.16.12.13.SPA.bin”

ถ้าเป็น Install Mode จะต้องเห็นประมาณนี้:
System image file is “flash:packages.conf”
Switch operating mode is INSTALL mode

แต่จากที่ใช้คำสั่งแสดงว่าบู๊ตจากไฟล์ .bin โดยตรง ซึ่งเป็นลักษณะเฉพาะของ Bundle Mode

ทำไมถึงอยู่ Bundle Mode
เพราะ switch กำลังบู๊ตจากไฟล์นี้:
cat3k_caa-universalk9.16.12.13.SPA.bin

Cisco 3850 เมื่อใช้ไฟล์ .bin ในการบู๊ตแบบ monolithic จะถูกถือว่าเป็น Bundle Mode ทันที

จุดตรวจสอบ ผลลัพธ์ ชี้ว่าเป็นโหมด
System image file boot จาก .bin             ✔ Bundle Mode
packages.conf ไม่มี                                    ✔ Bundle Mode
output “Mode” ไม่มี Install mode          ✔ Bundle Mode

2. BUNDLE MODE
โหมดนี้เป็นแบบ legacy และไม่แนะนำให้ใช้ในงาน Production

🔹 ลักษณะของ BUNDLE MODE

ใช้ไฟล์ IOS แบบ monolithic (.bin) โดยบู๊ตตรงจากไฟล์ เช่น:
boot system switch all flash:cat3k_caa-universalk9.16.12.04.SPA.bin

> ไม่ใช้ packages.conf
> บู๊ตช้ากว่า install mode
> ไม่รองรับ ISSU
>ไฟล์ภาพระบบไม่ได้ติดตั้งลง flash แบบ package เหมือน install mode
>เหมาะสำหรับการแก้ไขปัญหาเฉพาะหน้า หรือ boot ชั่วคราว

สิ่งที่ควรรู้: Bundle Mode ไม่เหมาะสำหรับ Production
เพราะว่า:
>บู๊ตช้ากว่า
>ไม่รองรับ ISSU
>ใช้ CPU/Flash มากกว่า (โหลด image แบบ Live)
>ไม่ใช่ default mode ที่ Cisco แนะนำ

ถ้าอยากเปลี่ยนเป็น Install Mode (โหมดแนะนำ)
ทำได้ง่าย ๆ โดยใช้คำสั่ง:

ขั้นตอนแนะนำ

1) ตรวจสอบว่ามีไฟล์ .bin อยู่ใน flash
dir flash:

ถ้า ไม่มีไฟล์ packages.conf นั่นคือสัญญาณชัดเจนว่า Switch ของคุณอยู่ใน Bundle Mode อย่างสมบูรณ์ — และยัง ไม่เคยถูกติดตั้ง (install) เป็น Package Mode มาก่อน
แต่ไม่ต้องกังวล เพราะ Cisco 3850 สามารถสร้าง packages.conf ใหม่ได้โดยใช้คำสั่ง software install ซึ่งจะติดตั้ง package ที่จำเป็นทั้งหมดให้อัตโนมัติ

2)มี free space อย่างน้อย ~1GB
dir flash:

3)สลับ Mode

ถอนการตั้งค่า boot system เดิม (ป้องกัน boot loop)
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.

Switch(config)#no boot system
Switch(config)#end
Switch#write memory
Building configuration…
[OK]

สร้างระบบ Install Mode
ใช้คำสั่ง:

Switch#install add file flash:cat3k_caa-universalk9.16.12.13.SPA.bin activate commit
This operation requires a reload of the system. Do you want to proceed?
Please confirm you have changed boot config to flash:packages.conf [y/n]y
— Starting initial file syncing —
Info: Finished copying flash:cat3k_caa-universalk9.16.12.13.SPA.bin to the selected switch(es)
Finished initial file syncing

— Starting Add —
Performing Add on all members
[1] Add package(s) on switch 1
[1] Finished Add on switch 1
Checking status of Add on [1]
Add: Passed on [1]
Finished Add

Image added. Version: 16.12.13.0.10689
install_add_activate_commit: Activating PACKAGE
Following packages shall be activated:
/flash/cat3k_caa-webui.16.12.13.SPA.pkg
/flash/cat3k_caa-srdriver.16.12.13.SPA.pkg
/flash/cat3k_caa-rpcore.16.12.13.SPA.pkg
/flash/cat3k_caa-rpbase.16.12.13.SPA.pkg
/flash/cat3k_caa-guestshell.16.12.13.SPA.pkg

This operation may require a reload of the system. Do you want to proceed? [y/n]y

switch: set BOOT flash:packages.conf
switch: boot

Switch จะโหลด Install Mode จาก packages.conf
หลังบู๊ตเสร็จ จะเข้าปกติและสามารถใช้ privileged EXEC ได้

Switch#show version | include System
Copyright (c) 1986-2025 by Cisco Systems, Inc.
Cisco IOS-XE software, Copyright (c) 2005-2025 by cisco Systems, Inc.
System returned to ROM by Image Install
System image file is “flash:packages.conf”  <–Install Mode