หน้าเว็บ

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2551

วิธีการเปิด Port แบบระบุ range ใน Windows Firewall

ปกติแล้ว Windows Firewall นั้นจะไม่มีให้เราใส่ช่วงของ Port ที่ต้องการเปิดได้ ถ้าต้องเปิด port จำนวนมากๆก็เหนื่อยอยู่

แต่ถ้าเขียน script run บน command line ก็จะช่วยให้สบายมากขึ้น

สมมติว่าถ้าเราต้องการเปิด port ช่วง 5000 ถึง 5100 เพื่อใช้สำหรับ FTP ก็สามารถสั่งได้แบบนี้

for /L %i in (5000,1,5100) do netsh firewall add portopening TCP %i "FTP %i"
โดยคำว่า "FTP %i" นั้นใช้เป็น prefix ว่าตั้งชื่อว่า "FTP วรรค หมายเลขport"

ระบบที่ทดสอบ

OS: Windows Server 2003

หลักการพื้นฐานการเปิด port ของ FTP

การใช้งาน FTP ประกอบด้วย FTP Server และ FTP Client ซึ่งต้องมีวิธีการจัดการเกี่ยวกับ Port

FTP จะใช้ port หลักๆอยู่ 2 port ด้วยกันคือ port 20 และ 21
Port 21: ใช้ในการส่ง Control Message
Port 20: ใช้ในการส่ง Data Message หรือข้อมูลจริงที่ทำการรับส่งไฟล์
และนอกจากนั้นยังต้องใช้ random port อื่นๆเพื่อรองรับกรณีที่มีหลาย connection เชื่อมต่อเข้ามาพร้อมกัน

โดยจะเปิด port ไหนนั้นขึ้นอยู่กับการใช้งาน FTP ว่าเป็นลักษณะใด โดยแบ่งได้ 2 ลักษณะ

1. Active FTP แบบนี้ใช้ทั้ง port 20,21
command : client >1023 -> server 21
data : client >1023 <- server 20

ดังนั้น ฝั่ง client ต้องเปิด port มากกว่า 1023 เอาไว้ ฝั่ง server ต้องเปิด port 21 ขาเข้า และเปิด port 20 ขาออก

2. Passive FTP แบบนี้ไม่ต้องใช้ port 20
command : client >1023 -> server 21
data : client >1023 -> server >1023

ดังนั้น
ฝั่ง client ต้องเปิด port มากกว่า 1023 ขาออก
ฝั่ง server ต้องเปิด port 21 ขาเข้า และเปิด port มากกว่า 1023 ขาเข้า

ซึ่งปัจจุบัน FTP Server ส่วนใหญ่ก็มักใช้แบบ Passive เพราะเราไม่ต้องไปสนใจว่า client จะเปิด port ให้เรา(server)เชื่อมต่อไปได้หรือไม่

โดย port ที่มากกว่า 1023 ที่กล่าวในนี้นั้นแล้วแต่เราจะเลือกเปิด ซึ่งที่ผมใช้ Filezilla Server ในตัวอย่าง FAQ ของเค้ายกตัวอย่างว่า 5000-5100 สำหรับการเปิด port แบบเป็น range บน Windows Firewall นั้นดูได้ที่ http://ping2p.blogspot.com/2008/11/port-range-windows-firewall.html

อ้างอิง
http://www.slacksite.com/other/ftp.html

วันจันทร์ที่ 17 พฤศจิกายน พ.ศ. 2551

Clone VirtualBox Guest OS

ที่จะทำคือ ในเครื่องแรก มี VirtualBox ซึ่งมี GuestOS อยู่ และต้องการย้าย Guest OS ที่ใช้งานอยู่นี้ไปทำที่เครื่อง(physical)อื่น
ซึ่งไฟล์ที่ใช้เก็บ Guest OS นั้นจะมีสกุล .vdi ที่ตอนแรกเราได้สร้างเอาไว้ แต่ว่าจากลองอ่านๆมาเค้าว่าการก๊อปปี้ไฟล์นี้ไปดื้อๆเลยนั้นไม่ดีอาจมีปัญหาภายหลังได้

