ติดตั้งทุกอย่างบน MacBook Air M2
ใบแลปเขียนสำหรับ Windows ทั้งเล่ม — หน้านี้แปลงทุกขั้นตอนเป็นเส้นทางของ Apple Silicon ตั้งแต่ GNS3 2.2.53, IOS image, Wireshark Arm, Parallels + Mininet, ไปจนถึงการต่อ console โดยไม่มี PuTTY
หน้านี้ทำให้เครื่องพร้อมทำแลปได้ทุกใบ มี 5 ก้อนที่ต้องลง — GNS3 2.2.53 (จำลอง router/switch), IOS image c7200 (ตัว OS ที่ router จะรัน), Wireshark รุ่น Arm + ChmodBPF (ดักจับ packet), Parallels/UTM + Ubuntu ARM + Mininet (แลป 3) และ เครื่องมือต่อ console ซึ่งบน Mac คือ screen ไม่ใช่ PuTTY
ได้อะไร: ทำเสร็จแล้วเปิด Lab 1 ต่อได้เลยโดยไม่ต้องหยุดกลางคัน — และห้องสอบไม่มีเวลาให้ติดตั้งอะไรทั้งนั้น ทุกอย่างต้องพร้อมมาจากบ้าน
0.1เป้าหมายและสิ่งที่ต้องส่ง
หน้านี้ไม่มีอะไรต้องส่งอาจารย์ แต่ใบแลป 2 เขียนไว้ชัดว่า "สิ่งที่ควรเตรียมก่อนเข้าห้อง (หากไม่ได้เตรียมก่อนเข้าแล็ปจะโดนหักคะแนน)" ฉะนั้นถือว่าทุกข้อข้างล่างนี้คือของที่ต้อง "ส่ง" ให้ตัวเอง
| ✓ | ต้องมีบนเครื่อง | เช็คยังไงว่าลงแล้วจริง |
|---|---|---|
| ① | GNS3 2.2.53 (ไฟล์ .dmg จาก GitHub release) | เปิดแอปแล้วดูที่ GNS3 → About ต้องขึ้น 2.2.53 |
| ② | IOS image c7200 ตั้งค่า RAM 512 MiB, slot1 = PA-4T+, slot2 = PA-4E | เห็น template ชื่อ c7200 อยู่ในแถบซ้ายของ GNS3 |
| ③ | Wireshark รุ่น Arm + ChmodBPF.pkg | เปิด Wireshark แล้วเห็นรายชื่อ interface ในหน้าแรก |
| ④ | Parallels Desktop (หรือ UTM) + Ubuntu ARM + Mininet | ssh ubuntu ติด แล้ว sudo mn --test pingall ผ่าน |
| ⑤ | เครื่องมือต่อ console — screen (มีมากับ macOS อยู่แล้ว) + สาย USB-C→console | ls /dev/tty.* เห็นชื่อ tty.usbmodem… ตอนเสียบสาย |
| ⑥ | VPN KKU (เฉพาะเวลาใช้ GNS3 server ของคณะ) | ต่อ VPN แล้ว ping IP ของ server ได้ |
| ⑦ | USB-C → Ethernet adapter (แลปเครื่องจริง) | เสียบแล้วเห็นการ์ดใน System Settings → Network |
0.2ภาพรวม — อะไรรันที่ไหน
ก่อนลงมือ ต้องเข้าใจก่อนว่าของ 5 ก้อนนั้นไม่ได้อยู่ที่เดียวกัน และ GNS3 ที่เห็นบนหน้าจอไม่ใช่ตัวที่รัน IOS — มันเป็นแค่หน้าจอ (GUI) ที่คุยกับ "server" อีกทีหนึ่ง เข้าใจภาพนี้แล้วเวลาพังจะรู้ทันทีว่าต้องไปแก้ตรงไหน
GNS3 มีสองส่วนเสมอ — GUI (สิ่งที่คุณลากวาง) กับ server (สิ่งที่รัน IOS จริง ๆ ผ่าน dynamips) ถ้าใช้ local server ทั้งสองอยู่บน Mac เครื่องเดียวกัน ถ้าใช้ remote server ของ KKU ตัว server อยู่ที่คณะ และ ต้องต่อ VPN KKU ก่อน ไม่งั้น GUI หา server ไม่เจอ ส่วน Mininet ในแลป 3 ไม่เกี่ยวกับ GNS3 เลย — มันรันอยู่ใน Ubuntu ARM ในเครื่องเสมือนคนละใบ
0.3ต่อ VPN KKU ก่อน (ถ้าใช้ server ของคณะ)
ใบแลป 1 เขียนหมายเหตุไว้บรรทัดแรกสุดเลยว่า "ในกรณีที่ใช้ Server KKU จำเป็นต้องเชื่อมต่อ VPN KKU ก่อน" — นี่คือขั้นที่คนลืมบ่อยที่สุด เพราะอาการเวลาลืมไม่ได้บอกว่า "ไม่ได้ต่อ VPN" แต่บอกว่า "Could not connect to server" ซึ่งชวนให้ไปนั่งแก้ที่ GNS3 แทน
- ต่อ VPN KKU ก่อนเปิด GNS3 เสมอ — ไม่ใช่หลังจากนั้น ถ้าเปิด GNS3 ค้างไว้แล้วเพิ่งมาต่อ VPN ให้ปิด GNS3 แล้วเปิดใหม่
- ทดสอบว่า VPN ติดจริง ด้วยการ ping IP ของ server จาก Terminal ก่อน — ถ้า ping ไม่ผ่าน อย่าเพิ่งไปแตะ GNS3
[macOS Terminal]
$ ping -c 3 <IP ของ GNS3 server ที่อาจารย์ให้> - ถ้าไม่ได้ใช้ server ของคณะ ให้ใช้ local server บนเครื่องตัวเอง — ข้ามขั้นตอน Remote server ทั้งหมดได้ (ใบแลปเขียนไว้ว่า "กรณีไม่ใช้ Remote servers ให้ข้ามการตั้งค่าขั้นตอนที่ 1–4 ได้เลย")
บน Apple Silicon การรัน IOS ผ่าน local server ทำงานได้ปกติเพราะ dynamips จำลอง CPU ของ router ให้อยู่แล้ว ไม่ต้องใช้ Rosetta และไม่ต้องมี VM — ต่างจาก Mininet ที่ต้องมี Linux จริง ๆ ฉะนั้นถ้า VPN ห้องแลปมีปัญหา ยังทำ Lab 1 ต่อได้ด้วย local server
0.4ติดตั้ง GNS3 2.2.53 (.dmg)
ใบแลปย้ำว่า "ต้องใช้เวอร์ชั่น 2.2.53 จากหน้า release บน GitHub เท่านั้น" — อย่าโหลดจากหน้าเว็บ gns3.com เพราะจะได้เวอร์ชันใหม่กว่าที่โปรเจกต์ของเพื่อนเปิดไม่ขึ้น
GNS3-2.2.53-all-in-one.exe ส่วน เราโหลดบรรทัด GNS3-2.2.53.dmg (109 MB) ในหน้าเดียวกันนี้- เข้าหน้า release ของ GNS3 GUI เวอร์ชัน 2.2.53
https://github.com/GNS3/gns3-gui/releases/tag/v2.2.53 - ในส่วน Assets — เพื่อนที่ใช้ Windows โหลด
GNS3-2.2.53-all-in-one.exeส่วน Mac โหลดGNS3-2.2.53.dmg - เปิดไฟล์
.dmgแล้วลากไอคอน GNS3 ลงโฟลเดอร์ Applications (ใบแลปเขียนว่า "สามารถเลือกกด Next ตลอดหน้าการติดตั้งได้") - ครั้งแรกที่เปิด macOS จะเตือนว่ามาจากผู้พัฒนาที่ไม่ระบุตัวตน → ไปที่ System Settings → Privacy & Security แล้วกด Open Anyway
- เปิด GNS3 ครั้งแรกจะเด้งหน้าต่าง Preferences ขึ้นมาเอง ถ้าไม่เด้ง — GNS3 (มุมซ้ายบน) → Preferences
จุดที่ Mac ต่าง
ใบแลปบอกให้ไปที่
Edit → Preferencesซึ่งเป็นของ Windows — บน macOS เมนู Preferences อยู่ใต้ชื่อแอปที่มุมซ้ายบนเสมอ (ใบแลปเองก็มีหมายเหตุบรรทัดนี้ไว้: "ในกรณี Mac คลิกไปที่ GNS3 ซ้ายบนจะเจอคำว่า Preferences") ปุ่มลัดคือ ⌘+, - สร้างโปรเจกต์ใหม่เป็นของตัวเอง — ตั้งชื่อให้จำง่าย เช่น
lab1_topology1
Name คือชื่อโปรเจกต์ (ค่าเริ่มต้นคือ untitled ให้เปลี่ยนเป็นชื่อที่จำง่าย) · หน้าต่างนี้เด้งเองทุกครั้งที่เปิด GNS3 และหน้าตาเหมือนกันทั้ง Mac และ WindowsWindows all-in-one จะลง WinPcap และ Wireshark ให้พร้อมกันในตัวติดตั้งเดียว (ใบแลปเขียนไว้ตรงนี้) แต่ ตัว .dmg ของ Mac ไม่ได้ลง Wireshark ให้ ต้องไปโหลดเองแยกต่างหาก — และต้องเป็นรุ่น Arm ด้วย ดูหัวข้อ 0.7
หน้าจอติดตั้งฝั่ง Windows ในใบแลป (รูปที่ 2–6) — บน Mac ไม่มีหน้าพวกนี้เลย
รูปที่ 2–6 ในใบแลปคือตัวติดตั้ง GNS3-2.2.53-all-in-one.exe ของ Windows · บน MacBook Air M2 ขั้นตอนต่างออกไปทั้งหมด — ตัว .dmg เปิดขึ้นมาเป็นหน้าต่างที่มีไอคอน GNS3 กับโฟลเดอร์ Applications แล้วลากไอคอนลงโฟลเดอร์ จบ ไม่มีหน้า License, ไม่มี Start Menu, ไม่มี Choose Components และไม่มีหน้า Solarwinds ให้ตอบ No · ห้ามกดตามรูปเหล่านี้ ให้ทำตามขั้นตอน Mac ด้านบน (§0.4)
.dmg ไม่ถามเรื่องสัญญาอนุญาต ลากไอคอนลง Applications ได้เลย
GNS3 Desktop และ Tools) — หน้าจอฝั่ง Windows บน Mac ไม่มีให้เลือกส่วนประกอบ
0.5ตั้งค่า Remote server ของ KKU
ทำเฉพาะกรณีใช้ server ของคณะ (มี image ให้เลือกใช้อยู่แล้ว ไม่ต้องหาเอง) — ต่อ VPN KKU ให้ติดก่อน แล้วค่อยทำตามนี้
- GNS3 → Preferences → Server
- ตั้งค่า Main server ของตนเองก่อน (ส่วนนี้คือ local server บนเครื่อง)
รูปที่ 9 จากใบแลป Lab 1 — หน้าต่าง Preferences เพื่อตั้งค่า Server preferences (แท็บ Main server) · ช่อง Server path/Ubridge pathในรูปเป็นพาธของ Windows (C:\Program Files\GNS3\…) บน Mac จะเป็นพาธข้างในแอปแทน และ GNS3 เติมให้เองอยู่แล้ว ไม่ต้องแก้ — สิ่งเดียวที่ต้องดูคือEnable local serverถูกติ๊กไว้ - เลือกแท็บ Remote servers แล้วกด Add
รูปที่ 10 จากใบแลป Lab 1 — หน้าต่าง Preferences เพื่อตั้งค่า Server preferences (แท็บ Remote servers) · ตารางว่างแปลว่ายังไม่ได้เพิ่ม server → กด Add - กรอกค่าตามที่อาจารย์ให้ — ความหมายของแต่ละช่องตามใบแลป:
รูปที่ 11 จากใบแลป Lab 1 — หน้าต่าง Server settings · Protocol = HTTPและ Port ค่าเริ่มต้นคือ3080 TCP· ถ้าอาจารย์ให้ username/password มาด้วย ต้องติ๊กEnable authenticationก่อนช่องด้านล่างถึงจะกรอกได้ช่อง ใส่อะไร Name ตั้งชื่อ server (ตั้งอะไรก็ได้ ไว้ให้ตัวเองจำ เช่น KKU)Protocol โปรโตคอลระหว่าง GNS3 Client กับ GNS3 Server — ใช้ HTTP Host ที่อยู่หรือ IP address ของ GNS3 Server Port หมายเลข Port ของ GNS3 Server Username Username ที่ใช้ยืนยันเพื่อเข้าใช้ GNS3 Server Password Password ที่ใช้ยืนยันเพื่อเข้าใช้ GNS3 Server - กด OK แล้วสร้างโปรเจกต์ใหม่ — ตอนสร้างโปรเจกต์จะให้เลือกว่าจะรันที่ server ไหน
0.6เพิ่ม IOS image (c7200)
Router ใน GNS3 ไม่มี OS มาให้ ต้องป้อน image ของ IOS เข้าไปเอง ขั้นตอนนี้ทำครั้งเดียวจบ แล้ว template จะค้างอยู่ในเครื่องตลอด
- GNS3 → Preferences → IOS routers → กด New
รูปที่ 13 จากใบแลป Lab 1 — หน้าต่างโปรแกรม GNS 3 (เข้า Preferences จากเมนู Edit) · บน Mac ไม่มีเมนู Edit → Preferences — ให้กด GNS3 ที่มุมซ้ายบนของจอ แล้วเลือก Preferences หรือกด ⌘+, (ปุ่มลัด Ctrl+Shift+Pในรูปเป็นของ Windows) — ใบแลปเองก็เขียนหมายเหตุนี้ไว้
รูปที่ 14 จากใบแลป Lab 1 — หน้าต่างโปรแกรม Preferences · เข้าที่ Dynamips → IOS routers แล้วกด New (กรอบแดง) · รูปนี้ยังใช้เป็น "เฉลย" ได้ด้วย — เมื่อสร้าง template เสร็จ ฝั่งขวาต้องขึ้นเหมือนกันนี้: RAM 512 MiB· Slot 0C7200-IO-FE· Slot 1PA-4T+· Slot 2PA-4Eและมีค่าIdle-PCไม่ว่าง - เลือกว่าจะรันที่ไหน:
- Run this IOS router on a remote computer — กรณีใช้ Remote server ของ KKU (มี image ให้เลือกใช้อยู่แล้ว)
- Run this IOS router on my local computer — กรณีไม่ใช้ Remote server ต้องดาวน์โหลด image มาลงเอง
รูปที่ 15 จากใบแลป Lab 1 — หน้าต่างโปรแกรม New IOS router template (เลือกว่าจะรัน IOS ที่ server ไหน) · รูปในใบแลปเลือกแบบ remote computer เพราะใช้ server ของคณะ · ถ้าลงเองบน MacBook ให้เลือก Run this IOS router on my local computerแล้วชี้ไฟล์ image เอง - เลือกไฟล์ image
c7200-adventerprisek9-mz.152-4.M5.image
รูปที่ 16 จากใบแลป Lab 1 — หน้าต่างโปรแกรม New IOS router template (เลือก IOS image) · ในรายการมีสองไฟล์ที่หน้าตาคล้ายกันมาก — ต้องเลือกบรรทัดล่างคือ c7200-adventerprisek9-mz.152-4.M5.imageไม่ใช่124-24.T5 - ตั้ง Name ตามที่ต้องการ แล้วตั้ง Default RAM = 512 MiB
รูปที่ 17 จากใบแลป Lab 1 — หน้าต่างโปรแกรม New IOS router template (ตั้งชื่อและตรวจ platform) · ช่อง Nameคือชื่อที่จะไปโผล่ในแถบซ้าย ตั้งอะไรก็ได้ ·Platformต้องเป็นc7200· ช่องChassisว่างได้ เพราะ c7200 ไม่มีตัวเลือก chassis
รูปที่ 18 จากใบแลป Lab 1 — หน้าต่างโปรแกรม New IOS router template (หน้า Memory) · ตั้ง Default RAM=512 MiBตามที่ใบแลปกำหนด (หมายเหตุ: แถบหัวหน้าต่างของรูปนี้ในใบแลปขึ้นชื่อไฟล์c7200-advipservicesk9-mz.152-4.S5.imageซึ่งเป็น image คนละตัวกับที่เราใช้ — ตัวเลข 512 MiB เหมือนกัน ไม่ต้องตกใจ) - ที่หน้าเลือก adapter — slot 1 = PA-4T+ และ slot 2 = PA-4E
รูปที่ 19 จากใบแลป Lab 1 — หน้าต่างโปรแกรม New IOS router template (หน้า Network adapters) · slot 0=C7200-IO-FEติดมาเองกับตัวเครื่อง (ได้พอร์ตFastEthernet0/0) ·slot 1=PA-4T+และslot 2=PA-4Eตามที่ใบแลปสั่ง ·slot 3–slot 6ปล่อยว่างสองอันนี้คืออะไร และทำไมต้องใส่PA-4T+ = การ์ด Serial 4 พอร์ต → จะได้อินเทอร์เฟซชื่อ
Serial1/0ถึงSerial1/3
PA-4E = การ์ด Ethernet 4 พอร์ต → จะได้Ethernet2/0ถึงEthernet2/3
ถ้าไม่ใส่การ์ด Serial ตั้งแต่ตอนนี้ พอถึง Topology ที่ 4 จะไม่มีพอร์ต Serial ให้ลากสาย และข้อสอบข้อ 1 ปีที่แล้วบังคับใช้ Serial — ฉะนั้นห้ามข้ามขั้นนี้ - เมื่อมาถึงหน้า Idle-PC ให้กด Idle-PC finder แล้วรอจนกว่าจะทำเสร็จ (ใช้เวลาสักครู่ อย่ากดข้าม)
- เสร็จแล้วจะเห็น Router c7200 ที่ตั้งค่าไว้ปรากฏอยู่ทางแถบซ้ายมือ พร้อมลากลงมาใช้งาน
รูปที่ 20 จากใบแลป Lab 1 — Router c7200 ที่เราตั้งค่าไว้ทางด้านซ้ายมือ · ถ้าเห็นชื่อ template ในแผง Routers แบบนี้ = สร้าง template สำเร็จ ลากลงพื้นที่ตรงกลางได้เลย
ใบแลปสั่งให้ตั้ง slot 1 = PA-4T+ (การ์ด Serial) และ slot 2 = PA-4E (การ์ด Ethernet) ตามรูปที่ 19 ข้างบน — ถ้าตั้งตามนี้ ชื่อพอร์ตที่ได้จะเป็น Serial1/0–Serial1/3 และ Ethernet2/0–Ethernet2/3
แต่คำสั่งตัวอย่างในใบแลปเองกลับใช้ Ethernet1/0 กับ Serial2/0 ซึ่งจะเกิดขึ้นก็ต่อเมื่อสลับกัน (slot 1 = PA-4E, slot 2 = PA-4T+) — และรูปที่ 22 ในใบแลป (ดูที่ Lab 1 §1.3) ก็แสดงรายการพอร์ตเป็น Ethernet1/0…1/3 กับ Serial2/0…2/1 จริง ๆ · สรุปคือใบแลปเขียนไม่ตรงกันเอง อย่าท่องเลข slot — ตอนลากสายให้ดูรายชื่อพอร์ตที่ GNS3 เด้งขึ้นมา แล้วใช้ชื่อนั้นในคำสั่ง interface หรือเช็กด้วย show ip interface brief ก่อนเสมอ
ถ้าข้าม Idle-PC finder ไป router จะยังทำงานได้ แต่จะกิน CPU 100% ต่อ router หนึ่งตัว — พอสร้าง topology 4 ตัวตามข้อสอบข้อ 1 พัดลม MacBook จะหมุนสุดและเครื่องหน่วงจนพิมพ์ใน console ไม่ทัน ค่า Idle-PC คือค่าที่บอก dynamips ว่า "ลูปไหนของ IOS คือลูปว่าง" เพื่อจะได้ปล่อย CPU ให้เครื่อง
นอกจาก c7200 ในโฟลเดอร์ 1_network_2026/GNS3 image ยังมี c3725, c3745 และ L2-ADVENTERPRISE (IOU) ให้ด้วย — ตัว IOU คือ switch เลเยอร์ 2 ที่ใช้คำสั่ง show mac-address-table และ VLAN ได้จริง ต่างจาก "Ethernet switch" ที่ติดมากับ GNS3 ซึ่งเป็นสวิตช์จำลองแบบไม่มี CLI ถ้าข้อสอบสั่งให้ส่ง show mac-address-table ต้องใช้ IOU หรือสวิตช์เครื่องจริง
0.7Wireshark รุ่น Arm + ChmodBPF
นี่คือจุดที่ Mac ต่างจากใบแลปมากที่สุด และเป็นจุดที่ทำให้คนงงว่า "ลง Wireshark แล้ว แต่เปิดมาไม่เห็น interface อะไรเลย"
- เข้า
https://www.wireshark.org/download.html - ในกรณีที่เป็นชิป M1 ขึ้นไป ให้เลือกดาวน์โหลดรูปแบบ Arm (MacBook Air M2 = Apple Silicon → เลือก Arm) — ถ้าโหลดรุ่น Intel มาจะช้าเพราะต้องผ่าน Rosetta
รูปที่ 1 จากใบแลป Lab 2 — หน้าเว็บไซต์ทางการของ Wireshark · MacBook Air M2 ต้องเลือกบรรทัด macOS Arm Disk Imageไม่ใช่macOS Intel Disk Imageและไม่ใช่บรรทัด Windows สามบรรทัดบนสุด - ติดตั้งโปรแกรมตามปกติ และให้ติดตั้ง
ChmodBPF.pkgด้วย — ตัวติดตั้งจะเปิดหน้าต่างที่มีไฟล์นี้ให้ดับเบิลคลิกเอง
รูปที่ 8 จากใบแลป Lab 2 — การติดตั้งโปรแกรม Wireshark (หน้าจอ .dmgของ macOS) · ต้องทำสองอย่างในหน้าต่างเดียวนี้ — ① ลากไอคอน Wireshark ลงโฟลเดอร์ Applications ตามลูกศร ② ดับเบิลคลิกInstall ChmodBPF.pkg(กรอบแดงล่าง) · ข้อ ② คือขั้นที่คนลืมแล้วเปิด Wireshark มาไม่เห็น interface - ปิด Wireshark แล้วเปิดใหม่ ต้องเห็นรายชื่อ interface (
en0,lo0, …) ในหน้าแรก
หน้าจอติดตั้ง Wireshark ฝั่ง Windows ในใบแลป (รูปที่ 2–7) — บน Mac ไม่มีหน้าพวกนี้
รูปที่ 2–7 ในใบแลปคือตัวติดตั้ง Wireshark-4.4.6-x64.exe ของ Windows ซึ่งจะพ่วงติดตั้ง Npcap และ USBPcap ให้ · บน MacBook Air M2 ขั้นตอนต่างออกไป — เปิด .dmg แล้วลาก Wireshark ลง Applications แล้วดับเบิลคลิก Install ChmodBPF.pkg จบ · macOS ไม่มี Npcap และไม่มี WinPcap ตัวที่ทำหน้าที่แทนคือ ChmodBPF · ห้ามไล่กดตามรูปเหล่านี้ ให้ทำตามขั้นตอน Mac ด้านบน
ChmodBPF
ถ้าไม่ลง ChmodBPF จะไม่เห็น interface เลย เพราะ macOS ให้สิทธิ์อ่านอุปกรณ์ /dev/bpf* เฉพาะ root — ChmodBPF คือตัวที่เปลี่ยนสิทธิ์ให้ผู้ใช้ทั่วไปอ่านได้ตอนบูต
เช็กว่าติดตั้งสำเร็จหรือยังจาก Terminal:
$ ls -l /dev/bpf0
# ต้องขึ้นกลุ่ม access_bpf และมีสิทธิ์อ่าน เช่น crw-rw---- 1 root access_bpf
$ id -Gn | grep access_bpf
# ต้องเห็นคำว่า access_bpf — ถ้าไม่เห็น ให้ลง ChmodBPF.pkg ซ้ำแล้ว logout/login① ใน GNS3 — ไม่ได้ดักจากการ์ดของ Mac แต่คลิกขวาที่ สาย แล้ว Start Capture ตัว GNS3 server จะบันทึกไฟล์ให้แล้วเปิด Wireshark ขึ้นมาอ่าน (ดู Lab 1) ② แลปเครื่องจริง — ดักจากการ์ด USB-C Ethernet ของ Mac ตรง ๆ ต้องมี ChmodBPF และต้องตั้ง monitor session ที่สวิตช์ให้ส่งสำเนามาที่พอร์ตของเรา (ดู Lab 2)
0.8Parallels/UTM + Ubuntu ARM + Mininet
Mininet รันบน Linux เท่านั้น ไม่มีเวอร์ชัน macOS ฉะนั้นต้องมี Linux จริง ๆ อยู่ในเครื่อง — และเพราะ M2 เป็น ARM64 ต้องใช้ Ubuntu รุ่น ARM (arm64/aarch64) เท่านั้น ไฟล์ ISO ของ x86 บูตไม่ขึ้น
- ลง Parallels Desktop (ลื่นกว่า จ่ายเงิน) หรือ UTM (ฟรี) — ทั้งคู่ใช้ Apple Virtualization บน M2 ได้
- สร้าง VM จาก Ubuntu Server/Desktop สำหรับ ARM64 — Parallels มีตัวเลือกดาวน์โหลด Ubuntu ARM ให้ในหน้าสร้าง VM เลย
- เข้า VM แล้วลง Mininet
[Ubuntu VM]
$ sudo apt update $ sudo apt install -y mininet openvswitch-switch iperf3 net-tools $ sudo mn --test pingall # ต้องได้ *** Results: 0% dropped - เปิด SSH ใน VM แล้วสั่งงานจาก Terminal ของ macOS — สะดวกกว่าพิมพ์ในหน้าต่าง VM มาก เพราะคัดลอก-วางได้ และเลื่อนดูผลย้อนหลังได้
[macOS Terminal]
$ ssh ubuntu # ตั้งชื่อย่อไว้ใน ~/.ssh/config แล้ว พิมพ์แค่นี้พอ - ตั้งชื่อย่อ
ubuntuให้ตัวเองครั้งเดียว (ถ้ายังไม่ได้ตั้ง)[macOS Terminal] — แก้ไฟล์ ~/.ssh/configHost ubuntu HostName <IP ของ VM ที่ได้จาก ip a ใน VM> User <ชื่อผู้ใช้ใน Ubuntu>
ในแลป 3 เวลาจะใส่ delay/loss ด้วย tc netem ต้องปิด TCP offload ของการ์ดก่อน ไม่งั้นค่าที่วัดได้จะเพี้ยน เพราะการ์ดรวมแพ็กเก็ตหลายตัวเป็นก้อนเดียวก่อนส่งขึ้นเคอร์เนล
$ sudo ethtool -K $IF tso off gso off gro off0.9ต่อ console ด้วย screen (แทน PuTTY)
ใบแลปให้ลง PuTTY เพื่อต่อ console แต่ PuTTY ไม่มีบน macOS — โชคดีที่ macOS มี screen ติดมาให้อยู่แล้ว ไม่ต้องลงอะไรเพิ่มเลย ใบแลปเองก็มีหัวข้อ "การเปิดใช้หน้า Config Router หรือ Switch ของ Mac" เขียนวิธีนี้ไว้
- เสียบสาย console (USB-C → console) เข้ากับอุปกรณ์และ MacBook
- เปิด Terminal แล้วหาชื่อพอร์ต
[macOS Terminal]
$ ls /dev/tty.* # ตัวอย่างผลลัพธ์: # /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbmodem1301 - เปิด console ด้วย
screenแล้วกด Enter หนึ่งครั้ง จะเห็น promptRouter>หรือSwitch>[macOS Terminal]$ screen /dev/tty.usbmodem1301 9600 # ใบแลปเขียนแค่ screen <port_name> — ใส่ 9600 ต่อท้ายด้วยจะชัวร์กว่า # เพราะ console ของ Cisco ใช้ 9600 8N1 เป็นค่ามาตรฐาน - ถอยออกจาก screen โดยไม่ตัดการเชื่อมต่อ — กด Ctrl+A แล้วตามด้วย Ctrl+\
- ถ้าเผลอปิด Terminal ไปแล้วอยากกลับเข้า config อีกรอบ
[macOS Terminal]
$ screen -ls # ดูรายการ session ที่ค้างอยู่ $ screen -r <screen_number> # กลับเข้า session เดิม - ปิด session ที่ค้าง (ทำเมื่อเสียบสายแล้วขึ้นว่า resource busy)
[macOS Terminal]
$ screen -X -S <screen_number> quit
ถ้าปิดหน้าต่าง Terminal เฉย ๆ โดยไม่ quit ตัว session จะยังจับพอร์ตอยู่ พอเปิด screen ใหม่จะขึ้น Resource busy หรือหน้าจอดำนิ่ง — วิธีแก้คือ screen -ls แล้ว screen -X -S <id> quit ทุกอันที่ค้าง แล้วค่อยเปิดใหม่ จำสองคำสั่งนี้ไปสอบด้วย เพราะห้องสอบไม่มีเวลาให้งม
0.10USB-C Ethernet + passthrough เข้า VM
MacBook Air M2 ไม่มีพอร์ต Ethernet ต้องใช้ USB-C adapter — และถ้าจะให้ Ubuntu ใน VM มองเห็นการ์ดใบนี้ (แลปที่ต้องต่อกับสวิตช์จริง) ต้องทำ USB passthrough ไม่ใช่แค่เสียบเฉย ๆ
- เสียบ USB-C Ethernet adapter — เช็กว่า macOS เห็นการ์ดที่ System Settings → Network
- ใน Parallels: Devices → USB & Bluetooth → เลือกการ์ด เพื่อยกการ์ดใบนั้นให้ VM ทั้งใบ (macOS จะไม่เห็นการ์ดชั่วคราว ถือว่าถูกต้อง)
- ใน Ubuntu ให้ดูชื่อ interface ที่ได้ — จะไม่ใช่
eth0และไม่ใช่enp0s5แต่เป็นชื่อยาว ๆ ที่สร้างจาก MAC address ของการ์ด เช่นenxaca7f1a9ff44[Ubuntu VM]$ ip -br a # lo UNKNOWN 127.0.0.1/8 # enp0s5 UP 10.211.55.7/24 <- การ์ดเสมือนของ Parallels # enxaca7f1a9ff44 UP 192.3.128.5/24 <- USB-C Ethernet ตัวจริง - เวลาสั่งงานให้ใช้ชื่อนี้เสมอ — เก็บไว้ในตัวแปรจะได้ไม่ต้องพิมพ์ยาว
[Ubuntu VM]
$ IF=enxaca7f1a9ff44 $ sudo ip addr add 192.3.128.5/24 dev $IF $ sudo ip link set $IF up
คำสั่งของเพื่อนที่ใช้ Windows หรือของในอินเทอร์เน็ตจะเขียน eth0 ตลอด ถ้าคัดลอกมาใช้ทั้งบรรทัดจะได้ Cannot find device "eth0" — ให้เปลี่ยนเป็นชื่อ enx… ของตัวเองทุกครั้ง ดูชื่อจริงด้วย ip -br a ก่อนเสมอ
0.11ก่อนทำแลปเครื่องจริง — ปิด Wi-Fi และ Firewall
ใบแลป 2 เขียนหมายเหตุไว้ว่า "ทำการปิด Wi-Fi และปิด Firewall ก่อนเริ่มทำการทดลอง … เมื่อทำการทดลองเสร็จแล้วให้กลับไปเปิดได้ตามปกติ"
- ปิด Wi-Fi — คลิกไอคอน Wi-Fi บนแถบเมนู แล้วสลับเป็นปิด
ทำไมต้องปิด: ถ้าเปิดไว้ Mac จะมีสอง route ที่ไปหา default gateway ได้ ทำให้ ping ออกไปทาง Wi-Fi แทนที่จะออกทางสาย และ Wireshark จะเจอทราฟฟิกขยะของ Wi-Fi ปนมาเต็มไปหมด
- ปิด Firewall — System Settings → Network → Firewall แล้วปิดสวิตช์
ทำไมต้องปิด: Firewall ของ macOS บล็อกการเชื่อมต่อขาเข้า ทำให้เพื่อน ping เครื่องเราไม่ได้ ทั้งที่เรา ping เขาได้ ซึ่งเป็นอาการที่ไล่หาสาเหตุยากมาก
- ตั้ง IP แบบ manual ที่การ์ด USB-C Ethernet — System Settings → Network → คลิกการ์ด → Details… → TCP/IP → Configure IPv4 = Manually แล้วกรอก IP / Subnet Mask / Router ตามที่ใบแลปกำหนด
ใบแลป 2 มีรูปหน้าจอ macOS ของสามขั้นนี้ไว้ครบ (รูปที่ 19–21) → ดูภาพจริงทีละหน้าจอที่ Lab 2 §2.12
- ทำเสร็จแล้วอย่าลืมเปิดกลับ — เปิด Wi-Fi และ Firewall คืน แล้วเปลี่ยน IPv4 กลับเป็น Using DHCP
0.12จุดที่ Mac ต่างจากที่ใบแลปเขียนไว้
ตารางนี้คือหัวใจของหน้านี้ — ทุกจุดที่เปิดใบแลปแล้วทำตามไม่ได้ เพราะใบแลปเขียนสำหรับ Windows
| เรื่อง | ใบแลปเขียนไว้ (Windows) | ของ Mac ต้องทำแบบนี้ |
|---|---|---|
| ตัวติดตั้ง GNS3 | โหลด GNS3-2.2.53-all-in-one.exe | โหลด GNS3-2.2.53.dmg จาก release เดียวกัน แล้วลากลง Applications |
| Wireshark มากับ GNS3 | ตัว all-in-one ลง WinPcap + Wireshark ให้เสร็จในตัวเดียว | .dmg ไม่ลง Wireshark ให้ ต้องโหลดแยก และต้องเป็นรุ่น Arm |
| สิทธิ์ดักจับ packet | WinPcap/Npcap จัดการให้อัตโนมัติ | ต้องลง ChmodBPF.pkg เพิ่ม ไม่งั้นไม่เห็น interface เลย |
| เมนู Preferences | Edit → Preferences | GNS3 (ซ้ายบน) → Preferences · ปุ่มลัด ⌘+, |
| ต่อ console | ลง PuTTY แล้วเลือก connection type = Serial | ไม่มี PuTTY → ls /dev/tty.* แล้ว screen /dev/tty.usbmodemXXXX 9600 |
| ออกจาก console | กดปิดหน้าต่าง PuTTY | Ctrl+A แล้ว Ctrl+\ · กลับเข้า screen -r · ปิด screen -X -S <id> quit |
| ตั้ง IP ของเครื่อง | Control Panel → Network and Sharing Center → Change adapter settings → คลิกขวา Ethernet → Properties → IPv4 → Use the following IP address | System Settings → Network → คลิกการ์ด → Details… → TCP/IP → Configure IPv4 = Manually |
| ปิด Firewall | Control Panel → Windows Defender Firewall → Turn Windows Defender Firewall on or off → Turn off | System Settings → Network → Firewall → ปิดสวิตช์ |
| ปิด Wi-Fi | ปิดจาก Network Connections | คลิกไอคอน Wi-Fi บนแถบเมนู → สลับปิด |
| ชื่อการ์ด Ethernet | Ethernet / Ethernet 2 | บน macOS = en0, en5 · ใน VM = enxaca7f1a9ff44 (ไม่ใช่ eth0) |
| Mininet | รันใน VirtualBox VM ของ x86 | ต้องเป็น Ubuntu ARM ใน Parallels/UTM · สั่งงานผ่าน ssh ubuntu |
| ดู ARP cache | arp -a (Command Prompt) | arp -a เหมือนกัน (มากับ macOS) — ส่วนใน VPCS ใช้ show arp ของ VPCS เอง |
0.13เช็คว่าทำถูกไหม
รันชุดนี้รวดเดียวก่อนนอน ถ้าผ่านทั้งหมด = เครื่องพร้อมเข้าห้องสอบ
$ ls -l /dev/bpf0 # ① Wireshark: ต้องเห็นกลุ่ม access_bpf
$ id -Gn | tr ' ' '\n' | grep access_bpf # ② ต้องพิมพ์คำว่า access_bpf ออกมา
$ ls /dev/tty.* # ③ เสียบสาย console แล้วต้องเห็น tty.usbmodem…
$ ssh ubuntu 'sudo mn --test pingall' # ④ Mininet: ต้องได้ 0% dropped| เช็คอะไร | ต้องเห็นอะไร |
|---|---|
| เวอร์ชัน GNS3 | GNS3 → About → 2.2.53 เป๊ะ ๆ |
| Template c7200 | เห็นไอคอน router ชื่อ c7200 ในแถบซ้าย ลากลงมาแล้วกด Start ขึ้นไฟเขียว |
| มีพอร์ต Serial จริง | คลิกขวาที่ router → Configure → Slots → เห็น PA-4T+ ที่ slot 1 และ PA-4E ที่ slot 2หรือเปิด console แล้วพิมพ์ show ip interface brief ต้องเห็นชื่อ Serial1/0 และ Ethernet2/0 |
| Idle-PC ตั้งแล้ว | Start router 2 ตัวทิ้งไว้ แล้วเปิด Activity Monitor — CPU ของ GNS3 ควรต่ำกว่า 30% ไม่ใช่พุ่ง 100% ต่อตัว |
| Wireshark เห็น interface | เปิดแอปมาแล้วมีรายการ en0, lo0 พร้อมกราฟเส้นวิ่ง |
| VPN KKU | ping <IP ของ server> จาก Terminal แล้วมี reply กลับ |
0.14ถ้าไม่ผ่าน ให้ไล่ตามนี้
| อาการ | สาเหตุที่พบบ่อยที่สุด | ทำอะไร |
|---|---|---|
| GNS3 ขึ้น Could not connect to server | ยังไม่ได้ต่อ VPN KKU หรือต่อ VPN หลังเปิด GNS3 | ต่อ VPN → ping IP ของ server ให้ผ่านก่อน → ปิด GNS3 แล้วเปิดใหม่ |
| เปิด Wireshark แล้วไม่มี interface สักอัน | ยังไม่ได้ลง ChmodBPF.pkg | เปิด .dmg ของ Wireshark ใหม่ → ดับเบิลคลิก ChmodBPF.pkg → logout/login → id -Gn | grep access_bpf |
| Wireshark ช้า / เตือนเรื่อง Rosetta | โหลดรุ่น Intel มาแทนรุ่น Arm | ถอนออก แล้วโหลดใหม่โดยเลือก Arm ที่หน้าดาวน์โหลด |
| Router ใน GNS3 ไม่มีพอร์ต Serial ให้ลากสาย | ตอนสร้าง template ไม่ได้ใส่ PA-4T+ ที่ slot 1 | Preferences → IOS routers → เลือก template → Edit → Slots → ใส่ PA-4T+ / PA-4E แล้วลบ router ตัวเก่าออกจาก topology แล้วลากใหม่ |
| พัดลมหมุนสุด เครื่องหน่วง พิมพ์ใน console ไม่ทัน | ไม่ได้กด Idle-PC finder | Preferences → IOS routers → Edit → Idle-PC → กด Idle-PC finder → รอจนเสร็จ |
screen เปิดแล้วจอดำ ไม่มี prompt | ยังไม่ได้กด Enter หรือมี session เก่าค้าง | กด Enter 2–3 ครั้ง · ถ้ายังดำ → screen -ls แล้ว screen -X -S <id> quit ทุกอัน แล้วเปิดใหม่ |
ใน Ubuntu ไม่มี eth0 | ชื่อ interface บน Linux ยุคใหม่ตั้งตาม MAC เป็น enx… | ip -br a ดูชื่อจริง แล้ว IF=enx… เก็บไว้ในตัวแปร |
| เพื่อน ping เครื่องเราไม่ได้ แต่เรา ping เพื่อนได้ | Firewall ของ macOS ยังเปิดอยู่ | System Settings → Network → Firewall → ปิด |
| ping ออกไปแล้ววิ่งผิดทาง / ผลไม่นิ่ง | ยังไม่ได้ปิด Wi-Fi จึงมีสองเส้นทางออก | ปิด Wi-Fi ให้เหลือแต่การ์ด USB-C Ethernet |
0.15ถ้าออกสอบ ต้องทำอะไรได้บ้าง
ข้อสอบแลปไม่มีข้อไหนถามว่า "จงติดตั้ง GNS3" แต่ทั้ง 4 ข้อของปีที่แล้วต้องใช้ของที่ลงในหน้านี้ทั้งหมด — ถ้าเข้าห้องสอบแล้วเพิ่งมารู้ว่า router ไม่มีพอร์ต Serial หรือ Wireshark ไม่เห็น interface คือเสียคะแนน 25 จาก 50 ทันที
เช็กลิสต์ก่อนเดินเข้าห้องสอบ:
- เปิด GNS3 → สร้างโปรเจกต์เปล่า → ลาก router 1 ตัว → กด Start ให้ขึ้นไฟเขียว แล้ว console เข้าไปได้จริง
- ยืนยันว่ามีพอร์ต Serial ด้วย
show ip interface brief— ต้องเห็นชื่อSerial…(ข้อสอบข้อ 1 บังคับใช้ Serial) - เปิด Wireshark หนึ่งครั้ง ให้แน่ใจว่ายังเห็น interface
- เปิด VM ให้ Ubuntu บูตค้างไว้ แล้ว
ssh ubuntuทดสอบ (ข้อสอบข้อ 4 เป็น Mininet) - จำ x = 3 และ y = 128 ของตัวเองให้ขึ้นใจ — ทุกข้อสอบให้ใช้ IP จากรหัสนักศึกษา
- เซฟหน้าเว็บนี้เก็บไว้ในเครื่อง (⌘+S หรือ Print → Save as PDF) เผื่อ Wi-Fi ห้องสอบมีปัญหา
0.16เช็คความเข้าใจ
ChmodBPF.pkg/dev/bpf* เฉพาะ root — ChmodBPF คือ launch daemon ที่ปรับสิทธิ์ให้ผู้ใช้ในกลุ่ม access_bpf อ่านได้ตอนบูต ถ้าไม่ลง Wireshark จะเปิดได้แต่มองไม่เห็นการ์ดใด ๆ ตรวจด้วย id -Gn | grep access_bpfPA-4T+ ที่ slot 1 จะเกิดอะไรขึ้นตอนทำข้อสอบข้อ 1PA-4T+ คือการ์ด Serial 4 พอร์ต (ได้ Serial1/0–Serial1/3) ส่วน PA-4E คือการ์ด Ethernet 4 พอร์ต (ได้ Ethernet2/0–Ethernet2/3) router ยังบูตขึ้นปกติ แต่พอจะลากสายจะไม่มีพอร์ต Serial ให้เลือก — และข้อสอบข้อ 1 ปีที่แล้วบังคับว่า router ต้องเชื่อมกันผ่าน Serialeth0 เสมอ เพราะเป็นการ์ดใบแรกที่เป็น Etherneten0 เหมือนที่ macOS เรียกenp0s5 เพราะเป็นการ์ดที่ต่อผ่าน PCI slot 5enxaca7f1a9ff44 — ชื่อที่สร้างจาก MAC address ของการ์ดenx ตามด้วย MAC address ส่วน enp0s5 คือการ์ดเสมือนของ Parallels เอง คนละใบกัน ฉะนั้นคำสั่งที่คัดลอกมาซึ่งเขียน eth0 จะใช้ไม่ได้ ต้อง ip -br a ดูชื่อจริงก่อนทุกครั้ง① GNS3 ต้อง 2.2.53 จาก GitHub และบน Mac คือไฟล์ .dmg ② IOS c7200 ต้องตั้ง RAM 512 MiB · slot1 PA-4T+ · slot2 PA-4E แล้วกด Idle-PC finder ③ Wireshark ต้องรุ่น Arm + ChmodBPF.pkg ④ ใช้ server KKU ต้อง ต่อ VPN ก่อนเปิด GNS3 ⑤ Mac ไม่มี PuTTY — ใช้ ls /dev/tty.* แล้ว screen … 9600 ออกด้วย Ctrl+A Ctrl+\ ⑥ ใน VM การ์ด USB คือ enx… ไม่ใช่ eth0 ⑦ แลปเครื่องจริง ปิด Wi-Fi และ Firewall ก่อนเสมอ