วันศุกร์ที่ 26 ธันวาคม พ.ศ. 2551

** ตั้งค่า IP. ที่การ์ดแลน **

** ตั้งค่า IP. ที่การ์ดแลน **

# alias ที่ไฟล์ /etc/rc.conf
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
ifconfig_rl0_alias0="inet 192.168.0.2 netmask 255.255.255.255"

เสร็จแล้วใช้คำสั่ง netstart ครับ

#/etc/netstart ; เพื่อ restart network configuration

ถ้าจะ set lan card ใบเดียวให้มี หลาย ๆ ip ให้ทำแบบนี้คับ
# ifconfig rl0 alias 192.168.1.1 netmask 255.255.255.0
# ifconfig
rl0: flags=8843 mtu 1500
inet 202.29.80.130 netmask 0xffffff80 broadcast 202.29.80.255
inet6 fe80::202:44ff:fe14:ba%rl0 prefixlen 64 scopeid 0x1
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.0.255
ether 00:02:44:14:00:ba
media: Ethernet autoselect (100baseTX )
status: active

เพียงแค่นี้ก็จะสามารถใช้ได้ 2 ip คับผม

หรือถ้าต้องการให้ ip ที่เพิ่มเข้าไปใหม่นั้นทำงานทุกครั้งที่มีการ boot เครื่องให้เพิ่มบรรทัดนี้ ในไฟล์ /etc/rc.conf นะคับ

ifconfig_rl0_alias0="192.168.1.1 netmask 255.255.255.0"

สามารถทำได้หลายแบบนะครับ
รู้สึกว่าใน Slackware จะใช้แบบนี้นะครับ

# ifconfig rl0:0 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx
# ifconfig rl0:1 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx

ถ้า rl0 คือชื่อ lan card ใบที่ 1 กำหนดเป็น ip address ตัวที่ 1
ส่วน :0 และ :1 ก็เป็นหมายเลข ip address ตัวที่ 2 และ 3 ตามลำดับ

ส่วน BSD น่าจะอย่างงี้นะคับ

# ifconfig_rl0="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
# ifconfig_rl0_alias1="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
# ifconfig_rl0_alias0="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

ถ้าทำผ่าน sysinstall ก็ขั้นตอนนี้นะครับ
/stand/sysinstall -> เลือก configure -> เลือก networking -> เลือก interface -> เลือก ชื่อ lancard ที่จะใส่ค่าไอพี -> จะขึ้นหน้าจอถามค่า IPV6 ตอบ NO -> หน้าจอถามว่าจะรับค่า DHCP หรือไม่ ถ้าไม่ตอบ NO -> จากนั้นจะขึ้นหน้าจอใส่ค่า host , domain ,ip gateway , dns , ip การ์ด , subnetmask ก็ใส่ให้ถูกต้องแล้วก็ OK -> จากนั้นจะกลับมาหน้า interface ใหม่ ให้ทำตามเดิมเลือกอีกการ์ดนึงนะครับ
หรือจะสั่งที่ command line เลยก็ได้ เช่น
ifconfig <ชื่อ interface> inet <เลขไอพี> netmask <เลข netmask> up แล้ว enter ตัวอย่างนะครับ ifconfig bge0 inet 203.185.98.99 netmask 255.255.255.248 up แบบนี้อะคับ ต้อง boot ใหม่ด้วย
แล้วลอง ifconfig ดู

เอาแบบ command line เลยครับง่ายดี

# ifconfig rl0 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx
# ifconfig rl1 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx

# ifconfig rl0 down / up
# ifconfig rl1 down / up

rl0 คือ ชื่อการ์ดแลนใบที่ 1
rl1 คือ ชื่อการ์ดแลนใบที่ 2

http://www.thaibsd.com/webboard/search.php?Category=thaibsd

วันพฤหัสบดีที่ 25 ธันวาคม พ.ศ. 2551

เพิ่ม HDD ใหม่ใน Linux

http://9max.icspace.net/readarticle.php?article_id=25
1. Shutdown เครื่อง
2. ต่อ HDD 4 G เข้าไปเป็นแบบ IDE กว่าจะไปหามาได้

[root@mail root]#
[root@mail root]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.8G 1.7G 42M 98% /
none 62M 0 61M 0% /dev/shm
[root@mail root]#
[root@mail root]#
[root@mail root]# fdisk -l (ดูว่า HDD ที่ต่อไว้เห็นหรือเปล่า )

Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 242 1943833+ 83 Linux
/dev/sda2 243 275 265072+ 82 Linux swap
[root@mail root]#
[root@mail root]#

****** ทำไมไม่เห็น งั้น shutdown แล้ว ขยับสายใหม่อีกที

ลองอีกทีคำสั่งเดิม ....

[root@mail root]# fdisk -l

Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 242 1943833+ 83 Linux
/dev/sda2 243 275 265072+ 82 Linux swap

Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 * 1 1022 4120672+ b Win95 FAT32
[root@mail root]#
[root@mail root]#

ว่าแล้ว สายหลวมจริงๆ ได้ แร๊ะ.... อิ..อิ...

[root@mail root]# fdisk (ลืมคำสั่ง เพื่อความชัวร์ ให้คำสั่งนี้)

Usage: fdisk [-l] [-b SSZ] [-u] device
E.g.: fdisk /dev/hda (for the first IDE disk)
or: fdisk /dev/sdc (for the third SCSI disk)
or: fdisk /dev/eda (for the first PS/2 ESDI drive)
or: fdisk /dev/rd/c0d0 or: fdisk /dev/ida/c0d0 (for RAID devices)
...
[root@mail root]#
ตามตัวอย่างเลย....
[root@mail root]# fdisk /dev/hdc (เข้าไปจัดการ HDD ตัวที่เอามาต่อได้เลย)

Command (m for help): m (ลืมอีกแร๊ะ)
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): p (ดูซิ ว่าเป็นอะไรอยู่)

Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 * 1 1022 4120672+ b Win95 FAT32

Command (m for help): d (จัดการ ลบออกไปซะ)
Partition number (1-4): 1 (เลือกให้ถูก อันด้วยล่ะ)

Command (m for help): p (ดูอีกที ว่ายังอยู่อีก ป่ะ)

Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System

Command (m for help): n (ถูกลบไปแร๊ะ สร้องใหม่ด้วย n )
Command action
e extended
p primary partition (1-4)
p (เลือก p)
Partition number (1-4): 1 (และ 1 )
First cylinder (1-1023, default 1): (Enter ได้เลย)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1023, default 1023):
Using default value 1023

Command (m for help): p (ดูอีกที)

Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 1023 4124704+ 83 Linux

Command (m for help): w (อย่าลืมตัวนี้ด้วยไม่งั้นที่ทำมาก็ไม่มีผล)
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@mail root]# fdisk -l (ออกมาแล้วก็ชอบดู อีกแร๊ะ ได้ยัง)

Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 242 1943833+ 83 Linux
/dev/sda2 243 275 265072+ 82 Linux swap

Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdc1 1 1023 4124704+ 83 Linux
[root@mail root]# (ก็ได้เป็น Linux แล้วสมใจ)
[root@mail root]# mkfs -t ext3 -c /dev/hdc1 (ต้อง format ด้วยคำสั่งนี้)
mke2fs 1.27 (8-Mar-2002)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
516096 inodes, 1031176 blocks
51558 blocks (5.00%) reserved for the super user
First data block=0
32 block groups
32768 blocks per group, 32768 fragments per group
16128 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Checking for bad blocks (read-only test): done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done (ช่วงนี้ตัวเลขวิ่งอยู่ ครู่ใหญ่ ตามขนาด HDD ล่ะ)

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@mail root]#
[root@mail root]#
[root@mail root]# mount (mount ดูยังไม่เห็น จะเอาไว้ไหนดีน้าาา)
/dev/sda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
[root@mail root]# mkdir /data2 (สร้าง Folder ไว้ที่นี่ ก็แล้วกัน /data2)
[root@mail root]#
[root@mail root]# mount -t ext3 /dev/hdc1 /data2 (แล้วก็ mount มันไว้ที่นี่ล่ะ /data2)
[root@mail root]#
[root@mail root]# mount (ดู อีกแร๊ะ ได้ยัง)
/dev/sda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
/dev/hdc1 on /data2 type ext3 (rw) <=== มาแย้ว นี่ไง
[root@mail root]#
[root@mail root]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1.8G 1.7G 42M 98% /
none 62M 0 61M 0% /dev/shm
/dev/hdc1 3.9G 33M 3.6G 1% /data2
[root@mail root]#

เหมือนว่าจะเรียบร้อยแต่ยังไม่เรียบร้อยดี

ถ้า Reboot ใหม่ มันจะไม่ยอม Mount ให้ สามารถทำได้ 2 วิธีเท่าที่ผมรู้
1. เพิ่มที่ /etc/fstab (ไม่แน่ใจว่า รูปแบบการเพิ่มจะใส่ยังไงไม่กล้า เคยทำ ครั้งนึ่ง แล้ว Boot ไม่ได้เลย ใครพอแนะนำได้ก็เรียนเชิญครับ)
2. ตามด้านล่าง คล้าย Autoexec.bat ของ windows คนรุ่นเก่า

[root@mail root]#
[root@mail root]# vi /root/auto-mount-new-hdd
ข้างในใส่แต่นี้
mount -t ext3 /dev/hdc1 /data2

จากนั้น ต้อง chmod เพื่อให้มัน run ได้ด้วยโดย
[root@mail root]# chmod 755 auto-mount-new-hdd

ต่อไปก็เอาไปใส่ใน /etc/rc.local หรือ จริงๆ ก็มาเขียนไว้ที่นีเลยก็ได้นะ แล้วแต่
[root@mail root]#vi /etc/rc.local
เพิ่ม
/root/auto-mount-new-hdd

ก็ลอง reboot แล้วใช้คำสั่ง mount ดูว่า มัน mount ให้เราหรืเปล่า
โชคดีครับผม

วันพุธที่ 15 ตุลาคม พ.ศ. 2551

เพิ่ม traffic ด้วย card lan 2 ใบ

http://spalinux.com/2008/09/configure_ethernet_bonding_on_fedora_linux

