Author Archive
Posted by อัทศักดิ์ วงศ์กิตตะ on Friday, April 29th, 2011
สวัสดีครับหลังจากห่างหายไปนาน คิดว่าช่วงนี้จะพยายามเข้ามา Update บ่อยๆนะครับ ช่วงนี้มีงานต้องติดตั้งเว็บ Download ไฟล์ให้ลูกค้าโดยมีเครื่องหลายๆเครื่อง และแต่ละเครื่องมี Card SATA เพิ่มขึ้น ทำให้แต่ละเครื่องมี HDD ไม่ต่ำกว่า 10 ก้อน
ก่อนนี้ผมใช้การ Mount ผ่าน /etc/fstab โดยการกำหนด device ไปตรงๆ แต่เมื่อ HDD มีปัญหาจำเป็นต้องถอดออกไปเปลี่ยน จะเกิดปัญหา Device เปลี่ยนตำแหน่ง ทำให้ไม่สามารถ Mount HDD ได้ ด้วยเหตุนี้ผมจึงได้ใช้วิธีการ Mount HDD ผ่าน “Disk Label”
Disk Label คือการใส่ป้ายชื่อกำกับให้แต่ละ Partition โดยสามารถกำหนดความยาวได้สูงสุดถึง 160 ตัวอักษร และหากเมื่อเราเอา HDD ก้อนดังกล่าวไปใช้งานเครื่องอื่น ก็สามารถเห็น Label เดียวกันทั้งหมด
วิธีการตั้งชื่อ Label
สำหรับการตั้งชื่อจะใช้คำสั่ง tune2fs สำหรับ Partition ที่ใช้ Filesystem ที่เป็น ext2, ext3 และใช้คำสั่ง tune4fs สำหรับ ext4 โดยมีคำสั่งดังนี้
Ext4 Partition
tune4fs -L dl2-01 /dev/sda1
ส่วนของไฟล์ /etc/fstab
LABEL=/ / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=dl2-00 /home/dl2-00 ext4 defaults 0 0
LABEL=dl2-01 /home/dl2-01 ext4 defaults 0 0
แค่นี้เครื่อง Server ก็จะเมาท์ HDD โดยใช้ Disk Label แล้วครับ หาเราทำการถอดหรือเพิ่ม HDD เข้าไปก็จะไม่มีปัญหากับ HDD ที่มีอยู่ครับผม
Tags: Disk Label, Linux
Posted in Operating System | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Tuesday, November 2nd, 2010

