รัน Cisco ASAv บน Virtualbox

วันดีคืนดีผมอยากจะลองรัน Cisco ASA บนคอมขึ้นมา ก็เลยลองหาข้อมูลดู พบว่าวิธีที่จะทำได้คือใช้ ASAv ซึ่งเป็น VM ซึ่งออกแบบให้ทำงานบน VMWare หรือ QEMU แน่นอนว่าผมไม่มี VMWare ผมก็ต้องใช้รุ่น QEMU

ค้นในกูเกิล เค้าบอกว่าให้ไปหาไฟล์ asav932-200.qcow2 มาลองดู ก็ไปค้นมา จนเจอ ก็ลองรันดู

qemu-system-x86_64 -m 2048M -boot c -hda ./asav932-200.qcow2 -enable-kvm

ปัญหาคือ ต่อให้เปิด KVM แล้ว มันก็ยังช้าอยู่ ผมก็เลยลองเอาไปรันบน Virtualbox ดู ตอนแรกก็ทำไม่ได้ แครชทันที ลองดูในคอนโซล

info: running in virtualbox virtual environment.

อืม… มันรู้ด้วยว่าเราใช้ Virtualbox แฮะ หรือว่ามันจะล็อคไว้? อย่างนี้ต้องลอง spoof ว่าเป็น QEMU ดู

#!/bin/sh
MACHINE_NAME="ASAv"

VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" SeaBIOS
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "Ubuntu-1.8.2-1ubuntu1"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "04/01/2014"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "QEMU"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "Standard PC (i4400FX + PIIX, 1996)"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion" "pc-i440fx-vivid"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisVendor" "QEMU"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisType" 0
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisVersion" "pc-i440fx-vivid"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiProcVersion" "pc-i440fx-vivid"
VBoxManage setextradata "$MACHINE_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiProcManufacturer" "QEMU"

ลองรันดูอีกที ได้เว่ยเฮ้ย! สรุปคือโค้ดของเค้าจะตรวจสอบว่าตัวเองกำลังรันอยู่บนอะไร และถ้ามันไม่รู้จักมันก็จะไม่ยอมให้รัน

สรุปว่า จะรัน ASAv บน Virtualbox ได้ มีขั้นตอนดังนี้

  1. สร้าง VM ขึ้นมาใน Virtualbox ตั้ง OS เป็น Linux 2.6 / 3.x / 4.x ตั้งแรมเป็น 2048 MB ขึ้นไป (น้อยกว่านี้ บน QEMU ก็รันไม่ได้ครับ) ไม่ต้องสร้างฮาร์ดดิสก์ (เราจะจัดการอีกที)
  2. แก้การตั้งค่านิดหน่อย
    • System -> Motherboard -> Boot order เอาอย่างอื่นนอกจาก Hard Disk ออก
    • Audio -> Enable Audio ติ๊กออกเลย ไม่ได้ใช้
    • Network -> Adapter 1-4 ติ๊ก Enable ให้หมดเลย (ผมไม่แน่ใจว่าเพิ่มทีหลังได้มั้ย เลยก็เพิ่มเสียตอนนี้เลย)
    • Serial Ports -> Port 1 ติ๊ก Enable ไว้ก็ดีนะ
  3. แปลงไฟล์กันนิดหน่อย เปิด Terminal ขึ้นมา รันคำสั่ง
    qemu-img -O vdi /path/to/asav932-200.qcow2 ~/VirtualBox\ VMs/(VM Name)/asav932-200.vdi

    (ถ้ามันบอกว่า “command not found” ให้ลงแพกเกจ qemu-utils นะครับ)

  4. จากนั้น เอาสคริปต์ข้างบนไปใส่ในเท็กซ์ไฟล์ (สมมุติว่าชื่อ spoof.sh) แก้ชื่อ VM ให้เหมือนกับที่ตั้งไปเมื่อครู่ แล้วรัน
    sh ./spoof.sh

    สคริปต์จะตั้งค่าชื่อของระบบให้เหมือนกับ QEMU ซะ ASAv จะได้เชื่อว่าเรารันอยู่บน QEMU

  5. แก้การตั้งค่าของ VM อีกรอบ ไปที่ Storage -> Controller: SATA เพิ่มฮาร์ดดิสก์ที่เพิ่งแปลงไปเมื่อ 2 ข้อที่แล้ว
  6. คราวนี้ ลองรันดูได้เลย ถ้าในคอนโซลมีคำว่า
    info: running in kvm virtual environment.

    แปลว่าระบบหลงกลเราแล้วครับ เราสามารถใช้ ASAv ได้เลย

อย่างไรก็ตาม หากไม่มีไลเซนส์ของ ASAv ระบบจะจำกัดทราฟฟิกให้ไม่เกิน 100 Kbps เท่านั้นนะครับ ซึ่งก็น่าจะพอสำหรับการทดสอบทั่วไป ซึ่งถ้าจะจำลองอะไรที่ซับซ้อนหน่อย ผมแนะนำให้ใช้โปรแกรม GNS3 ซึ่งสามารถจำลองเราเตอร์ของ Cisco หรือจำลองฮับ จำลองสวิตช์ ได้หลายอย่าง ซึ่งเราสามารถเชื่อมต่อ VM ใน Virtualbox ได้เลย

เร่งความเร็วให้ WordPress บน Raspberry Pi (และบน Server ทุกแบบ)

จากความเดิมตอนที่แล้ว ผมใช้แพกเกจของ Debian ในการติดตั้ง WordPress บน Raspberry Pi ซึ่งถ้าผมไม่ทำการเร่งความเร็วเนี่ย เวลาจะดูบล็อกครั้งนึงจะต้องใช้เวลา 2-3 วินาทีในการโหลดหน้าเว็บ ซึ่งผมเห็นว่ามากเกินไป ผมจึงใช้ปลั๊กอินตัวนึงของ WordPress ที่มีชื่อว่า W3 Total cache

วิธีการเซ็ตก็ไม่ยุ่งยาก เริมจาก: Continue reading เร่งความเร็วให้ WordPress บน Raspberry Pi (และบน Server ทุกแบบ)

การติดตั้ง WordPress บน Debian โดยใช้แพกเกจของ Debian (+PHP-FPM บน Apache แบบง่ายที่สุด)

บล็อกนี้รันอยู่บน Raspberry Pi Model B ซึ่งรัน Raspbian (Debian สำหรับ ARMv6) ตอนติดตั้งผมจึงคิดที่จะใช้แพกเกจของ Debian ในการติดตั้ง ซึ่งก็ต้องทำอะไรหลายอย่างเหมือนกัน เริ่มจาก