คอนฟิก Ethernet Bonding บน Fedora Linux
Filed under: Networking — editor @ 12:42 am
พอร์ตแลน (Ethernet) ของเครื่องเซิร์ฟเวอร์ถือว่าเป็นสิ่งสำคัญอย่างยิ่ง เพราะเป็นส่วนที่จะรับส่งข้อมูลกับเคื่องอื่นๆ ถ้าเซิร์ฟเวอร์มีแค่พอร์ตเดียวเชื่อมต่อเข้าเน็ตเวิร์ก แล้วสายที่เชื่อมต่อหลุดไป หรือไม่สามารถรองรับปริมาณการรับส่งข้อมูลได้เพียงพอ ก็อาจทำให้เกิดปัญหาการใช้งานได้

ในบทความนี้ขอแนะนำการคอนฟิก Ethernet Bonding (หรือ Teaming) เพื่อแก้ปัญหาที่อาจเกิดขึ้น โดยจะมีการจัดกลุ่มพอร์ตแลนเข้าด้วยกัน เพื่อช่วยในการรับส่งข้อมูล รูปแบบการส่งจะมีสองแบบใหญ่ๆ คือ


Active-backup พอร์ตหนึ่งจะทำหน้าพอร์ตหลักเพื่อใช้รับส่งข้อมูล (Active) แต่อีกพอร์ตหนึ่งจะสำรอง (Backup) ไว้เฉยๆ ไม่มีการรับส่งข้อมูลใดๆ ผ่านทางพอร์ตสำรอง แต่เมื่อไรที่พอร์ตหลักมีปัญหาพอร์ตนี้จะรับส่งข้อมูลแทน สำหรับ Ethernet Bonding จะเป็นคอนฟิกใน mode 1
Load Balance พอร์ตทั้งหมดในกลุ่มจะช่วยกันรับส่งข้อมูล ส่วนเทคนิคในการรับส่งจะมีหลายแบบด้วยกันแล้วแต่ mode ที่คอนฟิก
ในตัวอย่างจะเป็นการคอนฟิกบน Fedora 9 ซึ่งน่าจะประยุกต์ใช้กับ Fedora เวอร์ชั่นอื่นๆ, CentOS, RedHat หรือลีนุกซ์ตัวอื่นๆ ได้

เตรียมพอร์ตแลนที่จะคอนฟิกเป็น Ethernet Bonding
ในตัวอย่างจะใช้พอร์ตแลน eth2 และ eth3 เพื่อคอนฟิกรวมเป็น bond0

เริ่มต้นสร้างไฟล์ /etc/sysconfig/network-scripts/ifcfg-bond0 ซึ่งจะเป็นไฟล์คอนฟิกของ bond0 เป็นพอร์ต bonding (ในเครื่องหนึ่งสามารถจัดกลุ่มทำได้หลาย bonding พอร์ตที่คอนฟิกก็จะเป็น bond1, bond2 เป็นต้น) ในไฟล์จะมีคอนฟิก IP Address, Netmask เหมือนที่คอนฟิกพอร์ต ethernet ทั่วไป

ตัวอย่างคอนฟิก ifcfg-bond0