โหลด IPMI Kernel Modules
modprobe ipmi_watchdog
modprobe ipmi_poweroff
modprobe ipmi_msghandler
modprobe ipmi_devintf
modprobe ipmi_si
ติดตั้ง ipmitool
ทำการ config ipmi
ipmitool lan set 1 ipaddr 192.168.1.101
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.1.254
ipmitool lan set 1 password mypassword
ipmitool lan set 1 access on
ipmitool lan set 1 arp respond on
ipmitool mc reset cold
วิธีการใช้งาน
ดู สถาณะ Power
ipmitool -H 192.168.1.101 -U root -P mypassword power status
Reset เครื่อง
ipmitool -H 192.168.1.101 -U root -P mypassword power reset
หากท่านใช้ iPhone ผมแนะนำ IPNI Touch ครับ สามารถสั่ง Power On/Off/Reset ได้เลย ทำให้ Admin อย่างเราๆมีชีวิตที่แสนสบายขึ้นเยอะเลยครับ
Tags: debian, IPhone, IPMI
Posted in System | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Monday, October 25th, 2010
สมัยนี้ไปไหนก็มีก็มี Wifi ให้เราใช้งาน ไม่ว่าจะเป็นแบบฟรี หรือ เสียเงิน วันนี้ผมเอาจุดอ่อน ที่ผู้ให้บริการ Hotspot มองข้ามคือ การเปิด Any DNS หรือ การเปิดให้ Client สามารถ Query DNS ข้างน้อกได้ โดยไม่ได้ทำการ Auth ซึ่ง Wifi หลายๆที่เปิดไว้เพื่อความสะดวก แต่ตรงนี้แหละเป็นจุดอ่อน ที่จะทำให้เราสามารถใช้งาน Internet ได้โดยไม่โดนจำกัด Bandwidth
สิ่งที่ต้องเตรียม
- ต้องมี Server ที่เป็น Fix IP ไว้ข้างนอก
- ติดตั้ง OpenVPN
ติดตั้ง Server
apt-get install openvpn
openvpn --genkey --secret /etc/openvpn/mysecret.key
vi /etc/openvpn/server-udp-53.conf
# File /etc/openvpn/server-udp-53.conf
dev tap
mode p2p
proto udp
#ping 1
port 53
ifconfig 10.10.10.1 255.255.255.252
secret /etc/openvpn/mysecret.key
tun-mtu 1500
tun-mtu-extra 32
mssfix 1400
push "route 192.168.10.0 255.255.255.0"
ติดตั้ง Client
Download Client จาก http://openvpn.net/index.php/openvpn-client.html และทำการติดตั้ง
Copy file mysecret.key มาไว้ในเครื่อง และสร้างไฟล์ config โดยใช้ชื่อ client.ovpn
#file client.ovpn
dev tap
mode p2p
proto udp
remote <IP Server>
#ping 1
port 53
ifconfig 10.10.30.2 255.255.255.252
secret mysecret.key
tun-mtu 1500
tun-mtu-extra 32
mssfix 1400
ping 5
แค่นี้ก็สามารถ Connect VPN ผ่าน UDP/53 ได้แล้วครับ
Tags: debian, OpenVPN, VPN
Posted in debian | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Thursday, October 21st, 2010
วันนี้ติดตั้ง Xen Server และลง Debian ในเครื่อง Xen จะทำการ Add source ของ citrix ให้เองอัตโนมัตติ แต่เมื่อเราทำการ update package จะฟ้อง Error ว่าไม่พบ GPG key ของ Citrix เราสามารถติดตั้งได้ ดั่งนี้
server:~# wget -q http://updates.vmd.citrix.com/XenServer/5.5.0/GPG-KEY -O- | apt-key add -
แค่นี้เวลาเราสั่ง apt-get ก็จะไม่ฟ้อง error gpg key อีกแล้วครับ
Tags: apt-get, debian, xen
Posted in debian, Operating System | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Wednesday, October 20th, 2010
วันนี้ประเดิม Blog แรกด้วย HAProxy ซึ่งเป็น Software load balance ที่สามารถทำงานได้ถึง Layer7 หลักๆผมเอามาทำเป็น HTTP Load Balance เป้าหมายหลักๆที่ต้องการคือ
- แยกโหลดไปยังเครื่อง Web Node แต่ละเครื่องได้
- กำหนด weight ของแต่ละ Server ได้
- สามารถทำ health check script ได้เอง
- สามารถ ทำงานได้ในระดับ Layer 7 ได้
หลังจากผมใช้งาน Linux-Ha (ipvsadm) มานาน ผมพบปัญหาว่า บางครั้งหากเครื่อง Web Node มีปัญหาเครื่อง Load balance จะไม่ปลดโหลดออก ทำให้ผู้ใช้งานไม่สามารถใช้งานได้ ผมเลยลองค้นหาเรื่อง L7 Load Balance จึงมาพบ HA Proxy เลยลอง apt-get install haproxy ดูพบว่าใน Debian ก็มี package มาให้ เลยลองติดตั้งพบว่า สามารถตอบสนอง ความต้องการของผมได้เป็นอย่างดี ยังไงลองมาดูกันครับ ว่าติดตั้งและใช้งานเป็นยังไง