วิธีที่ถูกต้องให้ใช้คำสั่งที่มากับ VirtualBox อยู่แล้วในการ Clone
VBoxManage clonevdi sourcefile destfile
โดย sourcefile ให้ชี้ไปที่ vdi ที่เราต้องการทำการ clone ส่วน desfile ก็ให้ระบุเป็นไฟล์ใหม่ที่ต้องการ
เช่น
VBoxManage clonevdi "C:\vbox\ubuntu.vdi" "C:\clonevbox\cloneubuntu.vdi"
ซึ่งคำสั่ง VBoxManage จะอยู่ในโฟลเดอร์ที่เราลง VirtualBox ไว้ ถ้าเราไม่ได้เอาไว้ใน environment variable PATH เราก็ต้องระบบคำสั่งแบบ fullpath หรือไม่ก็ไปอยู่ที่โฟลเดอร์นั้นแล้วค่อยสั่ง

ป.ล. แต่ว่ายังมีปัญหาคือผมไม่สามารถเอา snapshot ติดไปด้วยได้ เลยแก้โดย merge ทุก snapshot ให้เหลือแค่อันล่าสุดอันเดียวครับ

ระบบที่ทดสอบ

HostOS: Windows XP SP2
VirtualBox: 2.0.4

Screen Resolution ไม่ auto-resize (VirtualBox & Intrepid)

อาการต่อเนื่องจากโพสก่อน http://ping2p.blogspot.com/2008/11/ubutu-8.html

แต่อันนี้คือ Screen Resolution ไม่ปรับขนาดตามหน้าจอของ host os และถ้าเลือกเปลี่ยนเองที่ System->Preferences->Screen Resolution ก็มีให้เลือกแค่ 800x600 กับ 640x480

วิธีแก้คือ
1) ตรวจสอบว่ามี vboxvideo_drv.so อยู่ที่ /usr/lib/xorg/modules/drivers
2) เป็น root แล้วแก้ไข /etc/X11/xorg.conf
2.1) เพิ่มใน section Device
Section "Device"
Identifier "Configured Video Device"
Driver "vboxvideo"
EndSection

2.2) เพิ่มใน section Screen
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
SubSection "Display"
Modes "1280x800" "1280x768" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

โดยความละเอียดนั้นขึ้นอยู่กับความละเอียดที่รองรับของแต่ละเครื่อง
3) restart Ubuntu Guest

ระบบที่ทดสอบ
Host: Windows Vista SP1 Business
Guest: Ubuntu 8.10 Intrepid Ibex
VirtualBox: 2.0.4

ที่มา
http://ubuntuforums.org/showthread.php?t=886354

Mouse Integration ไม่ทำงาน (VirtualBox & Intrepid)

ปัญหาคือผมลง Ubutu 8.10 (Intrepid Ibex) บน Virtual Box ที่มี host คือ Windows Vista

พอลงเสร็จก็ทำงานได้ปกติ แต่คราวนี้พอจะลง Guest Addition เพื่อให้มันมี Mouse Integration ได้กลับพบปัญหาคือ Guest Addition บอกว่าลงสำเร็จด้วยดี แต่ Mouse Integration ยังไม่ทำงาน ต้องคอยคลิ๊กเพื่อให้ capture ก่อนถึงจะทำงานได้ แล้วค่อยกด Ctrl เพื่อออก ทำให้ไม่สะดวกเป็นอย่างมาก

ก็ไปพบวิธีแก้มาจาก ticket ของเวบ virtualbox เองดังนี้

1) ตรวจสอบว่ามีไฟล์ vboxmouse_drv.so อยู่ที่ /usr/lib/xorg/modules/input รึเปล่า (ควรมีอยู่)
2) เป็น root แล้วแก้ไขไฟล์ /etc/X11/xorg.conf โดยให้เพิ่ม
Section "InputDevice"
Identifier "Configured Mouse"
Driver "vboxmouse"
Option "CorePointer"
EndSection