[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
IPADDR=10.1.0.1
NETMASK=255.255.255.0
BROADCAST=10.1.0.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=noคอนฟิกพอร์ต (Physical) ให้อยู่ในกลุ่ม bond0 ตามตัวอย่าง

[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USECTL=no[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USECTL=noแก้ไขไฟล์ /etc/modprobe.conf เพื่อให้โหลด kernel module สำหรับการทำ bonding ตอนที่มีการโหลดคอนฟิก bond0

[root@fc9-x1 ~]# cat /etc/modprobe.conf
alias bond0 bonding
options bonding miimon=100 mode=1สามารถระบุว่าจะทำ bonding เพื่อรับส่งข้อมูลแบบไหนได้จากคอนฟิก mode ดังนี้

mode=0 (balance-rr) เป็นการส่งข้อมูลแบบ round-robin (load balancing, fault tolerance)
mode=1 (active-backup) สถานการณ์ปกติจะมีพอร์ตเดียวเท่านั้นที่ใช้รับส่งข้อมูล (fault tolerance)
mode=2 (balance-xor) เป็นการส่งข้อมูลแบบใช้ XOR เพื่อหาพอร์ตที่จะส่ง เช่นคำนวณจาก MAC Address ต้นทางปลายทางเป็นต้น (load balancing, fault tolerance)
mode=3 (broadcast)
mode=4 (802.3ad) เป็นส่งข้อมูลแบบ Link Aggregation Control Protocol (LACP) / 802.3ad
mode=5 (balance-tlb) ส่งข้อมูลแบบ Adaptive transmit load balancing
mode=6 (balance-alb) ส่งข้อมูลแบบ Adaptive load balancing
หมายเหตุ รายละเอียดเพิ่มเติมดูได้จากไฟล์ /usr/share/doc/kernel-doc-2.6.25/Documentation/networking/bonding.txt จาก kernel-doc-2.6.25-14.fc9.noarch.rpm

ในเริ่มต้นแนะนำให้ทดสอบกับ mode=1 เพื่อทดลอง active-backup ก่อน

หลังจากสร้างไฟล์คอนฟิกทั้งหมดแล้ว รีบูตเครื่องหนึ่งครั้ง เผื่อให้ bond0 ถูกโหลดขึ้นมา

ตรวจสอบสถานะของ Ethernet Bonding
เมื่อเครื่องบูตเสร็จเรียบร้อย ถ้าถูกต้องเมื่อรันคำสั่ง ifconfig จะมีพอร์ต bond0 เพิ่มขึ้นมาตามตัวอย่าง

[root@server ~]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0C:22:FF:11:55
inet addr:10.1.0.1 Bcast:10.1.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1160 (1.1 KiB) TX bytes:1574 (1.5 KiB)...eth2 Link encap:Ethernet HWaddr 00:0C:22:FF:11:55
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:12 errors:0 dropped:0 overruns:0 frame:0
TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1100 (1.0 KiB) TX bytes:1574 (1.5 KiB)
Interrupt:16 Base address:0x1824eth3 Link encap:Ethernet HWaddr 00:0C:22:FF:11:55
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:60 (60.0 b) TX bytes:0 (0.0 b)
Interrupt:17 Base address:0x18a4ข้อสังเกตจากคำสั่ง ifconfig

HWaddr หรือ MAC Address ของแต่ละพอร์ตที่ทำ bonding ด้วยกันจะเป็นค่าเดียวกันหมด ทั้งนี้เพื่อประโยชน์ในการทำ fail over
ในโหมด active-backup ปกติจะมีพอร์ตเดียวทำหน้าที่เป็นหลักใช้ในการรับส่งข้อมูล ซึ่งดูได้จากค่า RX, TX packets
หากต้องการรู้ว่าพอร์ตไหนถูกใช้เป็นหลัก (active) ในการส่งข้อมูล สามารถดูได้จากไฟล์ /proc/net/bonding/bond0

ตัวอย่างไฟล์ /proc/net/bonding/bond0

[root@fc9-x1 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:22:ff:11:56จากตัวอย่างพอร์ตหลักที่ถูกใช้ในโหมด (active-backup) คือพอร์ต eth2 ดูได้จาก Currently Active Slave: eth2

ทดสอบการ fail over
แนะนำว่าก่อนที่จะดึงสายแลนให้รันคำสั่ง ping ทิ้งไว้ เพื่อดูว่าเวลาที่มีการ fail over จะยังส่งข้อมูลต่อไปได้เลยไหม

ทดลองดึงสายออกจากพอร์ต eth2 แล้วตรวจสอบไฟล์ /proc/net/bonding/bond0 อีกครั้ง จะเห็นว่าพอร์ต eth3 จะถูกนำมาใช้เป็นหลักในการรับส่งข้อมูลแทน แล้วคำสั่ง ping ก็ยังคงทำงานอยู่ อาจมีสะดุดไปบ้างเล็กน้อย

[root@fc9-x1 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth3
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0Slave Interface: eth2
MII Status: down
Link Failure Count: 1
Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0c:22:ff:11:56จากผลลัพธ์จะแสดงสถานะของ bonding ต่างๆ ดังนี้

Currently Active Slave: eth3 พอร์ตหลักที่ใช้รับส่งข้อมูลตอนนี้
Slave Interface: eth2, MII Status: down สถานะของพอร์ต eth2 down
Link Failur Count: 1 แสดงตัวเลขจำนวนครั้งที่พอร์ตมีปัญหา
สุดท้ายทดสอบด้วยการเสียบสายกลับเข้าไปที่พอร์ตที่ 2 จะเห็นว่าไม่มีการ fail over กลับมาที่พอร์ต eth2 พอร์ต eth3 จะยังคงเป็นหลักในการรับส่งข้อมูลอยู่

*******************************************************************
Debian
Ethernet bonding on Debian
โดย: โสทร รอดคงที่ srk@hospital-os.com
วันที่: วันที่เขียน 22 สิงหาคม 2548
ปรังปรุงจาก: -
ปรับปรุงล่าสุด: -
แหล่งข้อมูล:
http://glasnost.beeznest.org/articles/179
http://www.jebus.ca/Linux/ethernet_bonding.php
http://lists.debian.org/debian-user-spanish/2004/05/msg00220.html

เกริ่นนำ:

หลังจากที่ได้ทำลองทำ Ethernet Bonding บน Red Hat สำเร็จ ก็ได้ทดลองทำ บน Debian บ้าง
ปรากฏว่ามีอะไรหลายอย่างที่ไม่เหมือน Red Hat เอกสารบางอย่างที่ค้นมาทำไม่สำเร็จก็มี
ที่ทดลองทำสำเร็จ มี 2 วิธีซึ่งไม่ทราบเหมือนกันว่าอันไหนจะดีกว่ากัน ที่เขียนไม่ได้หวัง ว่าจะให้ทำ bonding ได้นะครับ
คิดว่ามาเริ่มต้นเรียนรู้ Debian กันดีกว่า

สิ่งจำเป็น:
คอมพิวเตอร์ ใส่ Lan Card 2 อัน ติดตั้ง linux Debian

ขั้นตอนการทำ

ทั้งสองวิธีมีวิธีการทำที่เหมือนกันคือ

ติดตั้ง package ifenslave-2.4 (kernel 2.4) ifenslave-2.6 (kernel 2.6)
ใครใช้ kernel ไหนอยู่ก็ติดตั้ง ตาม Kernel นั้นนะครับ
การติดตั้ง เครื่องที่จะติดตั้งต้องสามารถใช้ งาน Internet ได้

แก้ไฟล์ /etc/apt/sources.list เพื่อระบุที่ที่เราจะไปดาวน์โหลดโปรแกรม
vi /etc/apt/sources.list
เพิ่ม
deb http://ftp.au.debian.org/debian/ stable main
deb-src http://ftp.au.debian.org/debian/ stable main

deb http://security.debian.org/ stable/updates main

#ผมชอบดาวน์โหลดจากออสเตรเลีย รู้สึกว่าเร็วกว่า

apt-get update

apt-get install ifenslave-2.4
หรือ
apt-get install ifenslave-2.6

แค่นี้ก็ติดตั้งเสร็จแล้ว
การใช้งาน apt-get ดูรายละเอียดจากของพี่อุทัยนะครับ


แก้ไฟล์ /etc/modules.conf
เพิ่มบรรทัดนี้เข้าไป
alias bond0 bonding
options bonding maxbonds=4 mode=6 miimon=100 หรือ
/etc/modprobe.d/arch/i386
alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200

option ต่างๆ ดูได้จาก

http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt
ยังไม่ชำนาญ Debian นะครับ ไม่สามารถอะธิบายได้ว่า
/etc/modules.conf และ /etc/modprobe.d/arch/i386 มีหน้าที่ยังไง
ดูๆ แล้วก็เหมือน ๆ กัน ใครเซียน Debian ก็บอกมาหน่อยก็แล้วกันนะครับ


วิธีการทำ Bonding 2 วิธีนี้ อันนี้เป็นตัวอย่าง
ประยุกต์ใช้งานเอาเองนะครับ

วิธีที่ 1
สร้างไฟล์ rc.local ใน /etc/init.d
cd /etc/init.d
touch rc.local
แล้วก็ทำ link
ln -s /etc/init.d/rc.local /etc/rc2.d/S99rc.local
chmod 755 rc.local

แก้ไฟล์ /etc/init.d/rc.local
อาจจะใช้ VI หรือ Text Editor ที่ ท่านถนัด
vi rc.local

โดยเพิ่มข้อคความเหล่านี้

/etc/init.d/networking stop
modprobe bonding max_bonds=2
ifconfig bond0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth0 up
ifconfig eth1 up
ifenslave bond0 eth0 eth1
route add default gw 192.168.1.254

วิธีที่ 2

แก้ไฟล์ /etc/network/interface


auto bond0
iface bond0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
pre-up ifconfig eth0 up
pre-up ifconfig eth1 up
up ifenslave bond0 eth0 eth1
down ifenslave -d bond0 eth0 eth1
post-down ifconfig eth0 down
post-down ifconfig eth1 down

เสร็จแล้วครับทั้งสองวิธีนี้สามารถใช้งานได้
ตามที่ได้ทดลองมา วิธีไหนดีกว่า
หรือวิธีไหนถูกต้องที่สุดก็ไม่อาจทราบได้

วันศุกร์ที่ 5 กันยายน พ.ศ. 2551

ipset เบื้องต้น

ตามที่มีคนถามเข้ามา ด้วยส่วนตัวใช้ ipset มาบ้างพอสมควร จึงจะลองเล่าให้ฟังละกันครับ

ipset เป็นชุดโปรแกรมที่ทำงานทั้งในส่วน kernelspace และ userspace และจากที่มีการทำงานในส่วน kernelspace จึงต้องมี module สำหรับ kernel ที่เรากำลังใช้งานอยู่ด้วย ดังนั้น การใช้งาน ipset จะต้องเตรียม 2 ส่วน ดังนี้

1. เตรียม kernel

# aptitude install netfilter-extensions module-assistant

เริ่ม build module ด้วยการเตรียมความพร้อมก่อน

# m-a prepare

build จริง

# m-a a-i netfilter-extensions

หลังจากทำการ build สำเร็จ ระบบจะติดตั้ง module ให้โดยอัตโนมัติ
2. เตรียม userspace

ขั้นตอนนี้ไม่มีอะไรมาก เนื่องจากมีคนเตรียมไว้ให้แล้วใน Debian

# aptitude install ipset

ต่อไปลองทดสอบ

# iptables -m set
iptables v1.4.1.1: You must specify `--set' with proper arguments
Try `iptables -h' or 'iptables --help' for more information.

ขึ้นลักษณะนี้ น่าจะใช้ได้แล้วครับ

วิธีใช้งาน

1. สร้าง set ก่อน ในที่นี้จะแนะนำการใช้ macipmap

# ipset -N [setnam] [settype] --from [ip1] --to [ip2]
# ipset -N myset macipmap --from 192.168.0.10 --to 192.168.0.250

2. ดู set

# ipset -nL
Name: myset
Type: macipmap
References: 0
Default binding:
Header: from: 192.168.0.10 to: 192.168.0.250
Members:
Bindings:

3. เพิ่ม ip+mac เข้าไปใน set

# ipset -A myset 192.168.0.11:AA:BB:CC:DD:EE:FF
# ipset -nL
Name: myset
Type: macipmap
References: 0
Default binding:
Header: from: 192.168.0.10 to: 192.168.0.250
Members:
192.168.0.11:AA:BB:CC:DD:EE:FF
Bindings:

จะเห็นว่ามี IP และ MAC เพิ่มเข้ามาใน set แล้ว :P
4. ใช้งานร่วมกับ iptables

# iptables -A FORWARD -m set --set myset src -j ACCEPT

ผลที่ได้คือ ถ้า packet ไหนที่ผ่านเข้ามา แล้วพบใน set ก็จะยอมให้ผ่านไปได้ครับ
5. ถ้าจะลบ ip+mac ออกจาก set ก็ทำได้ง่าย คือ

# ipset -D myset 192.168.0.11:AA:BB:CC:DD:EE:FF

เท่านี้ ก็ถูกลบออกจาก set แล้วครับ

ข้อดี ของ ipset คือ "ความเร็ว" เพราะในการตรวจสอบ ทำผ่าน iptables rule แค่ที่เดียว และอีกอย่างคือ สามารถ ควบคุม rule ได้แบบ dynamic โดยที่ไม่ต้องโหลด iptables rule ใหม่ แก้ ip+mac ผ่านทาง ipset ได้โดยตรง

ipset เป็นอีกหนึ่งชุดโปรแกรม ที่ผมใช้แล้วชอบ โดยขณะนี้ได้นำมาดัดแปลงทำเป็น NAS (Network Access Service) คือทำลักษณะเดียวกับ CoovaChilli ถ้าผ่านช่วง alpha เมื่อไร จะเปิดโปรเจกต์ให้ผู้ที่สนใจ นำไปทดสอบครับ

เก็บ IP Traffic Log ด้วย ulogd (Debian Admin Style)

จริง ๆ ก็ครบกำหนดการเก็บข้อมูลการจราจร (IP Traffic) ตั้งแต่วันที่ 23 สิงหาคม 2551 (1 ปี ให้หลัง จากประกาศ) แต่ด้วยวุ่น ๆ กับหลายเรื่อง (ลูกสาวก็อายุ 3 เดือนแล้วครับ :P) ก็ลองหาการเก็บ log ในแบบที่เราคุ้นเคย และพยายามไม่ให้กระทบกับ performance ของระบบ ก็เลยได้ลงเอยกับ ulogd กับ ulogd-pcap (ตอนนี้ เป็น version 1.24 ส่วน version 2 ยังเป็นรุ่นทดสอบ ที่พยายาม build แล้ว ยังไม่สำเร็จ :P)

เริ่มเลยละกันครับ

1. ติดตั้ง packages ที่จำเป็น

# aptitude install ulogd ulogd-pcap tshark

2. เขียน script มาจัดการเกี่ยวกับ log

# vi /usr/local/bin/traffic-ulogd.sh

#!/bin/sh

ULOGD_CONF_TPL=/etc/ulogd.conf.tpl
ULOGD_CONF=/etc/ulogd.conf
LOG_DIR=/home/log/ip-traffic

PARENT_DIR=`date +%Y-%m`
PARENT_DIR="$LOG_DIR/$PARENT_DIR"

DAILY_LOG=`date +%Y-%m-%d`
DAILY_LOG="$PARENT_DIR/$DAILY_LOG.pcap"


# Copy original debian ulogd.conf file to be
# the future config template.
if [ ! -f $ULOGD_CONF_TPL ]; then
echo "Copying default $ULOGD_CONF to $ULOGD_CONF_TPL"
cp $ULOGD_CONF $ULOGD_CONF_TPL
fi

# Create the directory structure for logging
if [ ! -d $PARENT_DIR ]; then
echo "Make directory $PARENT_DIR"
mkdir -p $PARENT_DIR
fi

# Edit template config file
cat $ULOGD_CONF_TPL | \
sed -e 's:^#\(plugin="/usr/lib/ulogd/ulogd_PCAP.so"\):\1:g' | \
sed -e "s:/var/log/ulog/pcap.log:$DAILY_LOG:g" > /tmp/ulogd.conf

mv /tmp/ulogd.conf $ULOGD_CONF

# Restarting to reload config file
/etc/init.d/ulogd restart

เป็น script ที่จะคอยจัดการเกี่ยวกับ directory สำหรับจัดเก็บ ในรูปแบบ 2008-08, 2008-09 และจัดเก็บ log file ในรูปแบบ 2008-08-26.pcap,...

# chmod u+x /usr/local/bin/traffic-ulogd.sh
# /usr/local/bin/traffic-ulogd.sh

สั่งให้ script จัด config ให้ และเริ่มรอการ log
3. กำหนด iptables rule ให้ทำการ log

# iptables -I FORWARD -j ULOG --ulog-cprange 100 --ulog-qthreshold 50

4. ลองดูคร่าว ๆ ว่ามี packet ผ่านเข้า log ไหม

# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 211M packets, 106G bytes)
pkts bytes target prot opt in out source destination
14M 7502M ULOG all -- * * 0.0.0.0/0 0.0.0.0/0 ULOG copy_range 100 nlgroup 1 queue_threshold 50

จะเห็นว่ามี Packet วิ่งเข้า rule นี้ด้วย :P
5. ดูแฟ้มที่จัดเก็บ log (ผมเก็บไว้ที่ /home เพราะแบ่งพื้นที่ไว้เยอะที่นี่)

# cd /home/log/ip-traffic/2008-08
# ls
2008-08-26.pcap
# file 2008-08-26.pcap
2008-08-26.pcap: tcpdump capture file (little-endian) - version 2.4 (raw IP, capture length 65535)

อ้า... ใช่แล้วครับ เป็น ลักษณะ tcpdump capture file :P (binary ด้วย ... เห็นเขาบอกให้เก็บในรูปแบบที่น่าเชื่อถือได้ ไม่รู้ตัวนี้น่าเชื่อถือพอหรือเปล่า :P)
6. ลองดู log ข้างในแฟ้มนี้ดู

# tshark -r 2008-08-26.pcap -tad -c 5
Running as user "root" and group "root". This could be dangerous.
1 2008-08-26 03:31:34.464265 172.30.10.18 -> 80.252.110.146 TCP acter > kar2ouche [SYN] Seq=0 Win=16384 Len=0 MSS=1452
2 2008-08-26 03:31:34.537428 172.30.10.102 -> 64.71.134.246 TCP ft-role > https [SYN] Seq=0 Win=16384 Len=0 MSS=1452
3 2008-08-26 03:31:34.565095 172.30.10.18 -> 66.199.250.170 TCP appiq-mgmt > manyone-xml [SYN] Seq=0 Win=16384 Len=0 MSS=1452
4 2008-08-26 03:31:34.568396 172.30.10.18 -> 219.239.90.172 TCP rfa > 28221 [SYN] Seq=0 Win=16384 Len=0 MSS=1452
5 2008-08-26 03:31:34.571477 172.30.10.18 -> 72.51.37.237 TCP cxws > ospf-lite [SYN] Seq=0 Win=16384 Len=0 MSS=145

ขอดูแค่ 5 packets ก่อนละกัน

-r 2008-08-26.pcap (read from file)
-tad (Absolute date)
-c 5 (5 packets count and exit)

7. เป็นอันว่า เก็บได้ ก็น่าจะเรียบร้อย ตอนนี้ก็เหลือให้ script เราทำงานเป็นช่วง ๆ เพื่อจัดการเรื่องชื่อไฟล์ให้ถูกต้อง

# vi /etc/cron.d/traffic-log

0 */1 * * * root /usr/local/bin/traffic-ulogd.sh >/dev/null 2>&1

# /etc/init.d/cron restart

เป็นการกำหนดให้ระบบ run script นี้ ทุก ๆ ชั่วโมง (กันพลาด เดี๋ยว log ในแฟ้ม จะไม่ตรงกับวันเวลาจริง แต่ถ้าเครื่องเปิดตลอดเวลาไม่น่ามีปัญหา) เท่านี้ก็น่าจะเรียบร้อยแล้วครับผม ตอนนี้ก็เหลือดูผลว่าไฟล์ใหญ่แค่ไหน อาจจะต้องมีการมาทำ archive อีกที เดี๋ยวค่อยมาว่ากันต่อคราวหน้าละกันครับ

How to install Cacti in Debian Etch

http://www.cahilig.org/how-install-cacti-debian-etch

Cacti has a nice user interface. It is easy to install and easy to setup, don't need too much customization.
Downloading Cacti

You can download the newest version of Cacti from its website http://cacti.net/.
wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz
Installing Cacti

Install apache webserver with php support, mysql database server, snmp, some php modules and rrdtool.
apt-get install apache2 libapache2-mod-php5 php5 php5-cli php5-mysql php5-gd php5-snmp mysql-client mysql-server libmysqlclient15-dev snmp snmpd rrdtool

Add a user account for cacti.
groupadd cacti
useradd -g cacti cacti

Untar the cacti source file and move to /var/www.
tar -zxvf cacti-0.8.7b.tar.gz
mv cacti-0.8.7b /var/www

Login to your mysql database
mysql -u root

Create a password for your mysql root account and create cacti database and user.
SET PASSWORD FOR root@localhost = PASSWORD ('your_password_here');
CREATE DATABASE cacti;
GRANT ALL ON cacti.* TO cacti_user@localhost IDENTIFIED BY 'your_password';
quit

and import the database tables
cd /var/www/cacti-0.8.7b/
mysql -u root -p cacti < cacti.sql

Change the owner of rra and log directory to your cacti account.
chown -R cacti rra/ log/

Edit the config.php file located in include directory.
vi include/config.php

Enter your mysql host, user, password and database name.

/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "your_password";
$database_port = "3306";

As a cacti user
su - cacti
crontab -e

add this line to your crontab

*/5 * * * * /usr/bin/php /var/www/cacti-0.8.7b/poller.php > /dev/null 2>&1

Open up your web browser and point to http://localhost/cacti-0.8.7b/, this will start cacti installation. Click Next then select NEW INSTALL and accept the default installation value. If you don't see any errors, click Finish to install.

Login to cacti, the default username and password is admin. After login, it will prompt you change your password for security reasons.
Checking

Check your syslog if the cacti's poller is running every 5 minutes.
If you will see something like this in your syslog, your cacti should work perfectly.

Jul 5 06:50:01 server1 /USR/SBIN/CRON[6543]: (cacti) CMD (/usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1)

You can start monitoring your servers, routers and other networking devices with cacti

วันอังคารที่ 2 กันยายน พ.ศ. 2551

How to install PHP5,Apach2.2,MySQL5 by manual compile.

How to install PHP5,Apach2.2,MySQL5 by manual compile.
ได้รับมอบหมายให้ Install OS พร้อม Software จำพวก Apache, PHP5 แล้วก็ MySQL5 เริ่มแรกเราก็ไปหา source file มาก่อน เตรียมๆ เอาไว้ ดังนี้
Apache 2.2
MySQL 5.0.37
PHP 5.2.1
ลำดับการติดตั้ง ก็ตามนี้ครับ
การติดตั้ง Apache 2.2
การติดตั้ง MySQL 5.0.37 : http://laffers.net/howtos/howto-install-mysql
การติดตั้ง PHP 5.2.1
*** ไอ้ Apache กะ MySQL เนี้ยจะอันไหนก่อนก็ได้นะครับ แต่ PHP ขอเป็นอันท้ายสุดละกัน..เวลา Compile มันต้องทำให้ PHP รู้จักกับ Apache&MySQL ด้วยอ่ะครับ (การ set prefix) มาเริ่มกันเลยดีกว่าครับ…
1. การติดตั้ง Apache 2.2# tar xvfj httpd-2.2.4.tar.bz2 -> อันนี้ถ้าเรา Download มาเป็น .tar.gz ก็ใช้ tar xvfz httpd-2.2.4.tar.gz ครับ# cd httpd-2.2.4# ./configure –prefix=/usr/local/apache2 -> prefix ตรงนี้เป็น option ที่ให้เรากำหนดว่าเราจะเอา ไฟล์ที่ จะ install ไปไว้ที่ path ไหน# make -> เริ่มทำการ Compile# make install -> install ครับ
เป็นอันเสร็จสิ้นในส่วนของ Apache
2. การติดตั้ง MySQL 5.0.37
อันนี้ก็คล้ายๆ กับ apache ครับ
# tar xvfz mysql-5.0.37.tar.gz# cd mysql-5.0.37# ./configure –prefix=/usr/local/mysql5 -> ถ้าอยากรู้ว่า default เป็นอะไร ก็ให้ลองพิมพ์ ./configure –help# make -> เริ่มทำการ Compile# make install -> install ครับ# cp support-files/my-medium.cnf /etc/my.cnfเมื่อถึงขั้นตอนนี้ให้คุณเข้าไปแก้ไขไฟล์ /etc/my.cnf โดยให้เพิ่ม user = mysql ไปที่บรรทัดใต้คำว่า [mysqld] อ่ะแล้วก็ Save# cd /usr/local/mysql5# bin/mysql_install_db –user=mysql# chown -R root .# chown -R mysql var# chgrp -R mysql .# bin/mysqld_safe –user=mysql & -> Start ครับผมทำการทดสอบว่า mysql ทำงานได้เปล่า ก็ ใช้คำสั่งนี้ดู# /usr/local/mysql5/bin/mysqladmin versionถ้าออกมาเป็น version ต่างๆของ mysql ก็ถือว่า ผ่าน ต่อไปก็เป็นการ set password ให้กับ user root โดยต้อง Login เข้าไปเป็น root ก่อนดังนี้# /usr/local/mysql5/bin/mysql -u rootเมื่อเข้าไปแล้วก็ใช้คำสั่งตามนี้DELETE FROM mysql.user WHERE User = ”;FLUSH PRIVILEGES;SELECT Host, User FROM mysql.user;SET PASSWORD FOR ‘root’@'localhost’ = PASSWORD(’new_password’);SET PASSWORD FOR ‘root’@'host_name’ = PASSWORD(’new_password’);quitหลังจากนั้นก็ ทำการ Restart Mysql อีกซักรอบ โดย# /usr/local/mysql5/bin/mysqladmin -u root -p shutdown# /usr/local/mysql5/bin/mysqld_safe –user=mysql &เป็นอันเสร็จสิ้น ในส่วนของ mysql
3. การติดตั้ง PHP 5.2.1
สำหรับ PHP เวลาติดตั้งคุณจำเป็นต้อง บอก path ของ apache กับ mysql ด้วยครับ โดยตอนที่คุณบอก ก็คือตอนใช้ คำสั่ง configure นั่นเอง ตามนี้ครับ# tar xvfz php-5.2.1.tar.gz# cd php-5.2.1# ./configure –prefix=/usr/local/php5 —-with-apxs2=/usr/local/apache2/bin/apxs –with-mysql=/usr/local/mysql5# make# make installเป็นอันเสร็จพิธีทั้งหมด..
หลังจากนี้เราก็มาดูวิธีการ Start Service แต่ละตัวกันครับมาเริ่มที่
apache : /usr/local/apache2/bin/apachectl start ** อันนีเราสามารถเปลี่ยนได้เป็น start/stop/restart ครับ
mysql : /usr/local/mysql5/bin/mysqld_safe –user=mysql &
php : อันนี้ไม่ต้อง start ครับมันจะถูกผูกให้โดยอัตโมมัติ ตอนที่เรา compile นั่นเอง
คราวนี้เราก็มาดูกันครับว่า..ไอ้ที่เรา ติดตั้งไป มันใช้ได้เปล่า…ก็ให้ลอง เขียน script php ขึ้นมาซักอันครับเช่นphpinfo();?>save เป็นชื่อไฟล์ว่า noi.php (noi เป็นชื่อสาวครับ..ผมจีบอยู่ อิๆ) แล้วก็เอาไปวางไว้ที่ path /usr/local/apache2/htdocs/ หลังจากนั้นก็ไปเครื่องอื่น..แล้วลองใช้โปรแกรม Web Browser เรียกหน้าดังกล่าวดู เช่น http://192.168.168.12/noi.php
ถ้าได้หน้าตาเว็บเป็นแบบนี้ก็แสดงว่า..โอเคครับ
จบ..ครับ เดี๋ยวคราวหน้าจะมาพูดถึงการติดตั้ง ProFTFD กันพร้อมกับ ตัวอย่างการ Config สำหรับคราวนี้เอาไว้แค่นี้ก่อนละกันครับพี่น้องงงงงงงง สวัสดี

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

การ mount Handy drive

http://bluestulip.blogspot.com/2006/02/how-to-mount-usb-handy-drive-in-nix.html

mkdir /mnt/sdb1/
mount -t vfat /dev/sdb1/ /mnt/sdb/

การ mount Handy drive บน FreeBSD

บน FreeBSD 5.3 หรือสูงกว่านะครับ แต่คาดว่า 5.0 ก็น่าจะได้นะ

1. เสียบ handy drive ที่ server
2. ที่ command line พิมพ์ mount -t msdos /dev/da0s1 /mnt
2. cd /mnt เราก็จะเจอข้อมูลครับ

หมายเหตุ เมื่อ da0s1 คือ ชื่ออุปกรณ์ที่ freebsd รายงานออกมาให้เราทราบตอนทำขั้นตอนที่ 1
ส่วน /mnt คือไดเรกทรอรีที่เราต้องการชี้ไปยังข้อมูลที่ต้องการ

ผมคิดว่าก่อนดึง handy drive ออก สามารถใช้คำสั่ง

umount /dev/da0s1

หรือ

umount /mnt

ได้ครับ (ถ้าใช้คำสั่งเดียวกันกับ Linux นะครับ)

RH9 ก็ไม่ต่างกันนักครับ

mkdir /mnt/usbdisk
mount -t vfat /dev/sda1 /mnt/usbdisk

หรือจะเพิ่มออพชันด้วย เพื่อให้สามารถอ่านภาษาไทย และให้ผู้ใช้งานที่ไม่ใช่ root เขียนข้อมุลได้ด้วย

mount -t vfat /dev/sda1 /mnt/usbdisk -o iocharset=utf8,umask=000

mount /dev/da1st1 /mnt/hdd1 <<< hdd ตัวที่ ลง window 2k3 ไว้แล้วก็ แบ่ง เป็น c กะ d da1st1 = drive c da1st2 = drive d
แล้วก็ สร้าง /mnt/hdd1 ซะ
เสร็จแล้ว /chmod -R 777 /mnt/
หง่ะ แค่นั้น

Ref :: http://www.thaibsd.com/webboard/show.php?Category=thaibsd&No=1451&page=1

วันศุกร์ที่ 22 สิงหาคม พ.ศ. 2551

โปรแกรม portsentry

พอดีมีประสบการณ์ในด้านนี้มาบ้างเลยอยากจะแนะนำให้เพื่อนๆพี่ๆน้องได้ลองทำ ดูกัน ก็เลยนำเอาการ config โปรแกรม Portsentry มาให้ดูกัน หวังว่าคงจะเป็นประโยชน์กันบ้างไม่มากไม่น้อย ซึ่งขึ้นอยู่กับการนำไปประยุกต์กับระบบของคุณเอง

โปรแกรม portsentry เป็นโปรแกรมที่สร้างขึ้นเพื่อตรวจสอบการ scan port แบบ real time สามารถตรวจจับการบุกรุกมายัง port ต่างๆที่ server เปิดให้บริการอยู่ บางคนตั้ง server แบบไม่ระมัดระวังพอติดตั้ง NOS เสร็จก็สนใจแต่เรื่องการ config ในส่วนที่จะให้บริการกับลูกข่ายเท่านั้น สามารถหา download โปรแกรมนี้ได้จาก www.psionic.com ปัจจุบันได้เปลี่ยนแปลงชื่อโปรแกรมไปเป็นชื่ออื่นแล้ว ลองศึกษาจากเวปไซต์ดังกล่าวดูนะคับ

สมมุตว่าผมไป download เจ้าโปรแกรมนี้มาแล้วที่มีชื่อว่า portsentry-1.1.tar.gz

# cd /tmp
# gzip -cd portsentry-1.1.tar.gz | tar xvf -
# cd portsentry-1.1
# pico Makefile (เข้าไปแก้ไขไฟล์ compile โดยแก้ไขตามนี้นะครับ)

CC = cc แก้ไขเป็น
CC = egcs
(ใน server ต้องติดตั้งโปรแกรม egcs ไว้ก่อน) หรือสามารถหาติดตั้งได้ใน /usr/ports

CFLAGS = -O -Wall แก้เป็น
CFLAGS = -O3 -march=i386 -mcpu=i386 -funroll-loops -fomit-frame-pointer -Wall

INSTALLDIR=/usr/local/psionic แก้ไขเป็น
INSTALLDIR=/etc

เสร็จแล้วทำการ save ไฟล์โดยการ Ctrl+X แล้วกด Y
หลังจากนั้นแก้ไขไฟล์ portserntry_config.h

#pico portsentry.h แล้วแก้ไขตามนี้นะครับ

define CONFIG_FILE "/usr/local/psionic/portsentry/portsentry.conf" แก้ไขเป็น
define CONFIG_FILE "/etc/portsentry/portserntry.conf"
เสร็จแล้วทำการ save ไฟล์โดยการ Ctrl+X แล้วกด Y

แล้วเริ่มต้นการ compile โดยใช้คำสั่งดังนี้
# make linux
# make install

ทำการลบไฟล์ต้นฉบับทิ้ง
# cd /tmp
# rm -rf portsentry*

หลังจากนั้นเข้าไปแก้ไขไฟล์ config ของ portsentry ใน path /etc/portsentry/

# pico portsentry.conf
เพิ่มคำสั่งพวกนี้เข้าไปในไฟล์ สามารถใส่ตรงบรรทัดไหนในไฟล์ก็ได้

# กำหนดหมายเลข port ที่ป้องกันการถูก scan
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,31337,32771,32772,32774,40421,49724,54320"

#กำหนดหมายเลข Ports ว่างที่มักถูกผู้บุกรุก scan และใช้โจมตี
ADVANCED_PORTS_TCP="1023"
ADVANCED_PORTS_UDP="1023"

#กำหนด ports ต้องห้ามไม่ให้เข้าในระบบเพราะว่าเป็น port ที่ทำงานขณะที่เครื่อง boot คือบริการ ident(113) , NetBios(137-138) , RIP(520) , bootp broadcast(67)
ADVANCED_PORTS_TCP=”113,139”
ADVANCED_PORTS_UDP=”520,138,137,67”

#กำหนดตำแหน่งที่อยู่ของไฟล์ต่างๆ
IGNORE_FILE=”/etc/portsentry/portsentry.ignore”
HISTORY_FILE=”/var/log/portsentry/portsentry.history”
BLOCK_FILE=”/var/log/portsentry/portsentry.blocked”

#กำหนดค่าที่จะป้องกัน
#0=ไม่ block การ scan TCP/UDP
#1=block ทั้ง TCP_UDP
#2=block external command เท่านั้น
BLOCK_UDP=”1”
BLOCK_TCP=”1”

#คำสั่งนี้ไม่ให้ผู้อื่นส่งคำสั่งมาเพิ่ม route ใหม่ในระบบ
KILL_ROUTE=”/sbin/route add –host $TARGET$ reject”
KILL_HOSTS_DENY=”ALL: $TARGET$”

กำหนดจำนวน ports ที่ยอมให้ connect เข้ามาในระบบได้มีค่าตั้งแต่ 1-2 ถ้ากำหนดเป็น 0 จะเป็นการสั่งให้บันทึกค่าใน log file ทันทีเมื่อพบว่ามีการถูก scan port เพื่อให้ผู้ดูแลระบบทราบ
SCAN_TRIGGER=0

#กำหนดข้อความแจ้งเตือนว่ามีการบุกรุก อันนี้แล้วแต่นะครับตามความต้องการของผู้ดูแลระบบ
PORT_BANNER=”** UNAUTHORIZED ACCESS PROHIBITED ** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY”

หลังจากแก้ไขและทำการตรวจสอบความถูกต้องแล้ว ให้ทำการ save ไฟล์ แล้วทำการกำหนด Permission ให้ไฟล์ด้วย
#chmod 600 /etc/portsentry/portsentry.conf

ตรวจสอบไฟล์ portsentry.ignore ดูว่ามีค่า IP Address ตามตัวอย่างหรือไม่ ถ้าเป็น Version ใหม่โปรแกรมจะเพิ่มค่า IP Address ให้เองไม่ต้องเข้าไปแก้ไขอะไร
#pico /etc/portsentry/portsentry.ignore
127.0.0.1
0.0.0.0

จากนั้นกำหนด Permission เป็น 600
#chmod 600 /etc/portsentry/portsentry.ignore

สร้าง Scripts ไปไว้ใน /etc/rc.d/init.d ชื่อ portsentry
#pico /etc/rc.d/init.d/portsentry (path ตามที่คุณได้ติดตั้ง init เอาไว้นะครับ ลองหาดูอาจจะไม่เหมือนของผมก็ได้)

แก้ไขในไฟล์ portsentry ตามนี้นะครับ

#/bin/sh
#
#portsentry start the portsentry port scan detector
#
#source function library
./etc/rc.d/init.d/functions
#get config
./etc/sysconfig/network
#check that networking is up
if [${NETWORKING}=”no”]
then
exit 0
fi
[ -f /usr/sbin/portsentry] || exit 0

#see how we were called
case “$1” in
start)
echo –n “Starting Port Scan Detector: ”
if [ -s /etc/portsentry/portsentry.modes] ; then
modes=’cut –d “#” –f (ต่อบรรทัดล่างด้วย)1 /etc/portsentry/portsentry.modes’
else
modes=”tcp udp”
fi
for i in $modes ; do
portsentry -$i
echo –n “$i”
done
echo
touch /var/lock/subsys/portsentry
;;
stop)
echo –n “Stopping Port Scan Detector: ”
killproc portsentry
echo
rm –f /var/lock/subsys/portsentry
;;
status)
status portsentry
esac
exit 0

จากนั้นกำหนด permission ให้ไฟล์ scrips นี้
#chmod 700 /etc/rc.d/init.d/portsentry

ทำการเพิ่ม script ให้ระบบเพื่อสั่งให้ทำงานขณะที่เครื่อง reboot
#chkconfig --portsentry
#chkconfig --level 345 portsentry on

สั่งให้โปรแกรมทำงาน
#/etc/rc.d/init.d/portsentry restart

วันพฤหัสบดีที่ 21 สิงหาคม พ.ศ. 2551

all-in-one 2 (portsentry+iptables+apt-proxy+squid3)

http://www.thaitux.info/book/export/html/479

ปรับตั้ง interfaces
# vi /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

auto eth1
iface eth1 inet static
address 192.168.5.3
netmask 255.255.255.0
network 192.168.5.0
broadcast 192.168.5.255
gateway 192.168.5.1

เพื่อให้เครือข่ายภายในสามารถออกสู่ภายนอกได้ โดยใช้เซิร์ฟเวอร์ตัวนี้เป็นเกตเวย์ จะตั้งให้ฟอร์เวิร์ดไอพีได้
# vi /etc/sysctl.conf

...
net.ipv4.ip_forward=1

ทำให้มีผลทันที
# echo 1 > /proc/sys/net/ipv4/ip_forward

portsentry + iptables พื้นฐาน

ติดตั้ง
# aptitude install portsentry iptables

สำหรับ portsentry ใช้ค่าปริยายทั้งหมด

สำหรับ iptables จะทำเป็นแบบสคริปต์ ไว้รันเวลาเปิดเครื่อง (จริง ๆ คือ รันตอนอินเทอร์เฟส eth1 เปิดขึ้นมาใช้งาน)
มีการเพิ่มกฎในการบล๊อกไอพีนิดหน่อย ทำให้ลดภาระ web server ในการกรองไอพี

เตรียมไฟล์ข้อมูล
# mkdir -p /sys1/sysb/etc/iptables
# ln -sf /sys1/sysb/etc/iptables /etc
# echo "#BLOCKED IP LIST" >> /etc/iptables/block_ip

สร้างสคริปต์ไว้เรียกตอนเปิด eth1 คือ /usr/local/sbin/d.eth1-iptables
# vi /usr/local/sbin/d.eth1-iptables

#!/bin/bash
# SIMPLE IPTABLES
INTERFACE=eth1
INT_NET=192.168.0.0/16
BLOCK_FILE=/etc/iptables/block_ip

#DELETE OLD RULES
iptables -F > /dev/null
iptables -F -t nat > /dev/null

#NAT
iptables -t nat -A POSTROUTING -o $INTERFACE -j MASQUERADE

#BLOCK SPECIFIC IP
#SORT IP LIST IF DATA CHANGED
touch $BLOCK_FILE "$BLOCK_FILE.bak"
cmp -s "$BLOCK_FILE" "$BLOCK_FILE.bak"
if [ $? -ne 0 ]; then
TEMP_FILE=/tmp/block_ip
touch $TEMP_FILE
mv $BLOCK_FILE "$BLOCK_FILE.bak"
cat "$BLOCK_FILE.bak" | while read LINE; do
if [ ${LINE:0:1} == "#" ]; then
echo $LINE >> $BLOCK_FILE
else
echo $LINE >> $TEMP_FILE
fi
done
cat $TEMP_FILE | sort >> $BLOCK_FILE
rm $TEMP_FILE
fi
#DO BLOCK
cat $BLOCK_FILE | grep -v "#" | cut -d \ -f 1 | while read IP; do
iptables -A INPUT -s $IP -j DROP
done

#BLOCK ssh INTRUDER BY RATE-LIMIT 4 FOR 600 SECONDS
#FROM http://www.debian-administration.org/articles/187
iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --update --seconds 600 --hitcount 4 -j DROP

#FORWARD INTERNAL
iptables -A FORWARD -s $INT_NET -j ACCEPT
iptables -A FORWARD -d $INT_NET -j ACCEPT

#DROP REST
iptables -A FORWARD -s ! $INT_NET -j DROP

# chmod 755 /usr/local/sbin/d.eth1-iptables

สร้างไพล์ข้อมูลไอพีที่ต้องการบล๊อก ชื่อ block_ip เอาไว้ที่ /etc/iptables
# vi /etc/iptables/block_ip

#BLOCKED IP LIST
WWW.XXX.YYY.ZZZ #COMMENT
...

เปลี่ยนตัวเลขเอาตามจริงนะครับ
เวลาเราจะเพิ่มไอพี ก็มาแก้ไขที่ไฟล์นี้

นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces
# vi /etc/network/interfaces

...
auto eth1
iface eth1 inet static
address 192.168.5.3
netmask 255.255.255.0
network 192.168.5.0
broadcast 192.168.5.255
gateway 192.168.5.1
post-up /usr/local/sbin/d.eth1-iptables
pre-down /sbin/iptables-save > /etc/iptables/rules-backup

(เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules-backup มาใช้อ้างอิงดูในการปรับปรุงได้)

สำหรับครั้งแรก ต้องรัน 1 ครั้ง ครั้งต่อไปไม่ต้องแล้ว จะรันผ่านอินเทอร์เฟส eth1 เอง
# /usr/local/sbin/d.eth1-iptables

ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

http://www.tpit.co.th/index.php?view=article&catid=7%3Ahowto&id=9%3A-centralized-log-php-syslogviewer&tmpl=component&print=1&page=&option=com_content&Itemid=10

ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer Print
Written by Administrator
Thursday, 10 July 2008 02:35

ภาคแรก ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่

นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “php syslogviewer” แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก

ซอฟต์แวร์ที่ใช้งาน

syslog-ng-2.0.0

phpsyslogviewer-7.2.1

speedupd-7.3.2

ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ xen opensource ใช้เคอร์เนลเวอร์ชั่น 2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ

ขั้นตอนที่ 1 เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้

# apt-get install syslog-ng

ขั้นตอนที่ 2 ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้

# wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2

# wget http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2


ขั้นตอนที่ 3 แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการณ์คงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่หงุดหงิดบ้าง ดังนี้

# apt-get install bzip2

# tar xjvf phpsyslogviewer-7.2.1.tar.bz2

# cd phpsyslogviewer-7.2.1

# apt-get install mysql-client mysql-server apache2 php5

# apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5

# apt-get install phpmyadmin

ขั้นตอนที่ 4 ในโฟลเดอร์ install จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้

# mysql -u root -p

mysql > create database syslogng;

mysql > exit;

# mysql -u root -p syslogng <>

ขั้นตอนที่ 5 ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้

# vi install/newuser.sql.php

# php install/newuser.sql.php

# php install/newuser.sql.php | mysql -u root -p syslogng

ขั้นตอนที่ 6 จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย

# cp -R htdocs /var/www/phpsyslogviewer

# vi /var/www/phpsyslogviewer/config.php

# chown root:www-data /var/www/phpsyslogviewer/config.php

# chmod 440 /var/www/phpsyslogviewer/config.php

ขั้นตอนที่ 7 ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ http://xxx.xxx.xxx.xxx/phpsyslogviewer

php syslogviewer

จะเห็นว่าหน้าตาดูดีทีเดียว

ขั้นตอนที่ 8 ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร

# tar xjvf speedupd-7.3.2.tar.bz2

# cd speedup-7.3.2

# apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot

# apt-get install build-essential libmysqlclient15-dev

# dpkg-buildpackage -rfakeroot

ขั้นตอนที่ 9 หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้

# cd ..

# dpkg -i speedupd_7.3.0_i386.deb

# vi /etc/speedupd.conf

# /etc/init.d/speedupd start

ขั้นตอนที่ 10 สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมูลได้เลยครับ

# cd /etc/syslog-ng

# cp syslog-ng.conf syslog-ng.conf.org

# vi syslog-ng.conf

options {

recv_time_zone (+07:00);

send_time_zone (+07:00);

sync (0);

time_reopen (100);

log_fifo_size (1000);

long_hostnames (off);

use_dns (no);

use_fqdn (no);

create_dirs (yes);

chain_hostnames(yes);

keep_hostname (yes);

};

source s_sys {

file ("/proc/kmsg" log_prefix("kernel: "));

unix-stream ("/dev/log");

internal();

udp(ip(0.0.0.0) port(514));

tcp(ip(0.0.0.0) port(514) keep-alive(yes));

};

destination d_mysql { \

pipe("/var/log/mysql.pipe" \

template("INSERT INTO logs \

(host, facility, priority, level, tag, datetime, program, msg) \

VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \

'$PROGRAM', '$MSG' );\n") template-escape(yes));

};

filter f_kernel { facility (kern); };

filter f_messages { level(info..emerg) and not (facility(mail) or \

facility(authpriv) or facility(cron)); };

log {source(s_sys); filter(f_messages); destination(d_mysql); };

log {source(s_sys); filter(f_kernel); destination(d_mysql); };

ขั้นตอนที่ 11 สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ

#vi syslog2mysql.sh

#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]

then

mkfifo /var/log/mysql.pipe

fi

while [ -e /var/log/mysql.pipe ]

do

mysql -u root --password=radius syslogng < /var/log/mysql.pipe >/dev/null

done

# chmod +x syslog2mysql.sh

# ./syslog2mysql.sh &

# /etc/init.d/syslog-ng start

ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ

php syslogviewer

จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ 5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ

php syslogviewer

ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ

php syslogviewer

ลองค้นหาดูสิ

ได้คำตอบตามนี้ครับ

php syslogviewer

ดูดีทีเดียวครับ เป็นไงครับ php syslogviewerสู้ซอฟต์แวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้เชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ แค่นี้ก็รอดตัวจากมาตรา 26 ตามพรบ.คอมพิวเตอร์ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินภาษี ให้คนรัฐบาลซื้อ centralized log จากต่างประเทศสักตัว

ภาคสอง ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER

หมายเหตุ เฉพาะเครื่องแม่ข่าย centralized log ตัวเดียวยังไม่เพียงพอต่อการคอมไพล์พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับ คอมพิวเตอร์ พ.ศ. ๒๕๕๐ หน่วยงานต้องทำอินเทอร์เน็ตเกตเวย์เพื่อทำการตรวจสอบสิทธิการเข้าใช้ งานระบบ (authentication gateway) และต้องตั้งฐานเวลาเทียบกับเวลามาตรฐานของประเทศไทย (stratum 0)ผิดพลาดไม่เกิน 10 ms ด้วย และหากหน่วยงานใดให้บริการเวป หรือ เมลล์เซิร์ฟเวอร์ต้องจัดเก็บข้อมูลการให้บริการดังกล่าวด้วย แต่ยังไงก็ตามเราก็ประหยัดเงินไปได้หนึ่งกล่องล่ะครับ

ผู้เขียนขอจบบทความทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER เพียงแค่นี้ครับ หากติดขัดในขั้นตอนใด ถามมาได้ครับที่

supakitd at yahoo dot com

บริษัท ไทยพรอสเพอรัสไอที จำกัด

42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์

อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000

Last Updated ( Friday, 15 August 2008 03:48 )

เวอร์ชั่นเต็ม: การติดตั้ง Centralized log ตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์

http://www.thaishadow.com/archiver/?tid-589.html

การติดตั้ง Centralized log ตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์

หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่

นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “php syslogviewer” แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก



ซอฟต์แวร์ที่ใช้งาน

syslog-ng-2.0.0

phpsyslogviewer-7.2.1

speedupd-7.3.2



ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ xen opensource ใช้เคอร์เนลเวอร์ชั่น 2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ



ขั้นตอนที่ 1 เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้



# apt-get install syslog-ng



ขั้นตอนที่ 2 ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้

# wget [url]http://jaist.dl.sourceforge.net/sourceforg...r-7.2.1.tar.bz2[/url]

# wget [url]http://jaist.dl.sourceforge.net/sourceforg...d-7.3.2.tar.bz2[/url]


ขั้นตอนที่ 3 แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการ์ณคงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่งุดหงิดบ้าง ดังนี้

# apt-get install bzip2

# tar xjvf phpsyslogviewer-7.2.1.tar.bz2

# cd phpsyslogviewer-7.2.1

# apt-get install mysql-client mysql-server apache2 php5

# apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5



ขั้นตอนที่ 4 ในโฟลเดอร์ install จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้

# mysql -u root -p

mysql > create database syslogng;

mysql > exit;

# mysql -u root -p syslogng < install/phpsyslogviewer.sql



ขั้นตอนที่ 5 ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้

# vi install/newuser.sql.php

# php install/newuser.sql.php

# php install/newuser.sql.php | mysql -u root -p syslogng



ขั้นตอนที่ 6 จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย

# cp -R htdocs /var/www/phpsyslogviewer

# vi /var/www/phpsyslogviewer/config.php

# chown root:www-data /var/www/phpsyslogviewer/config.php

# chmod 440 /var/www/phpsyslogviewer/config.php





ขั้นตอนที่ 7 ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ [url]http://xxx.xxx.xxx.xxx/phpsyslogviewer[/url]

[img]http://pic.citec.us/out.php/i4335_syslogviewer1.JPG[/img]

จะเห็นว่าหน้าตาดูดีทีเดียว


ขั้นตอนที่ 8 ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร

# tar xjvf speedupd-7.3.2.tar.bz2

# cd speedup-7.3.2

# apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot

# dpkg-buildpackage -rfakeroot



ขั้นตอนที่ 9 หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้

# cd ..

# dpkg -i speedupd_7.3.0_i386.deb

# vi /etc/speedupd.conf

# /etc/init.d/speedupd start




ต่อข้างล่างนะครับ ยาวเกิน

Edkung 10-7-2008 17:52

ขั้น ตอนที่ 10 สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมู
ลได้เลยครับ

# cd /etc/syslog-ng

# cp syslog-ng.conf syslog-ng.conf.org

# vi syslog-ng.conf

options {

recv_time_zone (+07:00);

send_time_zone (+07:00);

sync (0);

time_reopen (100);

log_fifo_size (1000);

long_hostnames (off);

use_dns (no);

use_fqdn (no);

create_dirs (yes);

chain_hostnames(yes);

keep_hostname (yes);

};



source s_sys {

file ("/proc/kmsg" log_prefix("kernel: "));

unix-stream ("/dev/log");

internal();

udp(ip(0.0.0.0) port(514));

tcp(ip(0.0.0.0) port(514) keep-alive(yes));

};

destination d_mysql { \

pipe("/var/log/mysql.pipe" \

template("INSERT INTO logs \

(host, facility, priority, level, tag, datetime, program, msg) \

VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \

'$PROGRAM', '$MSG' );\n") template-escape(yes));

};



filter f_kernel { facility (kern); };

filter f_messages { level(info..emerg) and not (facility(mail) or \

facility(authpriv) or facility(cron)); };



log {source(s_sys); filter(f_messages); destination(d_mysql); };

log {source(s_sys); filter(f_kernel); destination(d_mysql); };



ขั้นตอนที่ 11 สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ

#vi syslog2mysql.sh

#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]

then

mkfifo /var/log/mysql.pipe

fi

while [ -e /var/log/mysql.pipe ]

do

mysql -u root --password=radius syslogng < /var/log/mysql.pipe >/dev/null

done



# chmod +x syslog2mysql.sh

# ./syslog2mysql.sh &

# /etc/init.d/syslog-ng start



ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ

[img]http://pic.citec.us/out.php/i4336_syslogviewer2.JPG[/img]

จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ 5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ

[img]http://pic.citec.us/out.php/i4337_syslogviewer3.JPG[/img]

ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ

[img]http://pic.citec.us/out.php/i4338_syslogviewer4.JPG[/img]

ลองค้นหาดูสิ

[img]http://pic.citec.us/out.php/i4339_syslogviewer5.JPG[/img]

ได้คำตอบตามนี้ครับ

[img]http://pic.citec.us/out.php/i4340_syslogviewer6.JPG[/img]

ดูดีทีเดียวครับ เป็นไงครับ php syslogviewerสู้ซอต์ฟแวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนดูดีทีเดียวทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้ดีเชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ แค่นี้ก็รอดตัวจากมาตรา 26 ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินซื้อ centralized log จากต่างประเทศสักตัว

[b]ที่มา[/b] [url]http://www.tpit.co.th/[/url]

supakitd at yahoo dot com

บริษัท ไทยพรอสเพอรัสไอที จำกัด

42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์

อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000

Champ 11-7-2008 11:22

อยากรู้ว่า มันมีแบบที่เป็น เครื่อง พอเราเอาเครื่องนี้ไปเข้ากับ router แล้วใช้ได้เลย อะมีป่าวครับ

Edkung 11-7-2008 12:21

อันนี้ผมก็ไม่แน่ใจเท่าไรในรายละเอียด แต่เห็นว่าแพงมากๆๆๆ เฮ้อ รัฐออก พรบ. ฉบับนี้มา เปิดโอกาสให้พวก 3rd party มีช่องทางหากิน ...

debian: iptables

  1. แบบใช้ iptables-save + iptables-restore
    รันคำสั่งเพื่อสร้างกฎต่าง ๆ
    # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    # iptables -A FORWARD -s 192.168.0.0/16 -j ACCEPT
    # iptables -A FORWARD -d 192.168.0.0/16 -j ACCEPT
    # iptables -A FORWARD -s ! 192.168.0.0/16 -j DROP

    เก็บกฎไว้ที่ไฟล์ /etc/iptables/rules
    # mkdir -p /etc/iptables
    # iptables-save > /etc/iptables

    นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces
    # vi /etc/network/interfaces

    ...
    auto eth1
    iface eth1 inet static
    address 192.168.5.3
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.1
    post-up /sbin/iptables-restore < /etc/iptables/rules
    pre-down /sbin/iptables-save > /etc/iptables/rules

    ...
  2. แบบใช้สคริปต์
    สร้างสคริปต์เก็บไว้คือ /usr/local/bin/d.iptables
    # vi /usr/local/bin/d.iptables
    #!/bin/sh
    INTERFACE=eth1
    INT_NET=192.168.0.0/16
    /sbin/iptables -F > /dev/null
    /sbin/iptables -t nat -A POSTROUTING -o $PPP_INT -j MASQUERADE
    /sbin/iptables -A FORWARD -s $INT_NET -j ACCEPT
    /sbin/iptables -A FORWARD -d $INT_NET -j ACCEPT
    /sbin/iptables -A FORWARD -s ! $INT_NET -j DROP

    # chmod 755 /usr/local/bin/d.iptables

    นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces
    # mkdir -p /etc/iptables/
    # vi /etc/network/interfaces

    ...
    auto eth1
    iface eth1 inet static
    address 192.168.5.3
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.1
    post-up /usr/local/bin/d.iptables
    pre-down /sbin/iptables-save > /etc/iptables/rules

    (เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules มาใช้ในการปรับปรุงได้

  3. อ้างอิง - http://debianclub.org/node/156

สคริปท์ บล็อค keyword โดยใช้ Squid คับ เห็นมีคน ถาม

acl bad url_regex "/var/www/member/block_site.php"
http_access deny bad

ในไฟล์ /var/www/member/block_site.php

ก็จะประกอบไป ด้วยคำหรือเว็บไซต์ที่เราต้องการบล็อคคับ

เช่น
passkey
porn
xxx
bittorrent
torrent
passkey

compile ipp2p บน debian etch ไม่ผ่าน ช่วยทีครับ

apt-get install linux-headers-2.6.18-4-686 iptables-dev

http://www.thaiadmin.org/board/index.php?topic=58657.new

วันอังคารที่ 19 สิงหาคม พ.ศ. 2551

compile debian lenny support l7

http://forum.systemnetworkcare.com/index.php?topic=98.0
#ref & Big thank
# http://www.elessar.one.pl/article_kernel2.6.php
# http://suchart.wordpress.com/2008/02/02/kernel-2624-iptables-140-l7-filter-217-ipp2p-082-on-debian-40/
# http://kung1401.hi5.com/friend/profile/displayJournalDetail.do?ownerId=204560961&journalId=41474051
# http://hadyaiinternet.com
# http://siambox.com

#SiamVision Computer & network
#sncvision@hotmail.com

apt-get update
apt-get install build-essential
apt-get install kernel-package
apt-get install libncurses5-dev

cd /usr/src

apt-get install linux-source-2.6.24
wget http://iptables.org/projects/iptables/files/iptables-1.4.0.tar.bz2
wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.18.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2008-04-23.tar.gz
wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20080517.tar.bz2

echo "***download complete***"
echo "***Extract archive***"
tar xvzf l7-protocols-2008-04-23.tar.gz
tar xvzf netfilter-layer7-v2.18.tar.gz
tar xvjf patch-o-matic-ng-20080517.tar.bz2
tar xvjf linux-source-2.6.24.tar.bz2
tar xvjf iptables-1.4.0.tar.bz2
echo " done"

echo -n "Start Symbolic link >>>"
ln -s linux-source-2.6.24 linux
ln -s iptables-1.4.0 iptables
echo " done"

echo -n "Patch linux kernel & iptables with l7-filter >>>"
cd /usr/src/linux
patch -p1 < ../netfilter-layer7-v2.18/for_older_kernels/kernel-2.6.22-2.6.24-layer7-2.18.patch echo -n "Patch iptables" cd ../iptables patch -p1 < ../netfilter-layer7-v2.18/iptables-1.4-for-kernel-2.6.20forward-layer7-2.18.patch chmod +x extensions/.layer7-test echo " done" echo -n "Patch-o-magic ipp2p&l7&&connlimit" cd ../patch-o-matic-ng-20080517 echo " done" ./runme --download ./runme ipp2p echo -n "config and compile kernel" cd /usr/src/linux cp /boot/config-2.6.24-1-686 ./.config make menuconfig make-kpkg clean make-kpkg --initrd --append-to-version=-siamvision kernel_image kernel_headers dpkg -i linux-image+tab dpkg -i linux-headers+tab mv /usr/src/l7-protocols-2008-04-23 /etc/l7-protocols cd /usr/src/iptables make KERNEL_DIR=/usr/src/linux make install Reboot Test iptables -m ipp2p --help iptables -m layer7 --help iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP iptables -A FORWARD -m ipp2p --ipp2p -j DROP echo -n "bittorent" echo '# Bittorrent announce (tracker)' > /etc/l7-protocols/protocols/bittorrent-announce.pat
echo 'bittorrent-announce' >> /etc/l7-protocols/protocols/bittorrent-announce.pat
echo '^get.+announce.+info_hash=' >> /etc/l7-protocols/protocols/bittorrent-announce.pat
echo " done"

echo " * iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP"
echo " * iptables -A FORWARD -m layer7 --l7proto bittorrent-announce -j DROP"

http://www.opentle.org/th/node/7854

http://www.opentle.org/th/node/7854

ลองติดตั้ง dns แบบเปลี่ยนค่าได้

http://www.thaitux.info/node/133

http://download.grisoft.cz/softw/70/update/

http://download.grisoft.cz/softw/70/update/

วันจันทร์ที่ 18 สิงหาคม พ.ศ. 2551

การติดตั้ง Samba Server

ในบทความนี้เป็นการสาธิต การติดตั้ง Samba Server ในแบบพื้นฐานครับ เป็นการ share ข้อมูล

ก่อนอื่นก็ต้องมาตรวจสอบ Package ก่อนครับ

[root@station10 ~]# rpm -qa|grep samba

samba-client-3.0.10-1.4E.6

samba-3.0.10-1.4E.6

system-config-samba-1.2.21-1

samba-common-3.0.10-1.4E.6

[root@station10 ~]# vi /etc/samba/smb.conf

Section [ global ]

Netbios name = MONTREE-SAMBA

Workgroup = Linuxgray

[TESTSHARE]

path = /share

guest ok = yes

writable = yes

comment = My First Share Folder

[root@station10 ~]# mkdir /share

[root@station10 ~]# chmod 777 /share/

[root@station10 ~]# service smb restart

Shutting down SMB services: [FAILED]

Shutting down NMB services: [FAILED]

Starting SMB services: [ OK ]

Starting NMB services: [ OK ]

smbclient –L localhost

แค่นี้ก็เป็นอันเสร็จพิธีครับสำหรับ samba server ลองทำดูครับ

My sources.list for Debian Lenny/Sid

deb http://ftp.debianclub.org/debian lenny main contrib
deb-src http://ftp.debianclub.org/debian lenny main contrib

###########################################
#Debian Lenny
deb http://ftp.nl.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free

########################################
#Multimedia support (latest ffmpeg, mplayer, and more)
#http://debian.video.free.fr/index.html
#get the apt GPG key from here : http://www.debian-multimedia.org/faq.php

#testing (Lenny)
deb ftp://ftp.uni-kl.de/debian-multimedia/ testing main
#unstable (Sid)
deb ftp://ftp.uni-kl.de/debian-multimedia/ unstable main
##################################################
#Debian Sid:
deb http://ftp.nl.debian.org/debian/ unstable main contrib non-free
##############################################
#to use unstable repositories (Sid) of Debian to get some of the latest packages
#make an “apt.conf”
#as root:
#nano -w /etc/apt/apt.conf
#Insert this line:
#APT::Default-Release “testing”;
#after an apt-get update you can now do apt-get install -t unstable
#to get a package from the unstable(Sid) repo.
#Of course you can also use this trick for Etch > Lenny
###########################################################

NTPDate: เวลานั้นสำคัญไฉน .

ที่ ตั้งหัวเรื่องอย่างนี้ก็เพราะสิ่งที่เรากำลังจะมาดูกันก็คือเรื่อง "เวลา" และเจ้าเวลานี่เองที่เป็นต้นเหตุของการเรียนรู้ในครั้งนี้ เรื่องก็มีอยู่ว่า หากเราใช้งานเครื่องคอมพิวเตอร์เราคนเดียว ไม่ต้องติดต่อกับใคร ไม่ต้องส่งข้อมูลให้ใคร เรื่องเวลาเราจะตั้งเป็นเท่าไรก็ได้ ช้าหรือเร็วก็แล้วแต่ชอบใจ แต่เมื่อใดก็ตามที่เราต้องส่งข้อมูลไปยังเครื่องอื่น ๆ และต้องมีการเปรียบเทียบกันว่าข้อมูลตัวไหนเป็นตัวใหม่หรือเก่าแล้วหละก็ ....เกิดปัญหาแล้วสิ.... เพราะการจะเปรียบเทียบกันต้องตั้งอยู่บนฐานเวลาที่ตรงกัน หากช้า หรือเร็วกว่ากัน ก็ส่งผลให้การเปรียบเทียบผิดพลาด

วิธีแก้ปัญหา ... ก็ตั้งเองให้มันตรงกันสิ นั่นมันก็ได้อยู่หรอก แต่มีวิธีที่ดีกว่านั้น เราคงเคยได้ยินเรื่องการตั้งเวลา โดยการรับค่าเวลาจากเซิร์ฟเวอร์เวลา (Time Server) ซึ่งเครื่องที่ขอเวลาจากเซิร์ฟเวอร์ ก็จะได้เวลาที่ตรงกันเอง โดยไม่ต้องออกแรงมากมาย งั้นก็เริ่มลงโปรแกรมเลยละกันครับ

# aptitude install ntpdate

ได้โปรแกรมมาแล้ว ก็เหลือแต่ต้องตั้งค่าต่าง ๆ ให้โปรแกรม แต่ว่าไปแล้วค่าที่ระบบตั้งมาให้ก็ใช้ได้แล้ว อาจจะไม่ต้องแก้อะไรเลย

ลองขอเวลาดู

# ntpdate-debian

31 Jan 00:24:55 ntpdate[10301]: adjust time server 216.162.200.152 offset -0.000195 sec

อาฮ่า.... ได้เวลามาแล้ว แต่ค่อนข้างช้าแฮะ ... ทำไหมเหรอครับ ก็เจ้าเซิร์ฟเวอร์เวลา ที่ตั้งค่ามากับแพ็คเกจ เขาไม่ได้ตั้งสำหรับเราคนไทยใช่ไหมครับ งั้นก็มาใช้ตัวที่อยู่ใกล้ ๆ หน่อยละกันจะได้เร็วหน่อย

# echo "server th.pool.ntp.org" > /etc/ntp.conf

คราวนี้ลองดูใหม่

# ntpdate-debian

31 Jan 00:29:51 ntpdate[10329]: adjust time server 61.19.242.42 offset 0.001380 sec

รอบนี้ได้มาเหมือนกัน เร็วกว่าด้วย

แต่ทว่า โดยพื้นฐานของระบบแล้ว จะเกิดการคลาดเคลื่อนของเวลาตลอดเวลาทีละเล็กทีละน้อย เนื่องจากพื้นฐานความแตกต่างทางด้านฮาร์ดแวร์ ซึ่งมีความแม่นยำต่างกัน ดังนั้นการขอเวลาจากเซิร์ฟเวอร์เวลาตามช่วงเวลาที่กำหนด อาจจะเป็น 1-2 ชั่วโมงต่อครั้ง จึงเป็นความคิดที่ดี

งั้นก็กำหนด
/etc/crond.hourly/updatetime

#!/bin/bash
/usr/sbin/ntpdate-debian > /dev/null
/sbin/hwclock --adjust # ปรับค่าความแตกต่างเวลาระหว่าง System Time กับ Hardware Clock (RTC)
/sbin/hwclock --systohc # ตั้งค่าเวลา Hardware Clock ตาม System Time

# /etc/init.d/cron restart

ตอนนี้เครื่องของเราก็จะทำการขอเวลาทุก ๆ ชั่วโมงแล้ว

System Time คือเวลาที่ระบบใช้ในขณะที่ลินุกซ์ยังทำงาน โดยจะเป็นคนละส่วนกันกับ Hardware Clock (RTC - Real Time Clock) นั่นหมายความว่า ค่าเวลาที่อานได้จากคำสั่ง date จะมาจาก System Time ไม่ได้มาจาก Hardware Clock โดยหน้าที่ของ Hardware Clock ก็คือจะคอยให้เวลากับลินุกซ์ในขณะเริ่มทำงาน รวมไปถึงขณะที่ลินุกซ์ไม่ได้ทำงานด้วย(ปิดเครื่อง) ดังนั้น การตั้งเวลา Hardware Clock ตาม System Time จึงทำให้เรามั่นใจได้ว่า หากปิดเครื่องไปแล้ว เวลาที่เปิดเครื่องมาใหม่ เรายังมีเวลาของระบบที่ถูกต้องอยู่

มาถึงตอนนี้เราก็ได้เวลาที่ถูกต้องและค่อนข้างแม่นยำมาแล้ว ก็ทำอย่างเดียวกันกับเครื่องแม่ข่ายที่เราจะต้องส่งข้อมูลไปเก็บ และอาจจะต้องมีการเปรียบเทียบเรื่องเวลาของการใช้งาน แก้ไข ไฟล์ คราวนี้ก็ไม่มีปัญหาแล้ว :)

บทความ debian เยอะมากๆ

http://www.thaitux.info/book/export/html/472

set php บน debian

apt-get update

You can use either Apache 1.3 or the newer Apache 2. If you are using Apache 1.3, make sure you have the following packages installed

apt-get install apache php4 libapache-mod-php4 php4-gd php4-imagick php4-mysql mysql-server

If you are using Apache 2, you need the following packages instead

apt-get install apache2-mpm-prefork libapache2-mod-php4 php4-gd php4-imagick php4-mysql mysql-server

คลังบทความของบล็อก