ติดตั้ง
# File /etc/haproxy/haproxy.cfg
global
daemon
user haproxy
group haproxy
maxconn 8192
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
stats socket /var/run/haproxy.sock mode 666
defaults
log global
mode http
option httplog
option dontlognull
option httpclose
#option forwardfor
stats enable
retries 3
option redispatch
maxconn 65535
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen igetweb.com 0.0.0.0:80
balance roundrobin
acl url_static path_beg /images /image /css
acl url_static path_end .jpg .jpeg .JPG .gif .png .ico .css .zip .tgz .gz .rar .bz2 .doc .xls .exe .pdf .ppt .txt .tar .mid .midi .wav .bmp .rtf .js .swf .wma .wmv
use_backend pool_static if url_static
default_backend pool_dynamic
backend pool_dynamic
balance roundrobin
option httpchk HEAD /check.txt HTTP/1.0
server web1 192.168.1.11:80 check inter 2000 fall 3 weight 1
server web2 192.168.1.12:80 check inter 2000 fall 3 weight 1
backend pool_static
balance roundrobin
option httpchk HEAD /check.txt HTTP/1.0
server web1 192.168.1.21:80 check inter 2000 fall 3 weight 1
server web2 192.168.1.22:80 check inter 2000 fall 3 weight 1
ส่วนสำคัญคือ ACL โดยเราได้ทำการประกาศ ACL ที่ชื่อ url_static โดยหากผู้ใช้งานเรียก url ที่ขึ้นต้นด้วย /image /images /css หรือ ไฟล์ที่ลงท้ายด้วย jpg, jpge และทำการประกาศว่า หาก macth acl url_static ให้ไปเรียกใช้ pool_static แค่นี้เราก็มี L7 Load Balance ไว้ใช้งาน โดยไม่ต้องเสียงินหลักแสน ซื้อ Hardware Load balance แล้วครับ
Tags: debian, haproxy, load balance
Posted in Load balancing | 1 Comment »
Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, May 9th, 2010
พูดถึงปัญหาของเว็บใหญ่ๆทั่วไป ก็คงไม่เว็บเรื่องระบบ File System เพราะปัจจุบันมีแค่ NFS เท่านั้นที่ทำการ Share ไฟล์ได้ใน Unix หากจะหันไปให้ SAN หรือ iSCSI ราคาก็แสนแพง เพราะฉนั้นระบบใหญ่แค่ไหนก็มีปัญหาที่ระบบไฟล์ทุกที เราจึงต้องลบ Traffic ที่จะวิ่งไปดึงจาก NFS ให้น้อยที่สุด วันนี้ผมมีอีกทางออกให้คือการแยก Static และ Dynamic Content ออกจากกัน เพราะหากเราแยกได้แล้ว เราสามารถที่จะ Sync Dynamic Content ให้ไปอยู่ใน Local disk ได้หรือ จะทำการเลือกใช้ Web Server ให้เหมาะสมกับระบบที่เราดูแลได้ง่ายขึ้น