เข้าไป (แต่ละบรรทัดใช้ tab หน้าสุด และระหว่างคำ)
3) restart ตัว guest linux

ระบบที่ทดสอบ

HostOS: Windows Vista SP1 Business
GuestOS: Ubuntu 8.10 Intrepid Ibex
VirtualBox: 2.0.4

ที่มา
http://www.virtualbox.org/ticket/2545
http://forums.virtualbox.org/viewtopic.php?p=43200#43200

วันจันทร์ที่ 10 พฤศจิกายน พ.ศ. 2551

วันจันทร์ที่ 3 พฤศจิกายน พ.ศ. 2551

Cross Browser IFrame Script

IFrame มีปัญหาในการทำงานกับหลายๆ browser ซึ่งปัญหาที่ผมเจอคือเรื่องการ auto-resize เพื่อให้ปรับขนาดตาม content ด้านใน IFrame ก็เลยลองหา Script หลายตัวมาทดสอบ ซึ่งรู้สึกว่า Script ตัวนี้ใช้ได้ดี โดยไม่ยุ่งเหยิง

โดยเอาใส่ไว้ในส่วนที่เป็น JavaScript

function autoIframe(frameId) {
try {
frame = document.getElementById(frameId);
innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
objToResize = (frame.style) ? frame.style : frame;
objToResize.height = innerDoc.body.scrollHeight + 10;
} catch(err) {
window.status = err.message;
}
}

แล้วก็ส่วนที่เราทำการประกาศ iframe ก็ให้ใส่ onload เพิ่มเข้าไปเพื่อให้ไปเรียกฟังก์ชัน javascript โดยส่งพารามิเตอร์เป็นชื่อของ iframe ที่เราประกาศไว้ (เช่นในตัวอย่างข้างล่างให้คำว่า tree)

onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe('tree');}"

Browser ที่ทดสอบ
Firefox 3.0.3
IE 6.0
Opera 9.62
Safari 3.1.2
Maxthon 2.1.4
Chrome 0.3.154
Plawan 1.1

วันอาทิตย์ที่ 2 พฤศจิกายน พ.ศ. 2551

ลง VirtualBox GuestAddition บน Linux Host

ใช้ host เป็น WindowsXP แล้วลง VirtualBox แล้วก็ลง CentOS5 เป็น Guest OS
คราวนี้พอจะลง GuestAddition แล้วปรากฎว่าไม่สามารถลงได้ ขึ้น error ดังนี้
[root@localhost VBOXADDITIONS_2.0.4_38405]# sh ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 2.0.4 Guest Additions for Linux installation....................
............................................................................................................................
............................................................................................................................
......................
VirtualBox 2.0.4 Guest Additions installation
Please install the build and header files for your current Linux kernel.
The current kernel version is 2.6.18-53.1.13.el5
Please install the GNU compiler.
Problems were found which would prevent the Guest Additions from installing.
Please correct these problems and try again.
ก็แก้ตาม step ที่ฟ้องมาเลยคือ
1. ลง build and header files
yum install kernel-devel
แล้วสร้าง link ไว้ด้วยใน /usr/src
cd /usr/src
ln -s kernels/2.6.18-92.1.6.el5-i686 linux

(เลขเวอร์ัชันขึ้นอยู่กับ kernel ของ linux แต่ละรุ่น)
2. ลง GNU compiler
yum install gcc
คราวนี้ก็กลับไปที่โฟลเดอร์ของ VBoxAddition แล้วสั่ง run ใหม่
sh ./VBoxLinuxAdditions-x86.run
เป็นอันเรียร้อย

ระบบที่ทดสอบ
Host OS: WindowsXP SP2
GuestOS: CentOS 5
VirtualBox: 2.0.4

อ้างอิง
http://www.centos.org/modules/newbb/viewtopic.php?topic_id=12724
http://aparker.co.uk/?p=7