Continue reading “Speedup Dynamic and Static Content with Nginx” »
Tags: NFS, Nginx, Web Server
Posted in debian, Operating System | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Sunday, May 9th, 2010
แนวคิดคือ Server ที่เราดูแลมี System Admin หลายคนที่สามารถ Access เป็น Root ได้ แล้วเราจะรู้ได้ไงว่า ใคร Login เข้าไปยัง Server ทางออกของผมคือ Allow User ที่ sshd ให้มีแค่ admin เท่านั้นที่เข้าได้ และให้ sudo เป็น root และจะมีอีเมล์แจ้งเตือนมายัง ผู้ดูแล เพื่อทราบว่าเข้าไปทำอะไร
1. sshd ให้แก้ไขไฟล์ /etc/ssh/sshd_config เพิ่ม AllowUsers เช่น
AllowUsers auttasak
2. แก้ไข /usr/local/etc/sudoers ดั่งนี้
Defaults mailto=admin@domain.com,mail_always
root ALL=(ALL) ALL
auttasak ALL=(ALL) NOPASSWD: ALL
หลังจากนั้นให้ทำการ Restart SSH ครับ เมื่อใดที่มีคน sudo จะมีอีเมล์แจ้งไปยัง admin@domain.com แบบนี้ทำให้เราทราบได้ว่ามีคน sudo เป็น root เมื่อใดบ้าง
Tags: FreeBSD, ssh
Posted in CentOS, debian, FreeBSD, Operating System, ubuntu | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Wednesday, April 28th, 2010
เพื่อนๆคงเจอปัญหาเมื่อต้องการติดตั้งโปรแกรมผ่าน Ports ของ FreeBSD ซึ้งจะต้องโหลด Source จากต่างประเทษปต่ปัญหาคือ ISP บางเจ้าในไทย Link Inter ช้าเหลือเกิน ทางออกคือใช้ proxy แทน มาดูวิธีเลยครับ
echo "FETCH_CMD=wget" >> /etc/make.conf
echo "FETCH_BEFORE_ARGS=-nc --progress=bar --read-timeout=60" >> /etc/make.conf
HTTP_PROXY=http://user:pass@proxy.domain.com:3128/
FTP_PROXY=http://user:pass@proxy.domain.com:3128/
export HTTP_PROXY FTP_PROXY
แค่นี้เพื่อนๆก็สามารถลงโปรแกรมผ่าน wget โดยใช้ Proxy ได้แล้วครับ
Tags: FreeBSD, wget
Posted in FreeBSD | No Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Tuesday, March 23rd, 2010
หายไปนานครับ วันี้เอาเรื่องเก่าๆมาหากินใหม่ IPTables ที่ทำๆอยู่ทุกวันนี้แหละครับ พอดีทำ Shell Script ทิ้งไว้เลยเอามาแจกจ่ายให้เพื่อนๆเอาไปใช้งาน หลายๆคนถามว่าทำไมต้องเขียนเอง ก็เหตุผลง่ายๆครับ เราเขียนเองเรารู้ทุกๆ rules ที่มันทำงานอย่างไร เวลาเกิดปัญหา เราสามารถแก้ไขปัญหาได้ รวดเร็ว มาดูความสามารถของ script firewall ตัวนี้ครับ
ความสามารถ:
– State full firewall
– สามารถกำหนด Interface ที่ทำงานได้
– สามารถกำหนด VIP IP ได้
– สามารถกำหนด Band IP ได้
– มีการเก็บ Log ลง syslog
– ป้องกันการ Scan port ได้
– ป้องกัน IP Spoofig
– ป้องกัน SSH Attatch
Continue reading “IPTables statefull firewall for Linux” »
Tags: centos, debian, firewall, INPUT, iptables, Linux, Shell
Posted in CentOS, debian, Development, Operating System, Shell script, ubuntu | 4 Comments »
Posted by อัทศักดิ์ วงศ์กิตตะ on Thursday, February 19th, 2009
สวัสดีครับ วันนี้จิบเบียร์แล้วก็มานั้งทบทวนเรื่องงานที่ทำ พอดีมีเรื่องเล็กๆน้่อยๆ ที่ผมเองทำและน่าจะเป็นประโยช์กับเพื่อนๆ เกี่ยวกับการตั้ง Reverse Proxy กับปัญหา เรื่อง IP ที่ show ใน app ของเรา
ปกติเวลาเราเขียน Apps หรือ พวกฟรี Webboard ทั้งหลายจะมีการ Check IP จาก
$_SERVER['REMOTE_ADDR'] และ $_SERVER['HTTP_X_FORWARDED_FOR'] หากเจอตัวแปล HTTP_X_FORWARDED_FOR ระบบจะทำการ Record IP จาก HTTP_X_FORWARDED_FOR ด้วย แต่หากว่าบางโปรแกรมที่เขียน จะเก็บแค่ REMOTE_ADDR ทำให้ IP ที่แสดงในโปรแกรมของเรา เป็น IP ของ Reverse Proxy แทน
Continue reading “แก้ปัญหา REMOTE_ADDR ใน Reverse Proxy” »
Tags: PHP, Proxy, Reverse Proxy, Web Server
Posted in Development, PHP | 6 Comments »