<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7059857428171456581</id><updated>2011-04-21T21:33:01.817-07:00</updated><title type='text'>Debian Book</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1099973036783383139</id><published>2009-01-07T19:02:00.000-08:00</published><updated>2009-01-12T02:56:30.074-08:00</updated><title type='text'>Ethernet Bonding Fedora Linux</title><content type='html'>พอร์ตแลน (Ethernet) ของเครื่องเซิร์ฟเวอร์ถือว่าเป็นสิ่งสำคัญอย่างยิ่ง เพราะเป็นส่วนที่จะรับส่งข้อมูลกับเคื่องอื่นๆ ถ้าเซิร์ฟเวอร์มีแค่พอร์ตเดียวเชื่อมต่อเข้าเน็ตเวิร์ก แล้วสายที่เชื่อมต่อหลุดไป หรือไม่สามารถรองรับปริมาณการรับส่งข้อมูลได้เพียงพอ ก็อาจทำให้เกิดปัญหาการใช้งานได้&lt;br /&gt;&lt;br /&gt;ในบทความนี้ขอแนะนำการคอนฟิก Ethernet Bonding (หรือ Teaming) เพื่อแก้ปัญหาที่อาจเกิดขึ้น โดยจะมีการจัดกลุ่มพอร์ตแลนเข้าด้วยกัน เพื่อช่วยในการรับส่งข้อมูล รูปแบบการส่งจะมีสองแบบใหญ่ๆ คือ&lt;br /&gt;&lt;br /&gt;Active-backup พอร์ตหนึ่งจะทำหน้าพอร์ตหลักเพื่อใช้รับส่งข้อมูล (Active) แต่อีกพอร์ตหนึ่งจะสำรอง (Backup) ไว้เฉยๆ ไม่มีการรับส่งข้อมูลใดๆ ผ่านทางพอร์ตสำรอง แต่เมื่อไรที่พอร์ตหลักมีปัญหาพอร์ตนี้จะรับส่งข้อมูลแทน สำหรับ Ethernet Bonding จะเป็นคอนฟิกใน mode 1 &lt;br /&gt;Load Balance พอร์ตทั้งหมดในกลุ่มจะช่วยกันรับส่งข้อมูล ส่วนเทคนิคในการรับส่งจะมีหลายแบบด้วยกันแล้วแต่ mode ที่คอนฟิก &lt;br /&gt;ในตัวอย่างจะเป็นการคอนฟิกบน Fedora 9 ซึ่งน่าจะประยุกต์ใช้กับ Fedora เวอร์ชั่นอื่นๆ,  CentOS, RedHat หรือลีนุกซ์ตัวอื่นๆ ได้&lt;br /&gt;&lt;br /&gt;เตรียมพอร์ตแลนที่จะคอนฟิกเป็น Ethernet Bonding&lt;br /&gt;ในตัวอย่างจะใช้พอร์ตแลน eth2 และ eth3 เพื่อคอนฟิกรวมเป็น bond0&lt;br /&gt;&lt;br /&gt;เริ่มต้นสร้างไฟล์ /etc/sysconfig/network-scripts/ifcfg-bond0 ซึ่งจะเป็นไฟล์คอนฟิกของ bond0 เป็นพอร์ต bonding (ในเครื่องหนึ่งสามารถจัดกลุ่มทำได้หลาย bonding พอร์ตที่คอนฟิกก็จะเป็น bond1, bond2 เป็นต้น) ในไฟล์จะมีคอนฟิก IP Address, Netmask เหมือนที่คอนฟิกพอร์ต ethernet ทั่วไป&lt;br /&gt;&lt;br /&gt;ตัวอย่างคอนฟิก ifcfg-bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0&lt;br /&gt;DEVICE=bond0&lt;br /&gt;IPADDR=10.1.0.1&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;BROADCAST=10.1.0.255&lt;br /&gt;ONBOOT=yes&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;USERCTL=noคอนฟิกพอร์ต (Physical) ให้อยู่ในกลุ่ม bond0 ตามตัวอย่าง&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2&lt;br /&gt;DEVICE=eth2&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USECTL=no[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3&lt;br /&gt;DEVICE=eth3&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USECTL=noแก้ไขไฟล์ /etc/modprobe.conf เพื่อให้โหลด kernel module สำหรับการทำ bonding ตอนที่มีการโหลดคอนฟิก bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/modprobe.conf&lt;br /&gt;alias bond0 bonding&lt;br /&gt;options bonding miimon=100 mode=1สามารถระบุว่าจะทำ bonding เพื่อรับส่งข้อมูลแบบไหนได้จากคอนฟิก mode ดังนี้&lt;br /&gt;&lt;br /&gt;mode=0 (balance-rr) เป็นการส่งข้อมูลแบบ round-robin (load balancing, fault tolerance) &lt;br /&gt;mode=1 (active-backup) สถานการณ์ปกติจะมีพอร์ตเดียวเท่านั้นที่ใช้รับส่งข้อมูล (fault tolerance) &lt;br /&gt;mode=2 (balance-xor) เป็นการส่งข้อมูลแบบใช้ XOR เพื่อหาพอร์ตที่จะส่ง เช่นคำนวณจาก MAC Address ต้นทางปลายทางเป็นต้น (load balancing, fault tolerance) &lt;br /&gt;mode=3 (broadcast) &lt;br /&gt;mode=4 (802.3ad) เป็นส่งข้อมูลแบบ Link Aggregation Control Protocol (LACP) / 802.3ad &lt;br /&gt;mode=5 (balance-tlb) ส่งข้อมูลแบบ Adaptive transmit load balancing &lt;br /&gt;mode=6 (balance-alb) ส่งข้อมูลแบบ Adaptive load balancing &lt;br /&gt;หมายเหตุ รายละเอียดเพิ่มเติมดูได้จากไฟล์ /usr/share/doc/kernel-doc-2.6.25/Documentation/networking/bonding.txt จาก kernel-doc-2.6.25-14.fc9.noarch.rpm&lt;br /&gt;&lt;br /&gt;ในเริ่มต้นแนะนำให้ทดสอบกับ mode=1 เพื่อทดลอง active-backup ก่อน&lt;br /&gt;&lt;br /&gt;หลังจากสร้างไฟล์คอนฟิกทั้งหมดแล้ว รีบูตเครื่องหนึ่งครั้ง เผื่อให้ bond0 ถูกโหลดขึ้นมา&lt;br /&gt;&lt;br /&gt;ตรวจสอบสถานะของ Ethernet Bonding&lt;br /&gt;เมื่อเครื่องบูตเสร็จเรียบร้อย ถ้าถูกต้องเมื่อรันคำสั่ง ifconfig จะมีพอร์ต bond0 เพิ่มขึ้นมาตามตัวอย่าง&lt;br /&gt;&lt;br /&gt;[root@server ~]# ifconfig&lt;br /&gt;bond0     Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          inet addr:10.1.0.1  Bcast:10.1.0.255  Mask:255.255.255.0&lt;br /&gt;          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:13 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:0&lt;br /&gt;          RX bytes:1160 (1.1 KiB)  TX bytes:1574 (1.5 KiB)...eth2      Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:12 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:1000&lt;br /&gt;          RX bytes:1100 (1.0 KiB)  TX bytes:1574 (1.5 KiB)&lt;br /&gt;          Interrupt:16 Base address:0x1824eth3      Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:1 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:1000&lt;br /&gt;          RX bytes:60 (60.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;          Interrupt:17 Base address:0x18a4ข้อสังเกตจากคำสั่ง ifconfig&lt;br /&gt;&lt;br /&gt;HWaddr หรือ MAC Address ของแต่ละพอร์ตที่ทำ bonding ด้วยกันจะเป็นค่าเดียวกันหมด ทั้งนี้เพื่อประโยชน์ในการทำ fail over &lt;br /&gt;ในโหมด active-backup ปกติจะมีพอร์ตเดียวทำหน้าที่เป็นหลักใช้ในการรับส่งข้อมูล ซึ่งดูได้จากค่า RX, TX packets &lt;br /&gt;หากต้องการรู้ว่าพอร์ตไหนถูกใช้เป็นหลัก (active) ในการส่งข้อมูล สามารถดูได้จากไฟล์ /proc/net/bonding/bond0&lt;br /&gt;&lt;br /&gt;ตัวอย่างไฟล์ /proc/net/bonding/bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /proc/net/bonding/bond0&lt;br /&gt;Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)&lt;br /&gt;Primary Slave: None&lt;br /&gt;Currently Active Slave: eth2&lt;br /&gt;MII Status: up&lt;br /&gt;MII Polling Interval (ms): 100&lt;br /&gt;Up Delay (ms): 0&lt;br /&gt;Down Delay (ms): 0Slave Interface: eth2&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:56จากตัวอย่างพอร์ตหลักที่ถูกใช้ในโหมด (active-backup) คือพอร์ต eth2 ดูได้จาก Currently Active Slave: eth2&lt;br /&gt;&lt;br /&gt;ทดสอบการ fail over&lt;br /&gt;แนะนำว่าก่อนที่จะดึงสายแลนให้รันคำสั่ง ping ทิ้งไว้ เพื่อดูว่าเวลาที่มีการ fail over จะยังส่งข้อมูลต่อไปได้เลยไหม&lt;br /&gt;&lt;br /&gt;ทดลองดึงสายออกจากพอร์ต eth2 แล้วตรวจสอบไฟล์ /proc/net/bonding/bond0 อีกครั้ง จะเห็นว่าพอร์ต eth3 จะถูกนำมาใช้เป็นหลักในการรับส่งข้อมูลแทน แล้วคำสั่ง ping ก็ยังคงทำงานอยู่ อาจมีสะดุดไปบ้างเล็กน้อย&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /proc/net/bonding/bond0&lt;br /&gt;Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)&lt;br /&gt;Primary Slave: None&lt;br /&gt;Currently Active Slave: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;MII Polling Interval (ms): 100&lt;br /&gt;Up Delay (ms): 0&lt;br /&gt;Down Delay (ms): 0Slave Interface: eth2&lt;br /&gt;MII Status: down&lt;br /&gt;Link Failure Count: 1&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:56จากผลลัพธ์จะแสดงสถานะของ bonding ต่างๆ ดังนี้&lt;br /&gt;&lt;br /&gt;Currently Active Slave: eth3 พอร์ตหลักที่ใช้รับส่งข้อมูลตอนนี้ &lt;br /&gt;Slave Interface: eth2, MII Status: down สถานะของพอร์ต eth2 down &lt;br /&gt;Link Failur Count: 1 แสดงตัวเลขจำนวนครั้งที่พอร์ตมีปัญหา &lt;br /&gt;สุดท้ายทดสอบด้วยการเสียบสายกลับเข้าไปที่พอร์ตที่ 2 จะเห็นว่าไม่มีการ fail over กลับมาที่พอร์ต eth2 พอร์ต eth3 จะยังคงเป็นหลักในการรับส่งข้อมูลอยู่&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1099973036783383139?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1099973036783383139/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1099973036783383139' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1099973036783383139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1099973036783383139'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2009/01/ethernet-bonding-fedora-linux.html' title='Ethernet Bonding Fedora Linux'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-6421458694742768325</id><published>2008-12-26T09:24:00.000-08:00</published><updated>2008-12-26T09:25:22.198-08:00</updated><title type='text'>** ตั้งค่า IP. ที่การ์ดแลน **</title><content type='html'>** ตั้งค่า IP. ที่การ์ดแลน **&lt;br /&gt;&lt;br /&gt;# alias ที่ไฟล์ /etc/rc.conf&lt;br /&gt;ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"&lt;br /&gt;ifconfig_rl0_alias0="inet 192.168.0.2 netmask 255.255.255.255"&lt;br /&gt;&lt;br /&gt;เสร็จแล้วใช้คำสั่ง netstart ครับ&lt;br /&gt;&lt;br /&gt;#/etc/netstart ; เพื่อ restart network configuration&lt;br /&gt;&lt;br /&gt;ถ้าจะ set lan card ใบเดียวให้มี หลาย ๆ ip ให้ทำแบบนี้คับ&lt;br /&gt;# ifconfig rl0 alias 192.168.1.1 netmask 255.255.255.0&lt;br /&gt;# ifconfig&lt;br /&gt;rl0: flags=8843 mtu 1500&lt;br /&gt;inet 202.29.80.130 netmask 0xffffff80 broadcast 202.29.80.255&lt;br /&gt;inet6 fe80::202:44ff:fe14:ba%rl0 prefixlen 64 scopeid 0x1&lt;br /&gt;inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.0.255&lt;br /&gt;ether 00:02:44:14:00:ba&lt;br /&gt;media: Ethernet autoselect (100baseTX )&lt;br /&gt;status: active&lt;br /&gt;&lt;br /&gt;เพียงแค่นี้ก็จะสามารถใช้ได้ 2 ip คับผม&lt;br /&gt;&lt;br /&gt;หรือถ้าต้องการให้ ip ที่เพิ่มเข้าไปใหม่นั้นทำงานทุกครั้งที่มีการ boot เครื่องให้เพิ่มบรรทัดนี้ ในไฟล์ /etc/rc.conf นะคับ&lt;br /&gt;&lt;br /&gt;ifconfig_rl0_alias0="192.168.1.1 netmask 255.255.255.0"&lt;br /&gt;&lt;br /&gt;สามารถทำได้หลายแบบนะครับ&lt;br /&gt;รู้สึกว่าใน Slackware จะใช้แบบนี้นะครับ&lt;br /&gt;&lt;br /&gt;# ifconfig rl0:0 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx&lt;br /&gt;# ifconfig rl0:1 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx&lt;br /&gt;&lt;br /&gt;ถ้า rl0 คือชื่อ lan card ใบที่ 1 กำหนดเป็น ip address ตัวที่ 1&lt;br /&gt;ส่วน :0 และ :1 ก็เป็นหมายเลข ip address ตัวที่ 2 และ 3 ตามลำดับ&lt;br /&gt;&lt;br /&gt;ส่วน BSD น่าจะอย่างงี้นะคับ&lt;br /&gt;&lt;br /&gt;# ifconfig_rl0="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"&lt;br /&gt;# ifconfig_rl0_alias1="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"&lt;br /&gt;# ifconfig_rl0_alias0="xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"&lt;br /&gt;&lt;br /&gt;ถ้าทำผ่าน sysinstall ก็ขั้นตอนนี้นะครับ&lt;br /&gt;/stand/sysinstall -&gt; เลือก configure -&gt; เลือก networking -&gt; เลือก interface -&gt; เลือก ชื่อ lancard ที่จะใส่ค่าไอพี -&gt; จะขึ้นหน้าจอถามค่า IPV6 ตอบ NO -&gt; หน้าจอถามว่าจะรับค่า DHCP หรือไม่ ถ้าไม่ตอบ NO -&gt; จากนั้นจะขึ้นหน้าจอใส่ค่า host , domain ,ip gateway , dns , ip การ์ด , subnetmask ก็ใส่ให้ถูกต้องแล้วก็ OK -&gt; จากนั้นจะกลับมาหน้า interface ใหม่ ให้ทำตามเดิมเลือกอีกการ์ดนึงนะครับ&lt;br /&gt;หรือจะสั่งที่ command line เลยก็ได้ เช่น&lt;br /&gt;ifconfig &lt;ชื่อ interface&gt; inet &lt;เลขไอพี&gt; netmask &lt;เลข netmask&gt; up แล้ว enter ตัวอย่างนะครับ ifconfig bge0 inet 203.185.98.99 netmask 255.255.255.248 up แบบนี้อะคับ ต้อง boot ใหม่ด้วย&lt;br /&gt;แล้วลอง ifconfig ดู&lt;br /&gt;&lt;br /&gt;เอาแบบ command line เลยครับง่ายดี&lt;br /&gt;&lt;br /&gt;# ifconfig rl0 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx&lt;br /&gt;# ifconfig rl1 inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx&lt;br /&gt;&lt;br /&gt;# ifconfig rl0 down / up&lt;br /&gt;# ifconfig rl1 down / up&lt;br /&gt;&lt;br /&gt;rl0 คือ ชื่อการ์ดแลนใบที่ 1&lt;br /&gt;rl1 คือ ชื่อการ์ดแลนใบที่ 2&lt;br /&gt;&lt;br /&gt;http://www.thaibsd.com/webboard/search.php?Category=thaibsd&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-6421458694742768325?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/6421458694742768325/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=6421458694742768325' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6421458694742768325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6421458694742768325'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/12/ip.html' title='** ตั้งค่า IP. ที่การ์ดแลน **'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3765081089813271386</id><published>2008-12-25T04:43:00.000-08:00</published><updated>2008-12-25T04:59:07.007-08:00</updated><title type='text'>เพิ่ม HDD ใหม่ใน Linux</title><content type='html'>http://9max.icspace.net/readarticle.php?article_id=25&lt;br /&gt;1. Shutdown เครื่อง&lt;br /&gt;2. ต่อ HDD 4 G เข้าไปเป็นแบบ IDE กว่าจะไปหามาได้&lt;br /&gt;&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# df -h&lt;br /&gt;Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/sda1             1.8G  1.7G    42M  98% /&lt;br /&gt;none                      62M     0    61M   0% /dev/shm&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# fdisk -l (ดูว่า HDD ที่ต่อไว้เห็นหรือเปล่า )&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/sda1   *         1       242   1943833+  83  Linux&lt;br /&gt;/dev/sda2           243       275    265072+  82  Linux swap&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]#&lt;br /&gt;&lt;br /&gt;****** ทำไมไม่เห็น งั้น shutdown แล้ว ขยับสายใหม่อีกที&lt;br /&gt;&lt;br /&gt;ลองอีกทีคำสั่งเดิม ....&lt;br /&gt;&lt;br /&gt;[root@mail root]# fdisk -l&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/sda1   *         1       242   1943833+  83  Linux&lt;br /&gt;/dev/sda2           243       275    265072+  82  Linux swap&lt;br /&gt;&lt;br /&gt;Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders&lt;br /&gt;Units = cylinders of 8064 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/hdc1   *         1      1022   4120672+   b  Win95 FAT32&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]#&lt;br /&gt;&lt;br /&gt;ว่าแล้ว สายหลวมจริงๆ  ได้ แร๊ะ.... อิ..อิ...&lt;br /&gt;&lt;br /&gt;[root@mail root]# fdisk   (ลืมคำสั่ง เพื่อความชัวร์ ให้คำสั่งนี้)&lt;br /&gt;&lt;br /&gt;Usage: fdisk [-l] [-b SSZ] [-u] device&lt;br /&gt;E.g.: fdisk /dev/hda  (for the first IDE disk)&lt;br /&gt;  or: fdisk /dev/sdc  (for the third SCSI disk)&lt;br /&gt;  or: fdisk /dev/eda  (for the first PS/2 ESDI drive)&lt;br /&gt;  or: fdisk /dev/rd/c0d0  or: fdisk /dev/ida/c0d0  (for RAID devices)&lt;br /&gt;  ...&lt;br /&gt;[root@mail root]#&lt;br /&gt;ตามตัวอย่างเลย....&lt;br /&gt;[root@mail root]# fdisk /dev/hdc (เข้าไปจัดการ HDD ตัวที่เอามาต่อได้เลย)&lt;br /&gt;&lt;br /&gt;Command (m for help): m   (ลืมอีกแร๊ะ)   &lt;br /&gt;Command action&lt;br /&gt;   a   toggle a bootable flag&lt;br /&gt;   b   edit bsd disklabel&lt;br /&gt;   c   toggle the dos compatibility flag&lt;br /&gt;   d   delete a partition&lt;br /&gt;   l   list known partition types&lt;br /&gt;   m   print this menu&lt;br /&gt;   n   add a new partition&lt;br /&gt;   o   create a new empty DOS partition table&lt;br /&gt;   p   print the partition table&lt;br /&gt;   q   quit without saving changes&lt;br /&gt;   s   create a new empty Sun disklabel&lt;br /&gt;   t   change a partition's system id&lt;br /&gt;   u   change display/entry units&lt;br /&gt;   v   verify the partition table&lt;br /&gt;   w   write table to disk and exit&lt;br /&gt;   x   extra functionality (experts only)&lt;br /&gt;&lt;br /&gt;Command (m for help): p  (ดูซิ ว่าเป็นอะไรอยู่)&lt;br /&gt;&lt;br /&gt;Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders&lt;br /&gt;Units = cylinders of 8064 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/hdc1   *         1      1022   4120672+   b  Win95 FAT32&lt;br /&gt;&lt;br /&gt;Command (m for help): d    (จัดการ ลบออกไปซะ)&lt;br /&gt;Partition number (1-4): 1  (เลือกให้ถูก อันด้วยล่ะ)&lt;br /&gt;&lt;br /&gt;Command (m for help): p  (ดูอีกที ว่ายังอยู่อีก ป่ะ)&lt;br /&gt;&lt;br /&gt;Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders&lt;br /&gt;Units = cylinders of 8064 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt; &lt;br /&gt;Command (m for help): n  (ถูกลบไปแร๊ะ สร้องใหม่ด้วย n )&lt;br /&gt;Command action&lt;br /&gt;   e   extended&lt;br /&gt;   p   primary partition (1-4)&lt;br /&gt;p    (เลือก p)&lt;br /&gt;Partition number (1-4): 1 (และ 1 )&lt;br /&gt;First cylinder (1-1023, default 1): (Enter ได้เลย)&lt;br /&gt;Using default value 1&lt;br /&gt;Last cylinder or +size or +sizeM or +sizeK (1-1023, default 1023):&lt;br /&gt;Using default value 1023&lt;br /&gt;&lt;br /&gt;Command (m for help): p   (ดูอีกที)&lt;br /&gt;&lt;br /&gt;Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders&lt;br /&gt;Units = cylinders of 8064 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/hdc1             1      1023   4124704+  83  Linux&lt;br /&gt;&lt;br /&gt;Command (m for help): w  (อย่าลืมตัวนี้ด้วยไม่งั้นที่ทำมาก็ไม่มีผล)&lt;br /&gt;The partition table has been altered!&lt;br /&gt;&lt;br /&gt;Calling ioctl() to re-read partition table.&lt;br /&gt;Syncing disks.&lt;br /&gt;[root@mail root]# fdisk -l  (ออกมาแล้วก็ชอบดู อีกแร๊ะ ได้ยัง)&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 255 heads, 63 sectors, 275 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/sda1   *         1       242   1943833+  83  Linux&lt;br /&gt;/dev/sda2           243       275    265072+  82  Linux swap&lt;br /&gt;&lt;br /&gt;Disk /dev/hdc: 128 heads, 63 sectors, 1023 cylinders&lt;br /&gt;Units = cylinders of 8064 * 512 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot    Start       End    Blocks   Id  System&lt;br /&gt;/dev/hdc1             1      1023   4124704+  83  Linux&lt;br /&gt;[root@mail root]# (ก็ได้เป็น Linux แล้วสมใจ)&lt;br /&gt;[root@mail root]# mkfs -t ext3 -c /dev/hdc1 (ต้อง format ด้วยคำสั่งนี้)&lt;br /&gt;mke2fs 1.27 (8-Mar-2002)&lt;br /&gt;Filesystem label=&lt;br /&gt;OS type: Linux&lt;br /&gt;Block size=4096 (log=2)&lt;br /&gt;Fragment size=4096 (log=2)&lt;br /&gt;516096 inodes, 1031176 blocks&lt;br /&gt;51558 blocks (5.00%) reserved for the super user&lt;br /&gt;First data block=0&lt;br /&gt;32 block groups&lt;br /&gt;32768 blocks per group, 32768 fragments per group&lt;br /&gt;16128 inodes per group&lt;br /&gt;Superblock backups stored on blocks:&lt;br /&gt;        32768, 98304, 163840, 229376, 294912, 819200, 884736&lt;br /&gt;&lt;br /&gt;Checking for bad blocks (read-only test):             done                       &lt;br /&gt;Writing inode tables: done                           &lt;br /&gt;Creating journal (8192 blocks): done&lt;br /&gt;Writing superblocks and filesystem accounting information: done (ช่วงนี้ตัวเลขวิ่งอยู่ ครู่ใหญ่ ตามขนาด HDD ล่ะ)&lt;br /&gt;&lt;br /&gt;This filesystem will be automatically checked every 28 mounts or&lt;br /&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;br /&gt;[root@mail root]#            &lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# mount  (mount ดูยังไม่เห็น จะเอาไว้ไหนดีน้าาา)&lt;br /&gt;/dev/sda1 on / type ext3 (rw)&lt;br /&gt;none on /proc type proc (rw)&lt;br /&gt;none on /dev/pts type devpts (rw,gid=5,mode=620)&lt;br /&gt;none on /dev/shm type tmpfs (rw)&lt;br /&gt;[root@mail root]# mkdir /data2  (สร้าง Folder ไว้ที่นี่ ก็แล้วกัน /data2)&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# mount -t ext3 /dev/hdc1 /data2  (แล้วก็ mount มันไว้ที่นี่ล่ะ /data2)&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# mount  (ดู อีกแร๊ะ ได้ยัง)&lt;br /&gt;/dev/sda1 on / type ext3 (rw)&lt;br /&gt;none on /proc type proc (rw)&lt;br /&gt;none on /dev/pts type devpts (rw,gid=5,mode=620)&lt;br /&gt;none on /dev/shm type tmpfs (rw)&lt;br /&gt;/dev/hdc1 on /data2 type ext3 (rw)  &lt;=== มาแย้ว นี่ไง&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# df -h&lt;br /&gt;Filesystem            Size  Used Avail Use% Mounted on&lt;br /&gt;/dev/sda1             1.8G  1.7G   42M  98% /&lt;br /&gt;none                   62M     0   61M   0% /dev/shm&lt;br /&gt;/dev/hdc1             3.9G   33M  3.6G   1% /data2&lt;br /&gt;[root@mail root]#&lt;br /&gt;&lt;br /&gt;เหมือนว่าจะเรียบร้อยแต่ยังไม่เรียบร้อยดี&lt;br /&gt;&lt;br /&gt;ถ้า Reboot ใหม่ มันจะไม่ยอม Mount ให้ สามารถทำได้ 2 วิธีเท่าที่ผมรู้&lt;br /&gt;1. เพิ่มที่ /etc/fstab (ไม่แน่ใจว่า รูปแบบการเพิ่มจะใส่ยังไงไม่กล้า เคยทำ ครั้งนึ่ง แล้ว Boot ไม่ได้เลย ใครพอแนะนำได้ก็เรียนเชิญครับ)&lt;br /&gt;2. ตามด้านล่าง คล้าย Autoexec.bat ของ windows คนรุ่นเก่า&lt;br /&gt;&lt;br /&gt;[root@mail root]#&lt;br /&gt;[root@mail root]# vi /root/auto-mount-new-hdd&lt;br /&gt;ข้างในใส่แต่นี้&lt;br /&gt;mount -t ext3 /dev/hdc1 /data2&lt;br /&gt;&lt;br /&gt;จากนั้น ต้อง chmod เพื่อให้มัน run ได้ด้วยโดย&lt;br /&gt;[root@mail root]# chmod 755 auto-mount-new-hdd&lt;br /&gt;&lt;br /&gt;ต่อไปก็เอาไปใส่ใน /etc/rc.local หรือ จริงๆ ก็มาเขียนไว้ที่นีเลยก็ได้นะ แล้วแต่&lt;br /&gt;[root@mail root]#vi /etc/rc.local&lt;br /&gt;เพิ่ม&lt;br /&gt;/root/auto-mount-new-hdd&lt;br /&gt;&lt;br /&gt;    ก็ลอง reboot แล้วใช้คำสั่ง mount ดูว่า มัน mount ให้เราหรืเปล่า&lt;br /&gt;    โชคดีครับผม&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3765081089813271386?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3765081089813271386/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3765081089813271386' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3765081089813271386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3765081089813271386'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/12/xxxfv.html' title='เพิ่ม HDD ใหม่ใน Linux'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2714151183051789158</id><published>2008-10-15T17:40:00.000-07:00</published><updated>2008-12-20T06:35:16.975-08:00</updated><title type='text'>เพิ่ม traffic ด้วย card lan 2 ใบ</title><content type='html'>http://spalinux.com/2008/09/configure_ethernet_bonding_on_fedora_linux&lt;br /&gt;&lt;br /&gt;คอนฟิก Ethernet Bonding บน Fedora Linux&lt;br /&gt;Filed under: Networking — editor @ 12:42 am &lt;br /&gt;พอร์ตแลน (Ethernet) ของเครื่องเซิร์ฟเวอร์ถือว่าเป็นสิ่งสำคัญอย่างยิ่ง เพราะเป็นส่วนที่จะรับส่งข้อมูลกับเคื่องอื่นๆ ถ้าเซิร์ฟเวอร์มีแค่พอร์ตเดียวเชื่อมต่อเข้าเน็ตเวิร์ก แล้วสายที่เชื่อมต่อหลุดไป หรือไม่สามารถรองรับปริมาณการรับส่งข้อมูลได้เพียงพอ ก็อาจทำให้เกิดปัญหาการใช้งานได้&lt;br /&gt;&lt;br /&gt;ในบทความนี้ขอแนะนำการคอนฟิก Ethernet Bonding (หรือ Teaming) เพื่อแก้ปัญหาที่อาจเกิดขึ้น โดยจะมีการจัดกลุ่มพอร์ตแลนเข้าด้วยกัน เพื่อช่วยในการรับส่งข้อมูล รูปแบบการส่งจะมีสองแบบใหญ่ๆ คือ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Active-backup พอร์ตหนึ่งจะทำหน้าพอร์ตหลักเพื่อใช้รับส่งข้อมูล (Active) แต่อีกพอร์ตหนึ่งจะสำรอง (Backup) ไว้เฉยๆ ไม่มีการรับส่งข้อมูลใดๆ ผ่านทางพอร์ตสำรอง แต่เมื่อไรที่พอร์ตหลักมีปัญหาพอร์ตนี้จะรับส่งข้อมูลแทน สำหรับ Ethernet Bonding จะเป็นคอนฟิกใน mode 1 &lt;br /&gt;Load Balance พอร์ตทั้งหมดในกลุ่มจะช่วยกันรับส่งข้อมูล ส่วนเทคนิคในการรับส่งจะมีหลายแบบด้วยกันแล้วแต่ mode ที่คอนฟิก &lt;br /&gt;ในตัวอย่างจะเป็นการคอนฟิกบน Fedora 9 ซึ่งน่าจะประยุกต์ใช้กับ Fedora เวอร์ชั่นอื่นๆ,  CentOS, RedHat หรือลีนุกซ์ตัวอื่นๆ ได้&lt;br /&gt;&lt;br /&gt;เตรียมพอร์ตแลนที่จะคอนฟิกเป็น Ethernet Bonding&lt;br /&gt;ในตัวอย่างจะใช้พอร์ตแลน eth2 และ eth3 เพื่อคอนฟิกรวมเป็น bond0&lt;br /&gt;&lt;br /&gt;เริ่มต้นสร้างไฟล์ /etc/sysconfig/network-scripts/ifcfg-bond0 ซึ่งจะเป็นไฟล์คอนฟิกของ bond0 เป็นพอร์ต bonding (ในเครื่องหนึ่งสามารถจัดกลุ่มทำได้หลาย bonding พอร์ตที่คอนฟิกก็จะเป็น bond1, bond2 เป็นต้น) ในไฟล์จะมีคอนฟิก IP Address, Netmask เหมือนที่คอนฟิกพอร์ต ethernet ทั่วไป&lt;br /&gt;&lt;br /&gt;ตัวอย่างคอนฟิก ifcfg-bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-bond0&lt;br /&gt;DEVICE=bond0&lt;br /&gt;IPADDR=10.1.0.1&lt;br /&gt;NETMASK=255.255.255.0&lt;br /&gt;BROADCAST=10.1.0.255&lt;br /&gt;ONBOOT=yes&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;USERCTL=noคอนฟิกพอร์ต (Physical) ให้อยู่ในกลุ่ม bond0 ตามตัวอย่าง&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth2&lt;br /&gt;DEVICE=eth2&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USECTL=no[root@fc9-x1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth3&lt;br /&gt;DEVICE=eth3&lt;br /&gt;BOOTPROTO=none&lt;br /&gt;ONBOOT=yes&lt;br /&gt;MASTER=bond0&lt;br /&gt;SLAVE=yes&lt;br /&gt;USECTL=noแก้ไขไฟล์ /etc/modprobe.conf เพื่อให้โหลด kernel module สำหรับการทำ bonding ตอนที่มีการโหลดคอนฟิก bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /etc/modprobe.conf&lt;br /&gt;alias bond0 bonding&lt;br /&gt;options bonding miimon=100 mode=1สามารถระบุว่าจะทำ bonding เพื่อรับส่งข้อมูลแบบไหนได้จากคอนฟิก mode ดังนี้&lt;br /&gt;&lt;br /&gt;mode=0 (balance-rr) เป็นการส่งข้อมูลแบบ round-robin (load balancing, fault tolerance) &lt;br /&gt;mode=1 (active-backup) สถานการณ์ปกติจะมีพอร์ตเดียวเท่านั้นที่ใช้รับส่งข้อมูล (fault tolerance) &lt;br /&gt;mode=2 (balance-xor) เป็นการส่งข้อมูลแบบใช้ XOR เพื่อหาพอร์ตที่จะส่ง เช่นคำนวณจาก MAC Address ต้นทางปลายทางเป็นต้น (load balancing, fault tolerance) &lt;br /&gt;mode=3 (broadcast) &lt;br /&gt;mode=4 (802.3ad) เป็นส่งข้อมูลแบบ Link Aggregation Control Protocol (LACP) / 802.3ad &lt;br /&gt;mode=5 (balance-tlb) ส่งข้อมูลแบบ Adaptive transmit load balancing &lt;br /&gt;mode=6 (balance-alb) ส่งข้อมูลแบบ Adaptive load balancing &lt;br /&gt;หมายเหตุ รายละเอียดเพิ่มเติมดูได้จากไฟล์ /usr/share/doc/kernel-doc-2.6.25/Documentation/networking/bonding.txt จาก kernel-doc-2.6.25-14.fc9.noarch.rpm&lt;br /&gt;&lt;br /&gt;ในเริ่มต้นแนะนำให้ทดสอบกับ mode=1 เพื่อทดลอง active-backup ก่อน&lt;br /&gt;&lt;br /&gt;หลังจากสร้างไฟล์คอนฟิกทั้งหมดแล้ว รีบูตเครื่องหนึ่งครั้ง เผื่อให้ bond0 ถูกโหลดขึ้นมา&lt;br /&gt;&lt;br /&gt;ตรวจสอบสถานะของ Ethernet Bonding&lt;br /&gt;เมื่อเครื่องบูตเสร็จเรียบร้อย ถ้าถูกต้องเมื่อรันคำสั่ง ifconfig จะมีพอร์ต bond0 เพิ่มขึ้นมาตามตัวอย่าง&lt;br /&gt;&lt;br /&gt;[root@server ~]# ifconfig&lt;br /&gt;bond0     Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          inet addr:10.1.0.1  Bcast:10.1.0.255  Mask:255.255.255.0&lt;br /&gt;          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:13 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:0&lt;br /&gt;          RX bytes:1160 (1.1 KiB)  TX bytes:1574 (1.5 KiB)...eth2      Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:12 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:1000&lt;br /&gt;          RX bytes:1100 (1.0 KiB)  TX bytes:1574 (1.5 KiB)&lt;br /&gt;          Interrupt:16 Base address:0x1824eth3      Link encap:Ethernet  HWaddr 00:0C:22:FF:11:55&lt;br /&gt;          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1&lt;br /&gt;          RX packets:1 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;          collisions:0 txqueuelen:1000&lt;br /&gt;          RX bytes:60 (60.0 b)  TX bytes:0 (0.0 b)&lt;br /&gt;          Interrupt:17 Base address:0x18a4ข้อสังเกตจากคำสั่ง ifconfig&lt;br /&gt;&lt;br /&gt;HWaddr หรือ MAC Address ของแต่ละพอร์ตที่ทำ bonding ด้วยกันจะเป็นค่าเดียวกันหมด ทั้งนี้เพื่อประโยชน์ในการทำ fail over &lt;br /&gt;ในโหมด active-backup ปกติจะมีพอร์ตเดียวทำหน้าที่เป็นหลักใช้ในการรับส่งข้อมูล ซึ่งดูได้จากค่า RX, TX packets &lt;br /&gt;หากต้องการรู้ว่าพอร์ตไหนถูกใช้เป็นหลัก (active) ในการส่งข้อมูล สามารถดูได้จากไฟล์ /proc/net/bonding/bond0&lt;br /&gt;&lt;br /&gt;ตัวอย่างไฟล์ /proc/net/bonding/bond0&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /proc/net/bonding/bond0&lt;br /&gt;Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)&lt;br /&gt;Primary Slave: None&lt;br /&gt;Currently Active Slave: eth2&lt;br /&gt;MII Status: up&lt;br /&gt;MII Polling Interval (ms): 100&lt;br /&gt;Up Delay (ms): 0&lt;br /&gt;Down Delay (ms): 0Slave Interface: eth2&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:56จากตัวอย่างพอร์ตหลักที่ถูกใช้ในโหมด (active-backup) คือพอร์ต eth2 ดูได้จาก Currently Active Slave: eth2&lt;br /&gt;&lt;br /&gt;ทดสอบการ fail over&lt;br /&gt;แนะนำว่าก่อนที่จะดึงสายแลนให้รันคำสั่ง ping ทิ้งไว้ เพื่อดูว่าเวลาที่มีการ fail over จะยังส่งข้อมูลต่อไปได้เลยไหม&lt;br /&gt;&lt;br /&gt;ทดลองดึงสายออกจากพอร์ต eth2 แล้วตรวจสอบไฟล์ /proc/net/bonding/bond0 อีกครั้ง จะเห็นว่าพอร์ต eth3 จะถูกนำมาใช้เป็นหลักในการรับส่งข้อมูลแทน แล้วคำสั่ง ping ก็ยังคงทำงานอยู่ อาจมีสะดุดไปบ้างเล็กน้อย&lt;br /&gt;&lt;br /&gt;[root@fc9-x1 ~]# cat /proc/net/bonding/bond0&lt;br /&gt;Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)Bonding Mode: fault-tolerance (active-backup)&lt;br /&gt;Primary Slave: None&lt;br /&gt;Currently Active Slave: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;MII Polling Interval (ms): 100&lt;br /&gt;Up Delay (ms): 0&lt;br /&gt;Down Delay (ms): 0Slave Interface: eth2&lt;br /&gt;MII Status: down&lt;br /&gt;Link Failure Count: 1&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:55Slave Interface: eth3&lt;br /&gt;MII Status: up&lt;br /&gt;Link Failure Count: 0&lt;br /&gt;Permanent HW addr: 00:0c:22:ff:11:56จากผลลัพธ์จะแสดงสถานะของ bonding ต่างๆ ดังนี้&lt;br /&gt;&lt;br /&gt;Currently Active Slave: eth3 พอร์ตหลักที่ใช้รับส่งข้อมูลตอนนี้ &lt;br /&gt;Slave Interface: eth2, MII Status: down สถานะของพอร์ต eth2 down &lt;br /&gt;Link Failur Count: 1 แสดงตัวเลขจำนวนครั้งที่พอร์ตมีปัญหา &lt;br /&gt;สุดท้ายทดสอบด้วยการเสียบสายกลับเข้าไปที่พอร์ตที่ 2 จะเห็นว่าไม่มีการ fail over กลับมาที่พอร์ต eth2 พอร์ต eth3 จะยังคงเป็นหลักในการรับส่งข้อมูลอยู่&lt;br /&gt;&lt;br /&gt;*******************************************************************&lt;br /&gt;Debian&lt;br /&gt;Ethernet bonding on Debian&lt;br /&gt;โดย: โสทร รอดคงที่  srk@hospital-os.com &lt;br /&gt;วันที่: วันที่เขียน 22 สิงหาคม 2548&lt;br /&gt;ปรังปรุงจาก: -&lt;br /&gt;ปรับปรุงล่าสุด:  - &lt;br /&gt;แหล่งข้อมูล:&lt;br /&gt;http://glasnost.beeznest.org/articles/179&lt;br /&gt;http://www.jebus.ca/Linux/ethernet_bonding.php &lt;br /&gt;http://lists.debian.org/debian-user-spanish/2004/05/msg00220.html  &lt;br /&gt;&lt;br /&gt;เกริ่นนำ: &lt;br /&gt;&lt;br /&gt;หลังจากที่ได้ทำลองทำ Ethernet Bonding บน Red Hat สำเร็จ ก็ได้ทดลองทำ บน Debian บ้าง &lt;br /&gt;ปรากฏว่ามีอะไรหลายอย่างที่ไม่เหมือน Red Hat เอกสารบางอย่างที่ค้นมาทำไม่สำเร็จก็มี&lt;br /&gt;ที่ทดลองทำสำเร็จ มี 2 วิธีซึ่งไม่ทราบเหมือนกันว่าอันไหนจะดีกว่ากัน ที่เขียนไม่ได้หวัง ว่าจะให้ทำ bonding ได้นะครับ&lt;br /&gt;คิดว่ามาเริ่มต้นเรียนรู้ Debian กันดีกว่า&lt;br /&gt;&lt;br /&gt;สิ่งจำเป็น:&lt;br /&gt;คอมพิวเตอร์ ใส่ Lan Card 2 อัน ติดตั้ง linux Debian &lt;br /&gt;&lt;br /&gt;ขั้นตอนการทำ&lt;br /&gt;&lt;br /&gt;ทั้งสองวิธีมีวิธีการทำที่เหมือนกันคือ&lt;br /&gt;&lt;br /&gt;ติดตั้ง package ifenslave-2.4 (kernel 2.4) ifenslave-2.6 (kernel 2.6)&lt;br /&gt;ใครใช้ kernel ไหนอยู่ก็ติดตั้ง ตาม Kernel นั้นนะครับ&lt;br /&gt;การติดตั้ง เครื่องที่จะติดตั้งต้องสามารถใช้ งาน Internet ได้&lt;br /&gt;&lt;br /&gt;แก้ไฟล์ /etc/apt/sources.list เพื่อระบุที่ที่เราจะไปดาวน์โหลดโปรแกรม&lt;br /&gt;vi /etc/apt/sources.list&lt;br /&gt;เพิ่ม&lt;br /&gt;deb http://ftp.au.debian.org/debian/ stable main&lt;br /&gt;deb-src http://ftp.au.debian.org/debian/ stable main&lt;br /&gt;                                                                                &lt;br /&gt;deb http://security.debian.org/ stable/updates main&lt;br /&gt;&lt;br /&gt;#ผมชอบดาวน์โหลดจากออสเตรเลีย รู้สึกว่าเร็วกว่า&lt;br /&gt;&lt;br /&gt;apt-get update&lt;br /&gt;&lt;br /&gt;apt-get install ifenslave-2.4&lt;br /&gt;หรือ&lt;br /&gt;apt-get install ifenslave-2.6&lt;br /&gt;&lt;br /&gt;แค่นี้ก็ติดตั้งเสร็จแล้ว&lt;br /&gt;การใช้งาน apt-get ดูรายละเอียดจากของพี่อุทัยนะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;แก้ไฟล์ /etc/modules.conf&lt;br /&gt;เพิ่มบรรทัดนี้เข้าไป&lt;br /&gt;alias bond0 bonding&lt;br /&gt;options bonding maxbonds=4 mode=6 miimon=100 หรือ&lt;br /&gt;/etc/modprobe.d/arch/i386&lt;br /&gt;alias bond0 bonding&lt;br /&gt;options bonding mode=1 miimon=100 downdelay=200 updelay=200&lt;br /&gt;&lt;br /&gt;option ต่างๆ ดูได้จาก&lt;br /&gt;&lt;br /&gt;http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt&lt;br /&gt;ยังไม่ชำนาญ Debian นะครับ ไม่สามารถอะธิบายได้ว่า&lt;br /&gt;/etc/modules.conf และ /etc/modprobe.d/arch/i386 มีหน้าที่ยังไง&lt;br /&gt;ดูๆ แล้วก็เหมือน ๆ กัน ใครเซียน Debian ก็บอกมาหน่อยก็แล้วกันนะครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;วิธีการทำ Bonding 2 วิธีนี้ อันนี้เป็นตัวอย่าง&lt;br /&gt;ประยุกต์ใช้งานเอาเองนะครับ&lt;br /&gt;&lt;br /&gt;วิธีที่ 1&lt;br /&gt;สร้างไฟล์ rc.local ใน /etc/init.d&lt;br /&gt;cd /etc/init.d&lt;br /&gt;touch rc.local &lt;br /&gt;แล้วก็ทำ link&lt;br /&gt;ln -s /etc/init.d/rc.local /etc/rc2.d/S99rc.local&lt;br /&gt;chmod 755 rc.local&lt;br /&gt;&lt;br /&gt;แก้ไฟล์ /etc/init.d/rc.local &lt;br /&gt;อาจจะใช้ VI หรือ Text Editor ที่ ท่านถนัด&lt;br /&gt;vi rc.local&lt;br /&gt;&lt;br /&gt;โดยเพิ่มข้อคความเหล่านี้&lt;br /&gt;&lt;br /&gt;/etc/init.d/networking stop&lt;br /&gt;modprobe bonding max_bonds=2&lt;br /&gt;ifconfig bond0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up&lt;br /&gt;ifconfig eth0 up&lt;br /&gt;ifconfig eth1 up&lt;br /&gt;ifenslave bond0 eth0 eth1&lt;br /&gt;route add default gw 192.168.1.254&lt;br /&gt;&lt;br /&gt;วิธีที่ 2&lt;br /&gt;&lt;br /&gt;แก้ไฟล์ /etc/network/interface&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;auto bond0&lt;br /&gt;iface bond0 inet static&lt;br /&gt;address 192.168.1.1&lt;br /&gt;netmask 255.255.255.0&lt;br /&gt;gateway 192.168.1.254&lt;br /&gt;pre-up ifconfig eth0 up&lt;br /&gt;pre-up ifconfig eth1 up&lt;br /&gt;up ifenslave bond0 eth0 eth1&lt;br /&gt;down ifenslave -d bond0 eth0 eth1&lt;br /&gt;post-down ifconfig eth0 down&lt;br /&gt;post-down ifconfig eth1 down&lt;br /&gt;&lt;br /&gt;เสร็จแล้วครับทั้งสองวิธีนี้สามารถใช้งานได้&lt;br /&gt;ตามที่ได้ทดลองมา วิธีไหนดีกว่า &lt;br /&gt;หรือวิธีไหนถูกต้องที่สุดก็ไม่อาจทราบได้&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2714151183051789158?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2714151183051789158/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2714151183051789158' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2714151183051789158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2714151183051789158'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/10/traffic-card-lan-2.html' title='เพิ่ม traffic ด้วย card lan 2 ใบ'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5370649207914305396</id><published>2008-09-05T20:39:00.001-07:00</published><updated>2008-09-05T20:39:46.587-07:00</updated><title type='text'>ipset เบื้องต้น</title><content type='html'>ตามที่มีคนถามเข้ามา ด้วยส่วนตัวใช้ ipset มาบ้างพอสมควร จึงจะลองเล่าให้ฟังละกันครับ&lt;br /&gt;&lt;br /&gt;ipset เป็นชุดโปรแกรมที่ทำงานทั้งในส่วน kernelspace และ userspace และจากที่มีการทำงานในส่วน kernelspace จึงต้องมี module สำหรับ kernel ที่เรากำลังใช้งานอยู่ด้วย ดังนั้น การใช้งาน ipset จะต้องเตรียม 2 ส่วน ดังนี้&lt;br /&gt;&lt;br /&gt;   1. เตรียม kernel&lt;br /&gt;&lt;br /&gt;      # aptitude install netfilter-extensions module-assistant&lt;br /&gt;&lt;br /&gt;      เริ่ม build module ด้วยการเตรียมความพร้อมก่อน&lt;br /&gt;&lt;br /&gt;      # m-a prepare&lt;br /&gt;&lt;br /&gt;      build จริง&lt;br /&gt;&lt;br /&gt;      # m-a a-i netfilter-extensions&lt;br /&gt;&lt;br /&gt;      หลังจากทำการ build สำเร็จ ระบบจะติดตั้ง module ให้โดยอัตโนมัติ&lt;br /&gt;   2. เตรียม userspace&lt;br /&gt;&lt;br /&gt;      ขั้นตอนนี้ไม่มีอะไรมาก เนื่องจากมีคนเตรียมไว้ให้แล้วใน Debian&lt;br /&gt;&lt;br /&gt;      # aptitude install ipset&lt;br /&gt;&lt;br /&gt;ต่อไปลองทดสอบ&lt;br /&gt;&lt;br /&gt;# iptables -m set&lt;br /&gt;iptables v1.4.1.1: You must specify `--set' with proper arguments&lt;br /&gt;Try `iptables -h' or 'iptables --help' for more information.&lt;br /&gt;&lt;br /&gt;ขึ้นลักษณะนี้ น่าจะใช้ได้แล้วครับ&lt;br /&gt;&lt;br /&gt;วิธีใช้งาน&lt;br /&gt;&lt;br /&gt;   1. สร้าง set ก่อน ในที่นี้จะแนะนำการใช้ macipmap&lt;br /&gt;&lt;br /&gt;      # ipset -N [setnam] [settype] --from [ip1] --to [ip2]&lt;br /&gt;      # ipset -N myset macipmap --from 192.168.0.10 --to 192.168.0.250&lt;br /&gt;&lt;br /&gt;   2. ดู set&lt;br /&gt;&lt;br /&gt;      # ipset -nL&lt;br /&gt;      Name: myset&lt;br /&gt;      Type: macipmap&lt;br /&gt;      References: 0&lt;br /&gt;      Default binding: &lt;br /&gt;      Header: from: 192.168.0.10 to: 192.168.0.250&lt;br /&gt;      Members:&lt;br /&gt;      Bindings:&lt;br /&gt;&lt;br /&gt;   3. เพิ่ม ip+mac เข้าไปใน set&lt;br /&gt;&lt;br /&gt;      # ipset -A myset 192.168.0.11:AA:BB:CC:DD:EE:FF&lt;br /&gt;      # ipset -nL&lt;br /&gt;      Name: myset&lt;br /&gt;      Type: macipmap&lt;br /&gt;      References: 0&lt;br /&gt;      Default binding: &lt;br /&gt;      Header: from: 192.168.0.10 to: 192.168.0.250&lt;br /&gt;      Members:&lt;br /&gt;      192.168.0.11:AA:BB:CC:DD:EE:FF&lt;br /&gt;      Bindings:&lt;br /&gt;&lt;br /&gt;      จะเห็นว่ามี IP และ MAC เพิ่มเข้ามาใน set แล้ว :P&lt;br /&gt;   4. ใช้งานร่วมกับ iptables&lt;br /&gt;&lt;br /&gt;      # iptables -A FORWARD -m set --set myset src -j ACCEPT&lt;br /&gt;&lt;br /&gt;      ผลที่ได้คือ ถ้า packet ไหนที่ผ่านเข้ามา แล้วพบใน set ก็จะยอมให้ผ่านไปได้ครับ&lt;br /&gt;   5. ถ้าจะลบ ip+mac ออกจาก set ก็ทำได้ง่าย คือ&lt;br /&gt;&lt;br /&gt;      # ipset -D myset 192.168.0.11:AA:BB:CC:DD:EE:FF&lt;br /&gt;&lt;br /&gt;      เท่านี้ ก็ถูกลบออกจาก set แล้วครับ &lt;br /&gt;&lt;br /&gt;ข้อดี ของ ipset คือ "ความเร็ว" เพราะในการตรวจสอบ ทำผ่าน iptables rule แค่ที่เดียว และอีกอย่างคือ สามารถ ควบคุม rule ได้แบบ dynamic โดยที่ไม่ต้องโหลด iptables rule ใหม่ แก้ ip+mac ผ่านทาง ipset ได้โดยตรง&lt;br /&gt;&lt;br /&gt;ipset เป็นอีกหนึ่งชุดโปรแกรม ที่ผมใช้แล้วชอบ โดยขณะนี้ได้นำมาดัดแปลงทำเป็น NAS (Network Access Service) คือทำลักษณะเดียวกับ CoovaChilli ถ้าผ่านช่วง alpha เมื่อไร จะเปิดโปรเจกต์ให้ผู้ที่สนใจ นำไปทดสอบครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5370649207914305396?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5370649207914305396/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5370649207914305396' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5370649207914305396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5370649207914305396'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/09/ipset.html' title='ipset เบื้องต้น'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-342972775056718793</id><published>2008-09-05T20:38:00.001-07:00</published><updated>2008-09-05T20:38:42.427-07:00</updated><title type='text'>เก็บ IP Traffic Log ด้วย ulogd (Debian Admin Style)</title><content type='html'>จริง ๆ ก็ครบกำหนดการเก็บข้อมูลการจราจร (IP Traffic) ตั้งแต่วันที่ 23 สิงหาคม 2551 (1 ปี ให้หลัง จากประกาศ) แต่ด้วยวุ่น ๆ กับหลายเรื่อง (ลูกสาวก็อายุ 3 เดือนแล้วครับ :P) ก็ลองหาการเก็บ log ในแบบที่เราคุ้นเคย และพยายามไม่ให้กระทบกับ performance ของระบบ ก็เลยได้ลงเอยกับ ulogd กับ ulogd-pcap (ตอนนี้ เป็น version 1.24 ส่วน version 2 ยังเป็นรุ่นทดสอบ ที่พยายาม build แล้ว ยังไม่สำเร็จ :P)&lt;br /&gt;&lt;br /&gt;เริ่มเลยละกันครับ&lt;br /&gt;&lt;br /&gt;   1. ติดตั้ง packages ที่จำเป็น&lt;br /&gt;&lt;br /&gt;      # aptitude install ulogd ulogd-pcap tshark&lt;br /&gt;&lt;br /&gt;   2. เขียน script มาจัดการเกี่ยวกับ log&lt;br /&gt;&lt;br /&gt;      # vi /usr/local/bin/traffic-ulogd.sh&lt;br /&gt;&lt;br /&gt;      #!/bin/sh&lt;br /&gt;&lt;br /&gt;      ULOGD_CONF_TPL=/etc/ulogd.conf.tpl&lt;br /&gt;      ULOGD_CONF=/etc/ulogd.conf&lt;br /&gt;      LOG_DIR=/home/log/ip-traffic&lt;br /&gt;&lt;br /&gt;      PARENT_DIR=`date +%Y-%m`&lt;br /&gt;      PARENT_DIR="$LOG_DIR/$PARENT_DIR"&lt;br /&gt;&lt;br /&gt;      DAILY_LOG=`date +%Y-%m-%d`&lt;br /&gt;      DAILY_LOG="$PARENT_DIR/$DAILY_LOG.pcap"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      # Copy original debian ulogd.conf file to be&lt;br /&gt;      # the future config template.&lt;br /&gt;      if [ ! -f $ULOGD_CONF_TPL ]; then&lt;br /&gt;        echo "Copying default $ULOGD_CONF to $ULOGD_CONF_TPL"&lt;br /&gt;        cp $ULOGD_CONF $ULOGD_CONF_TPL&lt;br /&gt;      fi&lt;br /&gt;&lt;br /&gt;      # Create the directory structure for logging&lt;br /&gt;      if [ ! -d $PARENT_DIR ]; then&lt;br /&gt;        echo "Make directory $PARENT_DIR"&lt;br /&gt;        mkdir -p $PARENT_DIR&lt;br /&gt;      fi&lt;br /&gt;&lt;br /&gt;      # Edit template config file&lt;br /&gt;      cat $ULOGD_CONF_TPL | \&lt;br /&gt;        sed -e 's:^#\(plugin="/usr/lib/ulogd/ulogd_PCAP.so"\):\1:g' | \&lt;br /&gt;        sed -e "s:/var/log/ulog/pcap.log:$DAILY_LOG:g" &gt; /tmp/ulogd.conf&lt;br /&gt;&lt;br /&gt;      mv /tmp/ulogd.conf $ULOGD_CONF&lt;br /&gt;&lt;br /&gt;      # Restarting to reload config file&lt;br /&gt;      /etc/init.d/ulogd restart&lt;br /&gt;&lt;br /&gt;      เป็น script ที่จะคอยจัดการเกี่ยวกับ directory สำหรับจัดเก็บ ในรูปแบบ 2008-08, 2008-09 และจัดเก็บ log file ในรูปแบบ 2008-08-26.pcap,...&lt;br /&gt;&lt;br /&gt;      # chmod u+x /usr/local/bin/traffic-ulogd.sh&lt;br /&gt;      # /usr/local/bin/traffic-ulogd.sh&lt;br /&gt;&lt;br /&gt;      สั่งให้ script จัด config ให้ และเริ่มรอการ log&lt;br /&gt;   3. กำหนด iptables rule ให้ทำการ log&lt;br /&gt;&lt;br /&gt;      # iptables -I FORWARD -j ULOG --ulog-cprange 100 --ulog-qthreshold 50&lt;br /&gt;&lt;br /&gt;   4. ลองดูคร่าว ๆ ว่ามี packet ผ่านเข้า log ไหม&lt;br /&gt;&lt;br /&gt;      # iptables -nvL FORWARD&lt;br /&gt;      Chain FORWARD (policy ACCEPT 211M packets, 106G bytes)&lt;br /&gt;       pkts bytes target  prot opt in  out  source     destination&lt;br /&gt;        14M 7502M ULOG    all  --  *   *    0.0.0.0/0  0.0.0.0/0    ULOG copy_range 100 nlgroup 1 queue_threshold 50&lt;br /&gt;&lt;br /&gt;      จะเห็นว่ามี Packet วิ่งเข้า rule นี้ด้วย :P&lt;br /&gt;   5. ดูแฟ้มที่จัดเก็บ log (ผมเก็บไว้ที่ /home เพราะแบ่งพื้นที่ไว้เยอะที่นี่)&lt;br /&gt;&lt;br /&gt;      # cd /home/log/ip-traffic/2008-08&lt;br /&gt;      # ls&lt;br /&gt;      2008-08-26.pcap&lt;br /&gt;      # file 2008-08-26.pcap&lt;br /&gt;      2008-08-26.pcap: tcpdump capture file (little-endian) - version 2.4 (raw IP, capture length 65535)&lt;br /&gt;&lt;br /&gt;      อ้า... ใช่แล้วครับ เป็น ลักษณะ tcpdump capture file :P (binary ด้วย ... เห็นเขาบอกให้เก็บในรูปแบบที่น่าเชื่อถือได้ ไม่รู้ตัวนี้น่าเชื่อถือพอหรือเปล่า :P)&lt;br /&gt;   6. ลองดู log ข้างในแฟ้มนี้ดู&lt;br /&gt;&lt;br /&gt;      # tshark -r 2008-08-26.pcap -tad -c 5&lt;br /&gt;      Running as user "root" and group "root". This could be dangerous.&lt;br /&gt;       1 2008-08-26 03:31:34.464265 172.30.10.18 -&gt; 80.252.110.146 TCP acter &gt; kar2ouche [SYN] Seq=0 Win=16384 Len=0 MSS=1452&lt;br /&gt;       2 2008-08-26 03:31:34.537428 172.30.10.102 -&gt; 64.71.134.246 TCP ft-role &gt; https [SYN] Seq=0 Win=16384 Len=0 MSS=1452&lt;br /&gt;       3 2008-08-26 03:31:34.565095 172.30.10.18 -&gt; 66.199.250.170 TCP appiq-mgmt &gt; manyone-xml [SYN] Seq=0 Win=16384 Len=0 MSS=1452&lt;br /&gt;       4 2008-08-26 03:31:34.568396 172.30.10.18 -&gt; 219.239.90.172 TCP rfa &gt; 28221 [SYN] Seq=0 Win=16384 Len=0 MSS=1452&lt;br /&gt;       5 2008-08-26 03:31:34.571477 172.30.10.18 -&gt; 72.51.37.237 TCP cxws &gt; ospf-lite [SYN] Seq=0 Win=16384 Len=0 MSS=145&lt;br /&gt;&lt;br /&gt;      ขอดูแค่ 5 packets ก่อนละกัน&lt;br /&gt;&lt;br /&gt;      -r 2008-08-26.pcap (read from file)&lt;br /&gt;      -tad (Absolute date)&lt;br /&gt;      -c 5 (5 packets count and exit)&lt;br /&gt;&lt;br /&gt;   7. เป็นอันว่า เก็บได้ ก็น่าจะเรียบร้อย ตอนนี้ก็เหลือให้ script เราทำงานเป็นช่วง ๆ เพื่อจัดการเรื่องชื่อไฟล์ให้ถูกต้อง&lt;br /&gt;&lt;br /&gt;      # vi /etc/cron.d/traffic-log&lt;br /&gt;&lt;br /&gt;      0 */1     * * *     root  /usr/local/bin/traffic-ulogd.sh &gt;/dev/null 2&gt;&amp;1&lt;br /&gt;&lt;br /&gt;      # /etc/init.d/cron restart&lt;br /&gt;&lt;br /&gt;      เป็นการกำหนดให้ระบบ run script นี้ ทุก ๆ ชั่วโมง (กันพลาด เดี๋ยว log ในแฟ้ม จะไม่ตรงกับวันเวลาจริง แต่ถ้าเครื่องเปิดตลอดเวลาไม่น่ามีปัญหา) เท่านี้ก็น่าจะเรียบร้อยแล้วครับผม ตอนนี้ก็เหลือดูผลว่าไฟล์ใหญ่แค่ไหน อาจจะต้องมีการมาทำ archive อีกที เดี๋ยวค่อยมาว่ากันต่อคราวหน้าละกันครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-342972775056718793?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/342972775056718793/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=342972775056718793' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/342972775056718793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/342972775056718793'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/09/ip-traffic-log-ulogd-debian-admin-style.html' title='เก็บ IP Traffic Log ด้วย ulogd (Debian Admin Style)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-215453308301888853</id><published>2008-09-05T07:40:00.000-07:00</published><updated>2008-09-05T07:49:38.190-07:00</updated><title type='text'>How to install Cacti in Debian Etch</title><content type='html'>http://www.cahilig.org/how-install-cacti-debian-etch&lt;br /&gt;&lt;br /&gt;Cacti has a nice user interface. It is easy to install and easy to setup, don't need too much customization.&lt;br /&gt;Downloading Cacti&lt;br /&gt;&lt;br /&gt;You can download the newest version of Cacti from its website http://cacti.net/.&lt;br /&gt;wget http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz&lt;br /&gt;Installing Cacti&lt;br /&gt;&lt;br /&gt;Install apache webserver with php support, mysql database server, snmp, some php modules and rrdtool.&lt;br /&gt;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&lt;br /&gt;&lt;br /&gt;Add a user account for cacti.&lt;br /&gt;groupadd cacti&lt;br /&gt;useradd -g cacti cacti&lt;br /&gt;&lt;br /&gt;Untar the cacti source file and move to /var/www.&lt;br /&gt;tar -zxvf cacti-0.8.7b.tar.gz&lt;br /&gt;mv cacti-0.8.7b /var/www&lt;br /&gt;&lt;br /&gt;Login to your mysql database&lt;br /&gt;mysql -u root&lt;br /&gt;&lt;br /&gt;Create a password for your mysql root account and create cacti database and user.&lt;br /&gt;SET PASSWORD FOR root@localhost = PASSWORD ('your_password_here');&lt;br /&gt;CREATE DATABASE cacti;&lt;br /&gt;GRANT ALL ON cacti.* TO cacti_user@localhost IDENTIFIED BY 'your_password';&lt;br /&gt;quit&lt;br /&gt;&lt;br /&gt;and import the database tables&lt;br /&gt;cd /var/www/cacti-0.8.7b/&lt;br /&gt;mysql -u root -p cacti &lt; cacti.sql&lt;br /&gt;&lt;br /&gt;Change the owner of rra and log directory to your cacti account.&lt;br /&gt;chown -R cacti rra/ log/&lt;br /&gt;&lt;br /&gt;Edit the config.php file located in include directory.&lt;br /&gt;vi include/config.php&lt;br /&gt;&lt;br /&gt;Enter your mysql host, user, password and database name.&lt;br /&gt;&lt;br /&gt;/* make sure these values refect your actual database/host/user/password */&lt;br /&gt;$database_type = "mysql";&lt;br /&gt;$database_default = "cacti";&lt;br /&gt;$database_hostname = "localhost";&lt;br /&gt;$database_username = "cacti";&lt;br /&gt;$database_password = "your_password";&lt;br /&gt;$database_port = "3306";&lt;br /&gt;&lt;br /&gt;As a cacti user&lt;br /&gt;su - cacti&lt;br /&gt;crontab -e&lt;br /&gt;&lt;br /&gt;add this line to your crontab&lt;br /&gt;&lt;br /&gt;*/5 * * * * /usr/bin/php /var/www/cacti-0.8.7b/poller.php &gt; /dev/null 2&gt;&amp;1&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;Login to cacti, the default username and password is admin. After login, it will prompt you change your password for security reasons.&lt;br /&gt;Checking&lt;br /&gt;&lt;br /&gt;Check your syslog if the cacti's poller is running every 5 minutes.&lt;br /&gt;If you will see something like this in your syslog, your cacti should work perfectly.&lt;br /&gt;&lt;br /&gt;Jul  5 06:50:01 server1 /USR/SBIN/CRON[6543]: (cacti) CMD (/usr/bin/php /var/www/cacti/poller.php &gt; /dev/null 2&gt;&amp;1)&lt;br /&gt;&lt;br /&gt;You can start monitoring your servers, routers and other networking devices with cacti&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-215453308301888853?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/215453308301888853/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=215453308301888853' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/215453308301888853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/215453308301888853'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/09/how-to-install-cacti-in-debian-etch.html' title='How to install Cacti in Debian Etch'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3189220618652243363</id><published>2008-09-02T08:57:00.000-07:00</published><updated>2008-09-02T08:59:14.334-07:00</updated><title type='text'>How to install PHP5,Apach2.2,MySQL5 by manual compile.</title><content type='html'>&lt;a title="How to install PHP5,Apach2.2,MySQL5 by manual compile." href="http://www.aoddy.com/2007/12/08/how-to-install-php5apach22mysql5-by-manual-compile/" rel="bookmark"&gt;How to install PHP5,Apach2.2,MySQL5 by manual compile.&lt;/a&gt;&lt;br /&gt;ได้รับมอบหมายให้ Install OS พร้อม Software จำพวก Apache, PHP5 แล้วก็ MySQL5 เริ่มแรกเราก็ไปหา source file มาก่อน เตรียมๆ เอาไว้ ดังนี้&lt;br /&gt;&lt;a href="http://httpd.apache.org/download.cgi"&gt;Apache 2.2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dev.mysql.com/downloads/mysql/5.2.html"&gt;MySQL 5.0.37&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.php.net/downloads.php"&gt;PHP 5.2.1&lt;/a&gt;&lt;br /&gt;ลำดับการติดตั้ง ก็ตามนี้ครับ&lt;br /&gt;การติดตั้ง Apache 2.2&lt;br /&gt;การติดตั้ง MySQL 5.0.37 : &lt;a href="http://laffers.net/howtos/howto-install-mysql"&gt;http://laffers.net/howtos/howto-install-mysql&lt;/a&gt;&lt;br /&gt;การติดตั้ง PHP 5.2.1&lt;br /&gt;*** ไอ้ Apache กะ MySQL เนี้ยจะอันไหนก่อนก็ได้นะครับ แต่ PHP ขอเป็นอันท้ายสุดละกัน..เวลา Compile มันต้องทำให้ PHP รู้จักกับ Apache&amp;amp;MySQL ด้วยอ่ะครับ (การ set prefix) มาเริ่มกันเลยดีกว่าครับ…&lt;br /&gt;1. การติดตั้ง Apache 2.2# tar xvfj httpd-2.2.4.tar.bz2 -&gt; อันนี้ถ้าเรา Download มาเป็น .tar.gz ก็ใช้ tar xvfz httpd-2.2.4.tar.gz ครับ# cd httpd-2.2.4# ./configure –prefix=/usr/local/apache2 -&gt; prefix ตรงนี้เป็น option ที่ให้เรากำหนดว่าเราจะเอา ไฟล์ที่ จะ install ไปไว้ที่ path ไหน# make -&gt; เริ่มทำการ Compile# make install -&gt; install ครับ&lt;br /&gt;เป็นอันเสร็จสิ้นในส่วนของ Apache&lt;br /&gt;2. การติดตั้ง MySQL 5.0.37&lt;br /&gt;อันนี้ก็คล้ายๆ กับ apache ครับ&lt;br /&gt;# tar xvfz mysql-5.0.37.tar.gz# cd mysql-5.0.37# ./configure –prefix=/usr/local/mysql5 -&gt; ถ้าอยากรู้ว่า default เป็นอะไร ก็ให้ลองพิมพ์ ./configure –help# make -&gt; เริ่มทำการ Compile# make install -&gt; 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 &amp;amp; -&gt; 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 &amp;amp;เป็นอันเสร็จสิ้น ในส่วนของ mysql&lt;br /&gt;3. การติดตั้ง PHP 5.2.1&lt;br /&gt;สำหรับ 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เป็นอันเสร็จพิธีทั้งหมด..&lt;br /&gt;หลังจากนี้เราก็มาดูวิธีการ Start Service แต่ละตัวกันครับมาเริ่มที่&lt;br /&gt;apache : /usr/local/apache2/bin/apachectl start ** อันนีเราสามารถเปลี่ยนได้เป็น start/stop/restart ครับ&lt;br /&gt;mysql : /usr/local/mysql5/bin/mysqld_safe –user=mysql &amp;amp;&lt;br /&gt;php : อันนี้ไม่ต้อง start ครับมันจะถูกผูกให้โดยอัตโมมัติ ตอนที่เรา compile นั่นเอง&lt;br /&gt;คราวนี้เราก็มาดูกันครับว่า..ไอ้ที่เรา ติดตั้งไป มันใช้ได้เปล่า…ก็ให้ลอง เขียน script php ขึ้นมาซักอันครับเช่นphpinfo();?&gt;save เป็นชื่อไฟล์ว่า noi.php (noi เป็นชื่อสาวครับ..ผมจีบอยู่ อิๆ) แล้วก็เอาไปวางไว้ที่ path /usr/local/apache2/htdocs/ หลังจากนั้นก็ไปเครื่องอื่น..แล้วลองใช้โปรแกรม Web Browser เรียกหน้าดังกล่าวดู เช่น http://192.168.168.12/noi.php&lt;br /&gt;ถ้าได้หน้าตาเว็บเป็นแบบนี้ก็แสดงว่า..โอเคครับ&lt;br /&gt;&lt;a title="index.jpg" href="http://www.aoddy.com/wp-content/uploads/2007/12/index.jpg"&gt;&lt;/a&gt;จบ..ครับ เดี๋ยวคราวหน้าจะมาพูดถึงการติดตั้ง ProFTFD กันพร้อมกับ ตัวอย่างการ Config สำหรับคราวนี้เอาไว้แค่นี้ก่อนละกันครับพี่น้องงงงงงงง สวัสดี&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3189220618652243363?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3189220618652243363/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3189220618652243363' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3189220618652243363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3189220618652243363'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/09/how-to-install-php5apach22mysql5-by.html' title='How to install PHP5,Apach2.2,MySQL5 by manual compile.'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8287085894758037397</id><published>2008-09-01T00:12:00.000-07:00</published><updated>2008-09-01T00:15:19.569-07:00</updated><title type='text'>การ mount Handy drive</title><content type='html'>http://bluestulip.blogspot.com/2006/02/how-to-mount-usb-handy-drive-in-nix.html&lt;br /&gt;&lt;br /&gt;mkdir /mnt/sdb1/&lt;br /&gt;mount -t vfat /dev/sdb1/ /mnt/sdb/&lt;br /&gt;&lt;br /&gt;การ mount Handy drive บน FreeBSD&lt;br /&gt;&lt;br /&gt;บน FreeBSD 5.3 หรือสูงกว่านะครับ แต่คาดว่า 5.0 ก็น่าจะได้นะ&lt;br /&gt;&lt;br /&gt;1. เสียบ handy drive ที่ server&lt;br /&gt;2. ที่ command line พิมพ์ mount -t msdos /dev/da0s1 /mnt&lt;br /&gt;2. cd /mnt เราก็จะเจอข้อมูลครับ&lt;br /&gt;&lt;br /&gt;หมายเหตุ เมื่อ da0s1 คือ ชื่ออุปกรณ์ที่ freebsd รายงานออกมาให้เราทราบตอนทำขั้นตอนที่ 1&lt;br /&gt;ส่วน /mnt คือไดเรกทรอรีที่เราต้องการชี้ไปยังข้อมูลที่ต้องการ&lt;br /&gt;&lt;br /&gt;ผมคิดว่าก่อนดึง handy drive ออก สามารถใช้คำสั่ง&lt;br /&gt;&lt;br /&gt;umount /dev/da0s1&lt;br /&gt;&lt;br /&gt;หรือ&lt;br /&gt;&lt;br /&gt;umount /mnt&lt;br /&gt;&lt;br /&gt;ได้ครับ (ถ้าใช้คำสั่งเดียวกันกับ Linux นะครับ)&lt;br /&gt;&lt;br /&gt;RH9 ก็ไม่ต่างกันนักครับ&lt;br /&gt;&lt;br /&gt;mkdir /mnt/usbdisk&lt;br /&gt;mount -t vfat /dev/sda1 /mnt/usbdisk&lt;br /&gt;&lt;br /&gt;หรือจะเพิ่มออพชันด้วย เพื่อให้สามารถอ่านภาษาไทย และให้ผู้ใช้งานที่ไม่ใช่ root เขียนข้อมุลได้ด้วย&lt;br /&gt;&lt;br /&gt;mount -t vfat /dev/sda1 /mnt/usbdisk -o iocharset=utf8,umask=000&lt;br /&gt;&lt;br /&gt;mount /dev/da1st1 /mnt/hdd1 &lt;&lt;&lt; hdd ตัวที่ ลง window 2k3 ไว้แล้วก็ แบ่ง เป็น c กะ d da1st1 = drive c da1st2 = drive d&lt;br /&gt;แล้วก็ สร้าง /mnt/hdd1 ซะ&lt;br /&gt;เสร็จแล้ว /chmod -R 777 /mnt/&lt;br /&gt;หง่ะ แค่นั้น&lt;br /&gt;&lt;br /&gt;Ref :: http://www.thaibsd.com/webboard/show.php?Category=thaibsd&amp;No=1451&amp;page=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8287085894758037397?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8287085894758037397/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8287085894758037397' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8287085894758037397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8287085894758037397'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/09/mount-handy-drive.html' title='การ mount Handy drive'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8380554513746898435</id><published>2008-08-22T10:12:00.000-07:00</published><updated>2008-08-22T10:14:45.511-07:00</updated><title type='text'>โปรแกรม portsentry</title><content type='html'>พอดีมีประสบการณ์ในด้านนี้มาบ้างเลยอยากจะแนะนำให้เพื่อนๆพี่ๆน้องได้ลองทำ ดูกัน ก็เลยนำเอาการ config โปรแกรม Portsentry มาให้ดูกัน หวังว่าคงจะเป็นประโยชน์กันบ้างไม่มากไม่น้อย ซึ่งขึ้นอยู่กับการนำไปประยุกต์กับระบบของคุณเอง&lt;br /&gt; &lt;br /&gt;โปรแกรม portsentry เป็นโปรแกรมที่สร้างขึ้นเพื่อตรวจสอบการ scan port แบบ real time สามารถตรวจจับการบุกรุกมายัง port ต่างๆที่ server เปิดให้บริการอยู่ บางคนตั้ง server แบบไม่ระมัดระวังพอติดตั้ง NOS เสร็จก็สนใจแต่เรื่องการ config ในส่วนที่จะให้บริการกับลูกข่ายเท่านั้น สามารถหา download โปรแกรมนี้ได้จาก www.psionic.com ปัจจุบันได้เปลี่ยนแปลงชื่อโปรแกรมไปเป็นชื่ออื่นแล้ว ลองศึกษาจากเวปไซต์ดังกล่าวดูนะคับ&lt;br /&gt; &lt;br /&gt; สมมุตว่าผมไป download เจ้าโปรแกรมนี้มาแล้วที่มีชื่อว่า portsentry-1.1.tar.gz&lt;br /&gt; &lt;br /&gt; # cd /tmp&lt;br /&gt; # gzip -cd portsentry-1.1.tar.gz | tar xvf -&lt;br /&gt; # cd portsentry-1.1&lt;br /&gt; # pico Makefile (เข้าไปแก้ไขไฟล์ compile โดยแก้ไขตามนี้นะครับ)&lt;br /&gt; &lt;br /&gt; CC = cc แก้ไขเป็น &lt;br /&gt; CC = egcs &lt;br /&gt; (ใน server ต้องติดตั้งโปรแกรม egcs ไว้ก่อน) หรือสามารถหาติดตั้งได้ใน /usr/ports&lt;br /&gt; &lt;br /&gt; CFLAGS = -O -Wall แก้เป็น&lt;br /&gt; CFLAGS = -O3 -march=i386 -mcpu=i386 -funroll-loops -fomit-frame-pointer -Wall&lt;br /&gt; &lt;br /&gt; INSTALLDIR=/usr/local/psionic แก้ไขเป็น&lt;br /&gt; INSTALLDIR=/etc&lt;br /&gt; &lt;br /&gt; เสร็จแล้วทำการ save ไฟล์โดยการ Ctrl+X แล้วกด Y&lt;br /&gt; หลังจากนั้นแก้ไขไฟล์ portserntry_config.h&lt;br /&gt; &lt;br /&gt; #pico portsentry.h แล้วแก้ไขตามนี้นะครับ&lt;br /&gt; &lt;br /&gt; define CONFIG_FILE "/usr/local/psionic/portsentry/portsentry.conf" แก้ไขเป็น&lt;br /&gt; define CONFIG_FILE "/etc/portsentry/portserntry.conf"&lt;br /&gt; เสร็จแล้วทำการ save ไฟล์โดยการ Ctrl+X แล้วกด Y&lt;br /&gt; &lt;br /&gt; แล้วเริ่มต้นการ compile โดยใช้คำสั่งดังนี้&lt;br /&gt; # make linux&lt;br /&gt; # make install&lt;br /&gt; &lt;br /&gt; ทำการลบไฟล์ต้นฉบับทิ้ง&lt;br /&gt; # cd /tmp&lt;br /&gt; # rm -rf portsentry*&lt;br /&gt; &lt;br /&gt; หลังจากนั้นเข้าไปแก้ไขไฟล์ config ของ portsentry ใน path /etc/portsentry/&lt;br /&gt; &lt;br /&gt; # pico portsentry.conf &lt;br /&gt; เพิ่มคำสั่งพวกนี้เข้าไปในไฟล์ สามารถใส่ตรงบรรทัดไหนในไฟล์ก็ได้ &lt;br /&gt; &lt;br /&gt; # กำหนดหมายเลข port ที่ป้องกันการถูก scan&lt;br /&gt; 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"&lt;br /&gt; &lt;br /&gt; #กำหนดหมายเลข Ports ว่างที่มักถูกผู้บุกรุก scan และใช้โจมตี&lt;br /&gt; ADVANCED_PORTS_TCP="1023"&lt;br /&gt; ADVANCED_PORTS_UDP="1023"&lt;br /&gt; &lt;br /&gt;#กำหนด ports ต้องห้ามไม่ให้เข้าในระบบเพราะว่าเป็น port ที่ทำงานขณะที่เครื่อง boot คือบริการ ident(113) , NetBios(137-138) , RIP(520) , bootp broadcast(67)&lt;br /&gt; ADVANCED_PORTS_TCP=”113,139”&lt;br /&gt; ADVANCED_PORTS_UDP=”520,138,137,67”&lt;br /&gt; &lt;br /&gt; #กำหนดตำแหน่งที่อยู่ของไฟล์ต่างๆ&lt;br /&gt; IGNORE_FILE=”/etc/portsentry/portsentry.ignore”&lt;br /&gt; HISTORY_FILE=”/var/log/portsentry/portsentry.history”&lt;br /&gt; BLOCK_FILE=”/var/log/portsentry/portsentry.blocked”&lt;br /&gt; &lt;br /&gt; #กำหนดค่าที่จะป้องกัน&lt;br /&gt; #0=ไม่ block การ scan TCP/UDP&lt;br /&gt; #1=block ทั้ง TCP_UDP&lt;br /&gt; #2=block external command เท่านั้น&lt;br /&gt; BLOCK_UDP=”1”&lt;br /&gt; BLOCK_TCP=”1”&lt;br /&gt; &lt;br /&gt; #คำสั่งนี้ไม่ให้ผู้อื่นส่งคำสั่งมาเพิ่ม route ใหม่ในระบบ&lt;br /&gt; KILL_ROUTE=”/sbin/route add –host $TARGET$ reject”&lt;br /&gt; KILL_HOSTS_DENY=”ALL: $TARGET$”&lt;br /&gt; &lt;br /&gt;กำหนดจำนวน ports ที่ยอมให้ connect เข้ามาในระบบได้มีค่าตั้งแต่ 1-2 ถ้ากำหนดเป็น 0 จะเป็นการสั่งให้บันทึกค่าใน log file ทันทีเมื่อพบว่ามีการถูก scan port เพื่อให้ผู้ดูแลระบบทราบ&lt;br /&gt; SCAN_TRIGGER=0&lt;br /&gt; &lt;br /&gt; #กำหนดข้อความแจ้งเตือนว่ามีการบุกรุก อันนี้แล้วแต่นะครับตามความต้องการของผู้ดูแลระบบ&lt;br /&gt; PORT_BANNER=”** UNAUTHORIZED ACCESS PROHIBITED ** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY”&lt;br /&gt; &lt;br /&gt; หลังจากแก้ไขและทำการตรวจสอบความถูกต้องแล้ว ให้ทำการ save ไฟล์ แล้วทำการกำหนด Permission ให้ไฟล์ด้วย&lt;br /&gt; #chmod 600 /etc/portsentry/portsentry.conf&lt;br /&gt; &lt;br /&gt;ตรวจสอบไฟล์ portsentry.ignore ดูว่ามีค่า IP Address ตามตัวอย่างหรือไม่ ถ้าเป็น Version ใหม่โปรแกรมจะเพิ่มค่า IP Address ให้เองไม่ต้องเข้าไปแก้ไขอะไร&lt;br /&gt; #pico /etc/portsentry/portsentry.ignore&lt;br /&gt; 127.0.0.1&lt;br /&gt; 0.0.0.0&lt;br /&gt; &lt;br /&gt; จากนั้นกำหนด Permission เป็น 600&lt;br /&gt; #chmod 600 /etc/portsentry/portsentry.ignore&lt;br /&gt; &lt;br /&gt; สร้าง Scripts ไปไว้ใน /etc/rc.d/init.d ชื่อ portsentry&lt;br /&gt; #pico /etc/rc.d/init.d/portsentry (path ตามที่คุณได้ติดตั้ง init เอาไว้นะครับ ลองหาดูอาจจะไม่เหมือนของผมก็ได้)&lt;br /&gt; &lt;br /&gt; แก้ไขในไฟล์ portsentry ตามนี้นะครับ&lt;br /&gt; &lt;br /&gt; #/bin/sh&lt;br /&gt; #&lt;br /&gt; #portsentry start the portsentry port scan detector&lt;br /&gt; #&lt;br /&gt; #source function library&lt;br /&gt; ./etc/rc.d/init.d/functions&lt;br /&gt; #get config&lt;br /&gt; ./etc/sysconfig/network&lt;br /&gt; #check that networking is up&lt;br /&gt; if [${NETWORKING}=”no”]&lt;br /&gt; then&lt;br /&gt; exit 0&lt;br /&gt; fi&lt;br /&gt; [ -f /usr/sbin/portsentry] || exit 0&lt;br /&gt; &lt;br /&gt; #see how we were called&lt;br /&gt; case “$1” in&lt;br /&gt; start)&lt;br /&gt; echo –n “Starting Port Scan Detector: ”&lt;br /&gt; if [ -s /etc/portsentry/portsentry.modes] ; then&lt;br /&gt; modes=’cut –d “#” –f (ต่อบรรทัดล่างด้วย)1 /etc/portsentry/portsentry.modes’&lt;br /&gt; else&lt;br /&gt; modes=”tcp udp”&lt;br /&gt; fi&lt;br /&gt; for i in $modes ; do&lt;br /&gt; portsentry -$i&lt;br /&gt; echo –n “$i”&lt;br /&gt; done&lt;br /&gt; echo&lt;br /&gt; touch /var/lock/subsys/portsentry&lt;br /&gt; ;;&lt;br /&gt; stop)&lt;br /&gt; echo –n “Stopping Port Scan Detector: ”&lt;br /&gt; killproc portsentry&lt;br /&gt; echo&lt;br /&gt; rm –f /var/lock/subsys/portsentry&lt;br /&gt; ;;&lt;br /&gt; status)&lt;br /&gt; status portsentry&lt;br /&gt; esac&lt;br /&gt; exit 0&lt;br /&gt; &lt;br /&gt; จากนั้นกำหนด permission ให้ไฟล์ scrips นี้&lt;br /&gt; #chmod 700 /etc/rc.d/init.d/portsentry&lt;br /&gt; &lt;br /&gt; ทำการเพิ่ม script ให้ระบบเพื่อสั่งให้ทำงานขณะที่เครื่อง reboot&lt;br /&gt; #chkconfig --portsentry&lt;br /&gt; #chkconfig --level 345 portsentry on&lt;br /&gt; &lt;br /&gt; สั่งให้โปรแกรมทำงาน&lt;br /&gt; #/etc/rc.d/init.d/portsentry restart&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8380554513746898435?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8380554513746898435/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8380554513746898435' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8380554513746898435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8380554513746898435'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/portsentry.html' title='โปรแกรม portsentry'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-7136865095473186085</id><published>2008-08-21T11:14:00.000-07:00</published><updated>2008-08-21T11:15:56.109-07:00</updated><title type='text'>all-in-one 2 (portsentry+iptables+apt-proxy+squid3)</title><content type='html'>http://www.thaitux.info/book/export/html/479&lt;p&gt;ปรับตั้ง interfaces&lt;br /&gt;&lt;code&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;auto eth0&lt;br /&gt;iface eth0 inet static&lt;br /&gt;  address 192.168.1.3&lt;br /&gt;  netmask 255.255.255.0&lt;br /&gt;  network 192.168.1.0&lt;br /&gt;  broadcast 192.168.1.255&lt;br /&gt;&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;  address 192.168.5.3&lt;br /&gt;  netmask 255.255.255.0&lt;br /&gt;  network 192.168.5.0&lt;br /&gt;  broadcast 192.168.5.255&lt;br /&gt;  gateway 192.168.5.1&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; เพื่อให้เครือข่ายภายในสามารถออกสู่ภายนอกได้ โดยใช้เซิร์ฟเวอร์ตัวนี้เป็นเกตเวย์ จะตั้งให้ฟอร์เวิร์ดไอพีได้&lt;br /&gt;&lt;code&gt;# vi /etc/sysctl.conf&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;net.ipv4.ip_forward=1&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; ทำให้มีผลทันที&lt;br /&gt;&lt;code&gt;# echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;/code&gt;&lt;/p&gt; &lt;h4&gt;portsentry + iptables พื้นฐาน&lt;/h4&gt; &lt;p&gt;ติดตั้ง&lt;br /&gt;&lt;code&gt;# aptitude install portsentry iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;สำหรับ portsentry ใช้ค่าปริยายทั้งหมด&lt;/p&gt; &lt;p&gt;สำหรับ iptables จะทำเป็นแบบสคริปต์ ไว้รันเวลาเปิดเครื่อง (จริง ๆ คือ รันตอนอินเทอร์เฟส eth1 เปิดขึ้นมาใช้งาน)&lt;br /&gt;มีการเพิ่มกฎในการบล๊อกไอพีนิดหน่อย ทำให้ลดภาระ web server ในการกรองไอพี&lt;/p&gt; &lt;p&gt;เตรียมไฟล์ข้อมูล&lt;br /&gt;&lt;code&gt;# mkdir -p /sys1/sysb/etc/iptables&lt;br /&gt;# ln -sf /sys1/sysb/etc/iptables /etc&lt;br /&gt;# echo "#BLOCKED IP LIST" &gt;&gt; /etc/iptables/block_ip&lt;/code&gt;&lt;/p&gt; &lt;p&gt;สร้างสคริปต์ไว้เรียกตอนเปิด eth1 คือ /usr/local/sbin/d.eth1-iptables&lt;br /&gt;&lt;code&gt;# vi /usr/local/sbin/d.eth1-iptables&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;#!/bin/bash&lt;br /&gt;# SIMPLE IPTABLES&lt;br /&gt;INTERFACE=eth1&lt;br /&gt;INT_NET=192.168.0.0/16&lt;br /&gt;BLOCK_FILE=/etc/iptables/block_ip&lt;br /&gt;&lt;br /&gt;#DELETE OLD RULES&lt;br /&gt;iptables -F &gt; /dev/null&lt;br /&gt;iptables -F -t nat &gt; /dev/null&lt;br /&gt;&lt;br /&gt;#NAT&lt;br /&gt;iptables -t nat -A POSTROUTING -o $INTERFACE -j MASQUERADE&lt;br /&gt;&lt;br /&gt;#BLOCK SPECIFIC IP&lt;br /&gt;#SORT IP LIST IF DATA CHANGED&lt;br /&gt;touch $BLOCK_FILE "$BLOCK_FILE.bak"&lt;br /&gt;cmp -s "$BLOCK_FILE" "$BLOCK_FILE.bak"&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;  TEMP_FILE=/tmp/block_ip&lt;br /&gt;  touch $TEMP_FILE&lt;br /&gt;  mv $BLOCK_FILE "$BLOCK_FILE.bak"&lt;br /&gt;  cat "$BLOCK_FILE.bak" | while read LINE; do&lt;br /&gt;      if [ ${LINE:0:1} == "#" ]; then&lt;br /&gt;          echo $LINE &gt;&gt; $BLOCK_FILE&lt;br /&gt;      else&lt;br /&gt;          echo $LINE &gt;&gt; $TEMP_FILE&lt;br /&gt;      fi&lt;br /&gt;  done&lt;br /&gt;  cat $TEMP_FILE | sort &gt;&gt; $BLOCK_FILE&lt;br /&gt;  rm $TEMP_FILE&lt;br /&gt;fi&lt;br /&gt;#DO BLOCK&lt;br /&gt;cat $BLOCK_FILE | grep -v "#" | cut -d \  -f 1 | while read IP; do&lt;br /&gt;  iptables -A INPUT -s $IP -j DROP&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;#BLOCK ssh INTRUDER BY RATE-LIMIT 4 FOR 600 SECONDS&lt;br /&gt;#FROM http://www.debian-administration.org/articles/187&lt;br /&gt;iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --set&lt;br /&gt;iptables -I INPUT -p tcp --dport 22 -i $INTERFACE -m state --state NEW -m recent --update --seconds 600 --hitcount 4 -j DROP&lt;br /&gt;&lt;br /&gt;#FORWARD INTERNAL&lt;br /&gt;iptables -A FORWARD -s $INT_NET -j ACCEPT&lt;br /&gt;iptables -A FORWARD -d $INT_NET -j ACCEPT&lt;br /&gt;&lt;br /&gt;#DROP REST&lt;br /&gt;iptables -A FORWARD -s ! $INT_NET -j DROP&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;# chmod 755 /usr/local/sbin/d.eth1-iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;สร้างไพล์ข้อมูลไอพีที่ต้องการบล๊อก ชื่อ block_ip เอาไว้ที่ /etc/iptables&lt;br /&gt;&lt;code&gt;# vi /etc/iptables/block_ip&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;#BLOCKED IP LIST&lt;br /&gt;&lt;em&gt;WWW.XXX.YYY.ZZZ&lt;/em&gt;    #&lt;em&gt;COMMENT&lt;/em&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;เปลี่ยนตัวเลขเอาตามจริงนะครับ&lt;br /&gt;เวลาเราจะเพิ่มไอพี ก็มาแก้ไขที่ไฟล์นี้&lt;/p&gt; &lt;p&gt;นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces&lt;br /&gt;&lt;code&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;  address 192.168.5.3&lt;br /&gt;  netmask 255.255.255.0&lt;br /&gt;  network 192.168.5.0&lt;br /&gt;  broadcast 192.168.5.255&lt;br /&gt;  gateway 192.168.5.1&lt;br /&gt;  &lt;strong&gt;post-up /usr/local/sbin/d.eth1-iptables&lt;br /&gt;  pre-down /sbin/iptables-save &gt; /etc/iptables/rules-backup&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;(เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules-backup มาใช้อ้างอิงดูในการปรับปรุงได้)&lt;/p&gt; &lt;p&gt;สำหรับครั้งแรก ต้องรัน 1 ครั้ง ครั้งต่อไปไม่ต้องแล้ว จะรันผ่านอินเทอร์เฟส eth1 เอง&lt;br /&gt;&lt;code&gt;# /usr/local/sbin/d.eth1-iptables&lt;/code&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-7136865095473186085?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/7136865095473186085/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=7136865095473186085' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7136865095473186085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7136865095473186085'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/all-in-one-2-portsentryiptablesapt.html' title='all-in-one 2 (portsentry+iptables+apt-proxy+squid3)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1570536463039405377</id><published>2008-08-21T07:33:00.000-07:00</published><updated>2008-08-21T08:18:38.204-07:00</updated><title type='text'>ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER</title><content type='html'>http://www.tpit.co.th/index.php?view=article&amp;amp;catid=7%3Ahowto&amp;amp;id=9%3A-centralized-log-php-syslogviewer&amp;amp;tmpl=component&amp;amp;print=1&amp;amp;page=&amp;amp;option=com_content&amp;amp;Itemid=10&lt;br /&gt;&lt;br /&gt;   &lt;table class="contentpaneopen"&gt; &lt;tbody&gt;&lt;tr&gt;   &lt;td class="contentheading" width="100%"&gt;      ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer   &lt;/td&gt;     &lt;td class="buttonheading" align="right" width="100%"&gt;   &lt;a href="http://www.tpit.co.th/index.php?view=article&amp;amp;catid=7%3Ahowto&amp;amp;id=9%3A-centralized-log-php-syslogviewer&amp;amp;tmpl=component&amp;amp;print=1&amp;amp;page=&amp;amp;option=com_content&amp;amp;Itemid=10#" onclick="window.print();return false;"&gt;&lt;img src="http://www.tpit.co.th/templates/jml_biz/images/printButton.png" alt="Print" /&gt;&lt;/a&gt;  &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;table class="contentpaneopen"&gt; &lt;tbody&gt;&lt;tr&gt;  &lt;td colspan="2" valign="top" width="70%"&gt;   &lt;span class="small"&gt;    Written by Administrator  &lt;/span&gt;       &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt;  &lt;td colspan="2" class="createdate" valign="top"&gt;   Thursday, 10 July 2008 02:35 &lt;/td&gt; &lt;/tr&gt;   &lt;tr&gt; &lt;td colspan="2" valign="top"&gt;   &lt;h1 style="margin-bottom: 0cm;" align="center"&gt;ภาคแรก ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER&lt;/h1&gt;&lt;p style="margin-bottom: 0cm;" align="center"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;.ศ&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;php syslogviewer”  แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;h2 style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ซอฟต์แวร์ที่ใช้งาน&lt;/span&gt;&lt;/h2&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;syslog-ng-2.0.0&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;phpsyslogviewer-7.2.1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;speedupd-7.3.2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;xen opensource ใช้เคอร์เนลเวอร์ชั่น &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 1&lt;/strong&gt; เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้ &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# apt-get install syslog-ng&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 2&lt;/strong&gt; ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้ &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# wget &lt;a href="http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2"&gt;&lt;u&gt;&lt;span style="color:#810081;"&gt;http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/phpsyslogviewer-7.2.1.tar.bz2&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# wget &lt;a href="http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2"&gt;&lt;u&gt;&lt;span style="color:#810081;"&gt;http://jaist.dl.sourceforge.net/sourceforge/phpsyslogviewer/speedupd-7.3.2.tar.bz2&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 3&lt;/strong&gt; แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการณ์คงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่หงุดหงิดบ้าง ดังนี้&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# apt-get install bzip2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# tar xjvf phpsyslogviewer-7.2.1.tar.bz2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cd phpsyslogviewer-7.2.1&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# apt-get install mysql-client mysql-server apache2 php5&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Arial;"&gt;# apt-get install phpmyadmin&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 4&lt;/strong&gt; ในโฟลเดอร์ install  จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้ &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# mysql -u root -p&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;mysql &gt; create database syslogng;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;mysql &gt; exit;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# mysql -u root -p syslogng &lt;&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 5&lt;/strong&gt; ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# vi install/newuser.sql.php&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# php install/newuser.sql.php&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# php install/newuser.sql.php | mysql -u root -p syslogng&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 6&lt;/strong&gt; จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cp -R htdocs /var/www/phpsyslogviewer&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# vi /var/www/phpsyslogviewer/config.php&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# chown root:www-data /var/www/phpsyslogviewer/config.php&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# chmod 440 /var/www/phpsyslogviewer/config.php&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 7&lt;/strong&gt; ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ &lt;a href="http://xxx.xxx.xxx.xxx/phpsyslogviewer"&gt;http://xxx.xxx.xxx.xxx/phpsyslogviewer&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;a href="http://www.tpit.co.th/images/stories/syslogviewer1.JPG"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer1.JPG" alt="php syslogviewer" border="0" width="480" height="328" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;จะเห็นว่าหน้าตาดูดีทีเดียว&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 8&lt;/strong&gt; ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# tar xjvf speedupd-7.3.2.tar.bz2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cd speedup-7.3.2&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Arial;"&gt;# apt-get install build-essential libmysqlclient15-dev&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# dpkg-buildpackage -rfakeroot&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 9&lt;/strong&gt; หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cd ..&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# dpkg -i speedupd_7.3.0_i386.deb&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# vi /etc/speedupd.conf&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# /etc/init.d/speedupd start&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 10&lt;/strong&gt; สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมูลได้เลยครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cd /etc/syslog-ng&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# cp syslog-ng.conf syslog-ng.conf.org&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# vi syslog-ng.conf&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;options {&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;recv_time_zone (+07:00);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;send_time_zone (+07:00);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;sync (0);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;time_reopen (100);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;log_fifo_size (1000);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;long_hostnames (off);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;use_dns (no);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;use_fqdn (no);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;create_dirs (yes);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;chain_hostnames(yes);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;keep_hostname (yes);&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;};&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;source s_sys {&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;file ("/proc/kmsg" log_prefix("kernel: "));&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;unix-stream ("/dev/log");&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;internal();&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;udp(ip(0.0.0.0) port(514));&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;tcp(ip(0.0.0.0) port(514) keep-alive(yes));&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;};&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;destination d_mysql { \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;pipe("/var/log/mysql.pipe" \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;template("INSERT INTO logs \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;(host, facility, priority, level, tag, datetime, program, msg) \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;'$PROGRAM', '$MSG' );\n") template-escape(yes));&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;};&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;filter f_kernel { facility (kern); };&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;filter f_messages { level(info..emerg) and not (facility(mail) or \&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;facility(authpriv) or facility(cron)); };&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;log {source(s_sys); filter(f_messages); destination(d_mysql); };&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;log {source(s_sys); filter(f_kernel); destination(d_mysql); };&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;ขั้นตอนที่ 11&lt;/strong&gt; สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม  ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;#vi syslog2mysql.sh&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;#!/bin/bash&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;if [ ! -e /var/log/mysql.pipe ]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;then&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;mkfifo /var/log/mysql.pipe&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;fi&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;while [ -e /var/log/mysql.pipe ]&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;do&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;mysql -u root --password=radius syslogng &lt; /var/log/mysql.pipe &gt;/dev/null&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;done&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# chmod +x syslog2mysql.sh&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# ./syslog2mysql.sh &amp;amp;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;# /etc/init.d/syslog-ng start&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer2.JPG" alt="php syslogviewer " border="0" width="200" height="137" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;a href="http://www.tpit.co.th/images/stories/syslogviewer3.JPG"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer3.JPG" alt="php syslogviewer" border="0" width="480" height="331" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;a href="http://www.tpit.co.th/images/stories/syslogviewer4.JPG"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer4.JPG" alt="php syslogviewer" border="0" width="480" height="349" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ลองค้นหาดูสิ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;a href="http://www.tpit.co.th/images/stories/syslogviewer5.JPG"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer5.JPG" border="0" width="480" height="349" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ได้คำตอบตามนี้ครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;a href="http://www.tpit.co.th/images/stories/syslogviewer6.JPG"&gt;&lt;img src="http://www.tpit.co.th/images/stories/syslogviewer6.JPG" alt="php syslogviewer" border="0" width="480" height="434" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ดูดีทีเดียวครับ เป็นไงครับ &lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;php syslogviewerสู้ซอฟต์แวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้เชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ  แค่นี้ก็รอดตัวจากมาตรา 26 ตามพรบ.คอมพิวเตอร์ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินภาษี ให้คนรัฐบาลซื้อ centralized log จากต่างประเทศสักตัว  &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:Arial;"&gt;&lt;a href="http://www.tpit.co.th/index.php?option=com_content&amp;amp;view=category&amp;amp;layout=blog&amp;amp;id=7&amp;amp;Itemid=10"&gt;ภาคสอง ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;หมายเหตุ&lt;/strong&gt; เฉพาะเครื่องแม่ข่าย centralized log ตัวเดียวยังไม่เพียงพอต่อการคอมไพล์พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับ คอมพิวเตอร์ พ.ศ. ๒๕๕๐ หน่วยงานต้องทำอินเทอร์เน็ตเกตเวย์เพื่อทำการตรวจสอบสิทธิการเข้าใช้ งานระบบ (authentication gateway) และต้องตั้งฐานเวลาเทียบกับเวลามาตรฐานของประเทศไทย (stratum 0)ผิดพลาดไม่เกิน 10 ms ด้วย และหากหน่วยงานใดให้บริการเวป หรือ เมลล์เซิร์ฟเวอร์ต้องจัดเก็บข้อมูลการให้บริการดังกล่าวด้วย แต่ยังไงก็ตามเราก็ประหยัดเงินไปได้หนึ่งกล่องล่ะครับ&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;ผู้เขียนขอจบบทความ&lt;strong&gt;ทำเองได้ &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;Centralized log &lt;/strong&gt;&lt;strong&gt;แถมวิวได้ด้วย &lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;PHP SYSLOGVIEWER &lt;/strong&gt;เพียงแค่นี้ครับ หากติดขัดในขั้นตอนใด ถามมาได้ครับที่ &lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;supakitd at yahoo dot com &lt;/span&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;บริษัท ไทยพรอสเพอรัสไอที จำกัด&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;  &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt;  &lt;td colspan="2" class="modifydate"&gt;   Last Updated ( Friday, 15 August 2008 03:48 )  &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;span class="article_separator"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1570536463039405377?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1570536463039405377/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1570536463039405377' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1570536463039405377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1570536463039405377'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/centralized-log-php-syslogviewer_21.html' title='ทำเองได้ Centralized log แถมวิวได้ด้วย PHP SYSLOGVIEWER'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4616583644822479392</id><published>2008-08-21T07:19:00.001-07:00</published><updated>2008-08-21T07:19:43.253-07:00</updated><title type='text'>เวอร์ชั่นเต็ม: การติดตั้ง Centralized log ตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์</title><content type='html'>http://www.thaishadow.com/archiver/?tid-589.html&lt;br /&gt;&lt;div class="archiver_postbody"&gt;&lt;h2&gt;การติดตั้ง Centralized log ตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์&lt;/h2&gt;หลาย ๆ องค์กรเริ่มจะตื่นตัวกับพรบ.ว่าด้วยการกระทำผิดเกี่ยวกับคอมพิวเตอร์ พ.ศ. ๒๕๕๐ ตามมาตรา ๒๖ บัญญัติให้ผู้ให้บริการต้องเก็บข้อมูลจราจรคอมพิวเตอร์ไว้ไม่ต่ำกว่า ๙๐ วัน แต่ไม่เกิน ๑ ปีไปแล้ว วันนี้จะแนะนำวิธีง่าย ๆ ที่จะทำ centralized log เซิร์ฟเวอร์ด้วยตนเอง ด้วยซอฟต์แวร์ open sourceดูสิว่าจะสู้ผลิตภัณฑ์ต่างประเทศราคาหลายแสนได้หรือไม่&lt;br /&gt;&lt;br /&gt;นับเป็นข่าวดีมากที่ผู้เขียนได้ค้นพบซอฟต์แวร์ที่ใช้ทำการวิว ค้นหาข้อมูล เพื่อจะได้ทำรายงานเบื้องต้นได้ใหม่ ชื่อว่า “php syslogviewer” แถมเพิ่งจะอัพเดทล่าสุดเมื่อปีกลาย แจ่มทีเดียว ใครหลายคนอาจเคยได้ยินชื่อ phpsyslog-ng มาก่อน ลืมไปได้เลยครับขี้เหร่มาก&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ซอฟต์แวร์ที่ใช้งาน&lt;br /&gt;&lt;br /&gt;syslog-ng-2.0.0&lt;br /&gt;&lt;br /&gt;phpsyslogviewer-7.2.1&lt;br /&gt;&lt;br /&gt;speedupd-7.3.2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ผู้เขียนทดสอบโดยติดตั้งบนระบบปฏิบัติการ debian etch 4.0 รันในระบบเวอร์ชอลแมชชีน โดยซอฟต์แวร์ xen opensource ใช้เคอร์เนลเวอร์ชั่น 2.6.18-4-xen-686 นับว่ามีเสถียรภาพสูงมาก ๆ ครับ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 1 เริ่มกันเลยดีกว่า หลังจากติดตั้งโอเอสเรียบร้อยให้ทำการติดตั้งซอฟต์แวร์ syslog-ng-2.0.0 โดยใช้แพ็คเกจของโอเอสเองดังนี้&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# apt-get install syslog-ng&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 2 ดาวน์โหลดซอร์สโค๊ดจาก sourceforge ตามลิงค์ข้างล่างนี้&lt;br /&gt;&lt;br /&gt;# wget [url]http://jaist.dl.sourceforge.net/sourceforg...r-7.2.1.tar.bz2[/url]&lt;br /&gt;&lt;br /&gt;# wget [url]http://jaist.dl.sourceforge.net/sourceforg...d-7.3.2.tar.bz2[/url]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 3 แตกแพ็คเกจออกถ้าใครยังไม่ได้ลงโปรแกรม bzip2 ให้ทำการลงซะก่อนมิฉะนั้นจะแตกไฟล์ออกไม่ได้และทำการติดตั้งชุด lamp สำหรับเครื่องแม่ข่ายซะก่อน ขั้นตอนการติดตั้ง lamp อาจจะใช้เวลาสักนิดนึง หากใครมีประสบการ์ณคงหาทางแก้ปัญหาได้จากเอกสารอื่น เนื้อหาในบทความนี้ผู้เขียนขอเล็งไปที่ซอฟต์แวร์หลัก ๆ ของระบบการจัดการข้อมูลการจราจรคอมพิวเตอร์ ตามพรบ.เป็นหลัก อาจจะทำให้มือใหม่งุดหงิดบ้าง ดังนี้&lt;br /&gt;&lt;br /&gt;# apt-get install bzip2&lt;br /&gt;&lt;br /&gt;# tar xjvf phpsyslogviewer-7.2.1.tar.bz2&lt;br /&gt;&lt;br /&gt;# cd phpsyslogviewer-7.2.1&lt;br /&gt;&lt;br /&gt;# apt-get install mysql-client mysql-server apache2 php5&lt;br /&gt;&lt;br /&gt;# apt-get install php5-mysql php5-ldap php5-cli libapache2-mod-php5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 4 ในโฟลเดอร์ install จะมีสคริปที่ใช้ติดตั้งตารางต่าง ๆ ให้กับฐานข้อมูล เราจะต้องทำการสร้างฐานข้อมูลเสียก่อน มิฉะนั้นจะพบกับข้อผิดพลาดและไม่สามารถรันสคริปดังกล่าวผ่านได้&lt;br /&gt;&lt;br /&gt;# mysql -u root -p&lt;br /&gt;&lt;br /&gt;mysql &gt; create database syslogng;&lt;br /&gt;&lt;br /&gt;mysql &gt; exit;&lt;br /&gt;&lt;br /&gt;# mysql -u root -p syslogng &lt; install/phpsyslogviewer.sql&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 5 ปรบมือให้กับตัวเองเราผ่านพ้นขั้นตอนที่ต้องระวังไปขั้นหนึ่ง จากนั้นกำหนดค่าเพื่อสร้างบัญชีรายชื่อผู้ใช้และรหัสผ่านง่าย ๆ ก็ใส่ค่าข้อมูลของผู้ใช้ รหัสผ่าน ชื่อโฮสต์ และ ฐานข้อมูล คิดว่าไม่น่ายาก ดังนี้&lt;br /&gt;&lt;br /&gt;# vi install/newuser.sql.php&lt;br /&gt;&lt;br /&gt;# php install/newuser.sql.php&lt;br /&gt;&lt;br /&gt;# php install/newuser.sql.php | mysql -u root -p syslogng&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 6 จัดการเวบไดเรคทอรีเพื่อให้สามารถเรียกดูข้อมูลผ่านเวบบราวเซอร์ ใครที่มีประสบการณ์สร้างเวบไซต์มาก่อน งานนี้กินเรียบครับ ทำตามขั้นตอนได้เลย&lt;br /&gt;&lt;br /&gt;# cp -R htdocs /var/www/phpsyslogviewer&lt;br /&gt;&lt;br /&gt;# vi /var/www/phpsyslogviewer/config.php&lt;br /&gt;&lt;br /&gt;# chown root:www-data /var/www/phpsyslogviewer/config.php&lt;br /&gt;&lt;br /&gt;# chmod 440 /var/www/phpsyslogviewer/config.php&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 7 ทดลองเปิดหน้าเวบไซต์ดูหน่อยว่าหน้าตาเป็นอย่างไร ไปที่ [url]http://xxx.xxx.xxx.xxx/phpsyslogviewer[/url]&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4335_syslogviewer1.JPG[/img]&lt;br /&gt;&lt;br /&gt;จะเห็นว่าหน้าตาดูดีทีเดียว&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 8 ติดตั้งแพ็คเกจ speedupd-7.3.2 เพื่อเร่งความเร็วให้เอนจิ้นป้อนข้อมูลสู่ฐานข้อมูล mysql ขั้นตอนนี้อาจยุ่งยากนิดหน่อย เพราะต้องทำการคอมไพล์แพ็คเกจด้วยตัวเองใหม่ แต่ไม่เกินความสามารถของเราหรอกครับ ขอย้ำว่าต้องทำนะครับขั้นตอนนี้ มิฉะนั้นใครที่เคยใช้ phpsyslog-ng จะรู้ซึ้งว่าอึดอัดเป็นอย่างไร&lt;br /&gt;&lt;br /&gt;# tar xjvf speedupd-7.3.2.tar.bz2&lt;br /&gt;&lt;br /&gt;# cd speedup-7.3.2&lt;br /&gt;&lt;br /&gt;# apt-get install debhelper cmake libdaemon-dev libconfuse-dev fakeroot&lt;br /&gt;&lt;br /&gt;# dpkg-buildpackage -rfakeroot&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 9 หลังจากผ่านขั้นตอนที่ 8 เราจะได้แพ็คเกจตระกูล debian ชื่อว่า speedupd_7.3.0_i386.debให้ติดตั้งแพ็คเกจและกำหนดค่าให้กับไฟล์ speedupd.confดังนี้&lt;br /&gt;&lt;br /&gt;# cd ..&lt;br /&gt;&lt;br /&gt;# dpkg -i speedupd_7.3.0_i386.deb&lt;br /&gt;&lt;br /&gt;# vi /etc/speedupd.conf&lt;br /&gt;&lt;br /&gt;# /etc/init.d/speedupd start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ต่อข้างล่างนะครับ ยาวเกิน&lt;/div&gt;  &lt;div class="archiver_post"&gt;  &lt;p&gt;&lt;cite&gt;Edkung&lt;/cite&gt; 10-7-2008 17:52&lt;/p&gt;  &lt;div class="archiver_postbody"&gt;ขั้น ตอนที่ 10 สบายใจไปอีกขั้นหนึ่งครับ ต่อไปเป็นการกำหนดค่าให้กับ syslog-ng ทำการส่งค่าไปเก็บยังฐานข้อมูลทำตามนี้เลยครับ ง่าย ๆ ผู้เขียนตัดวิธีการเก็บข้อมูลการจราจรคอมพิวเตอร์ส่วนอื่นออก เพื่อให้สามารถทำความเข้าใจได้ง่าย ๆ ครับ หากใครมีไฟล์คอนฟิคเก่าอยู่แล้วก็เพิ่มเติมเฉพาะส่วนที่ต้องการเก็บข้อมูลใน ฐานข้อมู&lt;br /&gt;ลได้เลยครับ&lt;br /&gt;&lt;br /&gt;# cd /etc/syslog-ng&lt;br /&gt;&lt;br /&gt;# cp syslog-ng.conf syslog-ng.conf.org&lt;br /&gt;&lt;br /&gt;# vi syslog-ng.conf&lt;br /&gt;&lt;br /&gt;options {&lt;br /&gt;&lt;br /&gt;recv_time_zone (+07:00);&lt;br /&gt;&lt;br /&gt;send_time_zone (+07:00);&lt;br /&gt;&lt;br /&gt;sync (0);&lt;br /&gt;&lt;br /&gt;time_reopen (100);&lt;br /&gt;&lt;br /&gt;log_fifo_size (1000);&lt;br /&gt;&lt;br /&gt;long_hostnames (off);&lt;br /&gt;&lt;br /&gt;use_dns (no);&lt;br /&gt;&lt;br /&gt;use_fqdn (no);&lt;br /&gt;&lt;br /&gt;create_dirs (yes);&lt;br /&gt;&lt;br /&gt;chain_hostnames(yes);&lt;br /&gt;&lt;br /&gt;keep_hostname (yes);&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;source s_sys {&lt;br /&gt;&lt;br /&gt;file ("/proc/kmsg" log_prefix("kernel: "));&lt;br /&gt;&lt;br /&gt;unix-stream ("/dev/log");&lt;br /&gt;&lt;br /&gt;internal();&lt;br /&gt;&lt;br /&gt;udp(ip(0.0.0.0) port(514));&lt;br /&gt;&lt;br /&gt;tcp(ip(0.0.0.0) port(514) keep-alive(yes));&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;destination d_mysql { \&lt;br /&gt;&lt;br /&gt;pipe("/var/log/mysql.pipe" \&lt;br /&gt;&lt;br /&gt;template("INSERT INTO logs \&lt;br /&gt;&lt;br /&gt;(host, facility, priority, level, tag, datetime, program, msg) \&lt;br /&gt;&lt;br /&gt;VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', \&lt;br /&gt;&lt;br /&gt;'$PROGRAM', '$MSG' );\n") template-escape(yes));&lt;br /&gt;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;filter f_kernel { facility (kern); };&lt;br /&gt;&lt;br /&gt;filter f_messages { level(info..emerg) and not (facility(mail) or \&lt;br /&gt;&lt;br /&gt;facility(authpriv) or facility(cron)); };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;log {source(s_sys); filter(f_messages); destination(d_mysql); };&lt;br /&gt;&lt;br /&gt;log {source(s_sys); filter(f_kernel); destination(d_mysql); };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ขั้นตอนที่ 11 สร้างสคริปเพื่อทำไปน์สำหรับส่งค่าสตรีมจากไปน์สู่ฐานข้อมูล งานนี้เป็น bash สคริปครับทำเสร็จต้องเปลี่ยนสิทธิให้รันได้ด้วยอย่าลืม ฟังดูวุ่นวายแต่ทำจริงง่ายมากครับ&lt;br /&gt;&lt;br /&gt;#vi syslog2mysql.sh&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;if [ ! -e /var/log/mysql.pipe ]&lt;br /&gt;&lt;br /&gt;then&lt;br /&gt;&lt;br /&gt;mkfifo /var/log/mysql.pipe&lt;br /&gt;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;while [ -e /var/log/mysql.pipe ]&lt;br /&gt;&lt;br /&gt;do&lt;br /&gt;&lt;br /&gt;mysql -u root --password=radius syslogng &lt; /var/log/mysql.pipe &gt;/dev/null&lt;br /&gt;&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# chmod +x syslog2mysql.sh&lt;br /&gt;&lt;br /&gt;# ./syslog2mysql.sh &amp;amp;&lt;br /&gt;&lt;br /&gt;# /etc/init.d/syslog-ng start&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ทำครบแล้วก็ปรบมือให้ตัวเองครับ ลองมาดูผลงานสิว่าเป็นไงบ้าง เข้าไปหน้าล็อกอินครับ&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4336_syslogviewer2.JPG[/img]&lt;br /&gt;&lt;br /&gt;จากนั้นป้อนรหัสผู้ใช้พร้อมรหัสผ่านที่ทำไว้ในขั้นตอนที่ 5 ครับ ถ้าหากลืม จากนั้นจะได้หน้าจอต่อไปครับ&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4337_syslogviewer3.JPG[/img]&lt;br /&gt;&lt;br /&gt;ดูต่อ อยากเห็นเรียลไทม์วิวเวอร์ครับ&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4338_syslogviewer4.JPG[/img]&lt;br /&gt;&lt;br /&gt;ลองค้นหาดูสิ&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4339_syslogviewer5.JPG[/img]&lt;br /&gt;&lt;br /&gt;ได้คำตอบตามนี้ครับ&lt;br /&gt;&lt;br /&gt;[img]http://pic.citec.us/out.php/i4340_syslogviewer6.JPG[/img]&lt;br /&gt;&lt;br /&gt;ดูดีทีเดียวครับ เป็นไงครับ php syslogviewerสู้ซอต์ฟแวร์แพง ๆ จากต่างประเทศได้ไหมอันนี้ต้องพิสูจน์ด้วยตนเองแหละครับ ในส่วนตัวของผู้เขียนดูดีทีเดียวทะเลาะได้กับ kiwi syslog service manager ของวินโดร์ได้ดีเชียวครับ หรือจะใช้สำหรับมอนิเตอร์โปรแกรมจัดส่งข้อมูลการจราจรคอมพิวเตอร์จากอุปกรณ์ อื่น ๆ เช่น สวิตช์ เร้าเตอร์ หรือ อุปกรณ์แอคเซสพอยท์ในระบบก็ทำได้ดีครับ ใช้จริงก็ได้ครับ ผู้เขียนว่าคนไทยเก่งครับ สามารถสร้างเครื่องแม่ข่ายเก็บข้อมูลการจราจรคอมพิวเตอร์ ตาม พรบ.ว่าด้วยการกระทำผิดเกียวกับคอมพิวเตอร์ พ.ศ.2550 ได้ด้วยตนเองครับ ก็มันกฎหมายบ้านเรา ก็ทำมันซะเองสิครับ แค่นี้ก็รอดตัวจากมาตรา 26 ปรับตั้งห้าแสนบาทแล้วครับ ที่สำคัญช่วยลดปัญหาการนำเข้าฮาร์ดแวร์ราคาแพงจากต่างประเทศได้ครับ สงสารพี่น้องเกษตรกรไทยครับไม่รู้จะขายข้าวสารกี่เกวียนจะพอจ่ายเงินซื้อ centralized log จากต่างประเทศสักตัว&lt;br /&gt;&lt;br /&gt;[b]ที่มา[/b] [url]http://www.tpit.co.th/[/url]&lt;br /&gt;&lt;br /&gt;supakitd at yahoo dot com&lt;br /&gt;&lt;br /&gt;บริษัท ไทยพรอสเพอรัสไอที จำกัด&lt;br /&gt;&lt;br /&gt;42/1 ถ.พิทักษ์ชาติ ต.ประจวบคีรีขันธ์&lt;br /&gt;&lt;br /&gt;อ.เมืองประจวบคีรีขันธ์ จ.ประจวบคีรีขันธ์ 77000&lt;/div&gt; &lt;/div&gt; &lt;div class="archiver_post"&gt;  &lt;p&gt;&lt;cite&gt;Champ&lt;/cite&gt; 11-7-2008 11:22&lt;/p&gt;  &lt;div class="archiver_postbody"&gt;อยากรู้ว่า มันมีแบบที่เป็น เครื่อง พอเราเอาเครื่องนี้ไปเข้ากับ router แล้วใช้ได้เลย อะมีป่าวครับ&lt;/div&gt; &lt;/div&gt; &lt;div class="archiver_post"&gt;  &lt;p&gt;&lt;cite&gt;Edkung&lt;/cite&gt; 11-7-2008 12:21&lt;/p&gt;  &lt;div class="archiver_postbody"&gt;อันนี้ผมก็ไม่แน่ใจเท่าไรในรายละเอียด แต่เห็นว่าแพงมากๆๆๆ เฮ้อ รัฐออก พรบ. ฉบับนี้มา เปิดโอกาสให้พวก 3rd party มีช่องทางหากิน ...&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4616583644822479392?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4616583644822479392/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4616583644822479392' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4616583644822479392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4616583644822479392'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/centralized-log.html' title='เวอร์ชั่นเต็ม: การติดตั้ง Centralized log ตาม พรบ.ว่าด้วยการกระทำความผิดเกี่ยวกับคอมพิวเตอร์'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-7673079173793493260</id><published>2008-08-21T06:40:00.000-07:00</published><updated>2008-08-21T06:41:28.641-07:00</updated><title type='text'>debian: iptables</title><content type='html'>&lt;ol&gt;&lt;li&gt;แบบใช้ iptables-save + iptables-restore&lt;br /&gt;รันคำสั่งเพื่อสร้างกฎต่าง ๆ&lt;br /&gt;&lt;code&gt;# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE&lt;br /&gt;# iptables -A FORWARD -s 192.168.0.0/16 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -d 192.168.0.0/16 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -s ! 192.168.0.0/16 -j DROP&lt;/code&gt; &lt;p&gt;เก็บกฎไว้ที่ไฟล์ /etc/iptables/rules&lt;br /&gt;&lt;code&gt;# mkdir -p /etc/iptables&lt;br /&gt;# iptables-save &gt; /etc/iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces&lt;br /&gt;&lt;code&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;   address 192.168.5.3&lt;br /&gt;   netmask 255.255.255.0&lt;br /&gt;   network 192.168.5.0&lt;br /&gt;   broadcast 192.168.5.255&lt;br /&gt;   gateway 192.168.5.1&lt;br /&gt;   &lt;strong&gt;post-up /sbin/iptables-restore &lt; /etc/iptables/rules&lt;br /&gt;   pre-down /sbin/iptables-save &gt; /etc/iptables/rules&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;แบบใช้สคริปต์&lt;br /&gt;สร้างสคริปต์เก็บไว้คือ /usr/local/bin/d.iptables&lt;br /&gt;&lt;code&gt;# vi /usr/local/bin/d.iptables&lt;/code&gt; &lt;pre&gt;#!/bin/sh&lt;br /&gt;INTERFACE=eth1&lt;br /&gt;INT_NET=192.168.0.0/16&lt;br /&gt;/sbin/iptables -F &gt; /dev/null&lt;br /&gt;/sbin/iptables -t nat -A POSTROUTING -o $PPP_INT -j MASQUERADE&lt;br /&gt;/sbin/iptables -A FORWARD -s $INT_NET -j ACCEPT&lt;br /&gt;/sbin/iptables -A FORWARD -d $INT_NET -j ACCEPT&lt;br /&gt;/sbin/iptables -A FORWARD -s ! $INT_NET -j DROP&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;# chmod 755 /usr/local/bin/d.iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces&lt;br /&gt;&lt;code&gt;# mkdir -p /etc/iptables/&lt;br /&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;   address 192.168.5.3&lt;br /&gt;   netmask 255.255.255.0&lt;br /&gt;   network 192.168.5.0&lt;br /&gt;   broadcast 192.168.5.255&lt;br /&gt;   gateway 192.168.5.1&lt;br /&gt;   &lt;strong&gt;post-up /usr/local/bin/d.iptables&lt;br /&gt;   pre-down /sbin/iptables-save &gt; /etc/iptables/rules&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;(เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules มาใช้ในการปรับปรุงได้&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;อ้างอิง&lt;/strong&gt; - &lt;a href="http://debianclub.org/node/156"&gt;http://debianclub.org/node/156&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-7673079173793493260?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/7673079173793493260/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=7673079173793493260' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7673079173793493260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7673079173793493260'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/debian-iptables_21.html' title='debian: iptables'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4717029388048257360</id><published>2008-08-21T06:25:00.000-07:00</published><updated>2008-08-21T06:28:25.206-07:00</updated><title type='text'>สคริปท์ บล็อค keyword โดยใช้ Squid คับ เห็นมีคน ถาม</title><content type='html'>acl bad url_regex "/var/www/member/block_site.php"&lt;br /&gt;http_access deny bad&lt;br /&gt;&lt;br /&gt;ในไฟล์ /var/www/member/block_site.php&lt;br /&gt;&lt;br /&gt;ก็จะประกอบไป ด้วยคำหรือเว็บไซต์ที่เราต้องการบล็อคคับ&lt;br /&gt;&lt;br /&gt;เช่น&lt;br /&gt;passkey&lt;br /&gt;porn&lt;br /&gt;xxx&lt;br /&gt;bittorrent&lt;br /&gt;torrent&lt;br /&gt;passkey&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4717029388048257360?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4717029388048257360/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4717029388048257360' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4717029388048257360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4717029388048257360'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/keyword-squid.html' title='สคริปท์ บล็อค keyword โดยใช้ Squid คับ เห็นมีคน ถาม'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8499188206658461448</id><published>2008-08-21T05:55:00.000-07:00</published><updated>2008-08-21T05:56:21.258-07:00</updated><title type='text'>compile ipp2p บน debian etch ไม่ผ่าน ช่วยทีครับ</title><content type='html'>apt-get install linux-headers-2.6.18-4-686 iptables-dev&lt;br /&gt;&lt;br /&gt;http://www.thaiadmin.org/board/index.php?topic=58657.new&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8499188206658461448?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8499188206658461448/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8499188206658461448' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8499188206658461448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8499188206658461448'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/compile-ipp2p-debian-etch.html' title='compile ipp2p บน debian etch ไม่ผ่าน ช่วยทีครับ'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-7685924003745695693</id><published>2008-08-19T15:49:00.001-07:00</published><updated>2008-08-19T18:12:20.680-07:00</updated><title type='text'>compile debian lenny support l7</title><content type='html'>&lt;pre style="margin-top: 0pt; display: inline;"&gt;http://forum.systemnetworkcare.com/index.php?topic=98.0&lt;br /&gt;#ref &amp;amp; Big thank&lt;br /&gt;# http://www.elessar.one.pl/article_kernel2.6.php&lt;br /&gt;# http://suchart.wordpress.com/2008/02/02/kernel-2624-iptables-140-l7-filter-217-ipp2p-082-on-debian-40/&lt;br /&gt;# http://kung1401.hi5.com/friend/profile/displayJournalDetail.do?ownerId=204560961&amp;amp;journalId=41474051&lt;br /&gt;# http://hadyaiinternet.com&lt;br /&gt;# http://siambox.com&lt;br /&gt;&lt;br /&gt;#SiamVision Computer &amp;amp; network&lt;br /&gt;#sncvision@hotmail.com&lt;br /&gt;&lt;br /&gt;apt-get update&lt;br /&gt;apt-get install build-essential&lt;br /&gt;apt-get install kernel-package&lt;br /&gt;apt-get install libncurses5-dev&lt;br /&gt;&lt;br /&gt;cd /usr/src&lt;br /&gt;&lt;br /&gt;apt-get install linux-source-2.6.24&lt;br /&gt;wget http://iptables.org/projects/iptables/files/iptables-1.4.0.tar.bz2&lt;br /&gt;wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.18.tar.gz&lt;br /&gt;wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2008-04-23.tar.gz&lt;br /&gt;wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20080517.tar.bz2&lt;br /&gt;&lt;br /&gt;echo "***download complete***"&lt;br /&gt;echo "***Extract archive***"&lt;br /&gt;tar xvzf l7-protocols-2008-04-23.tar.gz&lt;br /&gt;tar xvzf netfilter-layer7-v2.18.tar.gz&lt;br /&gt;tar xvjf patch-o-matic-ng-20080517.tar.bz2&lt;br /&gt;tar xvjf linux-source-2.6.24.tar.bz2&lt;br /&gt;tar xvjf iptables-1.4.0.tar.bz2&lt;br /&gt;echo " done"&lt;br /&gt;&lt;br /&gt;echo -n "Start Symbolic link &gt;&gt;&gt;"&lt;br /&gt;ln -s linux-source-2.6.24 linux&lt;br /&gt;ln -s iptables-1.4.0 iptables&lt;br /&gt;echo " done"&lt;br /&gt;&lt;br /&gt;echo -n "Patch linux kernel &amp;amp; iptables with l7-filter &gt;&gt;&gt;"&lt;br /&gt;cd /usr/src/linux&lt;br /&gt;patch -p1 &lt; ../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 &lt; ../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&amp;amp;l7&amp;amp;&amp;amp;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)' &gt; /etc/l7-protocols/protocols/bittorrent-announce.pat&lt;br /&gt;echo 'bittorrent-announce' &gt;&gt; /etc/l7-protocols/protocols/bittorrent-announce.pat&lt;br /&gt;echo '^get.+announce.+info_hash=' &gt;&gt; /etc/l7-protocols/protocols/bittorrent-announce.pat&lt;br /&gt;echo " done"&lt;br /&gt;&lt;br /&gt;echo " * iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP"&lt;br /&gt;echo " * iptables -A FORWARD -m layer7 --l7proto bittorrent-announce -j DROP"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-7685924003745695693?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/7685924003745695693/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=7685924003745695693' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7685924003745695693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7685924003745695693'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/compile-debian-lenny-support-l7.html' title='compile debian lenny support l7'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-298225067402619297</id><published>2008-08-19T15:39:00.001-07:00</published><updated>2008-08-19T15:39:43.137-07:00</updated><title type='text'>http://www.opentle.org/th/node/7854</title><content type='html'>http://www.opentle.org/th/node/7854&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-298225067402619297?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/298225067402619297/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=298225067402619297' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/298225067402619297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/298225067402619297'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/httpwwwopentleorgthnode7854.html' title='http://www.opentle.org/th/node/7854'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2180814164451607343</id><published>2008-08-19T15:19:00.001-07:00</published><updated>2008-08-19T15:19:24.856-07:00</updated><title type='text'>ลองติดตั้ง dns แบบเปลี่ยนค่าได้</title><content type='html'>http://www.thaitux.info/node/133&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2180814164451607343?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2180814164451607343/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2180814164451607343' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2180814164451607343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2180814164451607343'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/dns.html' title='ลองติดตั้ง dns แบบเปลี่ยนค่าได้'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-161058636891696698</id><published>2008-08-19T04:48:00.001-07:00</published><updated>2008-08-19T04:48:50.199-07:00</updated><title type='text'>http://download.grisoft.cz/softw/70/update/</title><content type='html'>http://download.grisoft.cz/softw/70/update/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-161058636891696698?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/161058636891696698/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=161058636891696698' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/161058636891696698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/161058636891696698'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/httpdownloadgrisoftczsoftw70update.html' title='http://download.grisoft.cz/softw/70/update/'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-9121904194357632982</id><published>2008-08-18T17:57:00.000-07:00</published><updated>2008-08-18T17:59:12.463-07:00</updated><title type='text'>การติดตั้ง Samba Server</title><content type='html'>&lt;span style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ในบทความนี้เป็นการสาธิต                       การติดตั้ง &lt;/span&gt;Samba Server &lt;span style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ในแบบพื้นฐานครับ เป็นการ &lt;/span&gt;share &lt;span style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ข้อมูล&lt;/span&gt;                     &lt;p class="MsoNormal"&gt;&lt;span class="blue" style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ก่อนอื่นก็ต้องมาตรวจสอบ &lt;/span&gt;&lt;span class="blue"&gt;Package &lt;span style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ก่อนครับ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;                     &lt;p class="blue"&gt;[root@station10 ~]# rpm -qa|grep samba&lt;/p&gt;                     &lt;p class="blue"&gt;samba-client-3.0.10-1.4E.6&lt;/p&gt;                     &lt;p class="blue"&gt;samba-3.0.10-1.4E.6&lt;/p&gt;                     &lt;p class="blue"&gt;system-config-samba-1.2.21-1&lt;/p&gt;                     &lt;p class="blue"&gt;samba-common-3.0.10-1.4E.6&lt;/p&gt;                     &lt;p class="MsoNormal"&gt; &lt;/p&gt;                     &lt;p class="blue"&gt;[root@station10 ~]# vi /etc/samba/smb.conf&lt;/p&gt;                     &lt;p class="blue"&gt;Section [ global ]&lt;/p&gt;                     &lt;p class="blue"&gt;                                          Netbios                       name = MONTREE-SAMBA&lt;/p&gt;                     &lt;p class="blue"&gt;                                                                Workgroup    =  Linuxgray&lt;/p&gt;                     &lt;p class="MsoNormal"&gt; &lt;/p&gt;                     &lt;p class="blue"&gt;[TESTSHARE]&lt;/p&gt;                     &lt;p class="blue"&gt;                                          path                       = /share&lt;/p&gt;                     &lt;p class="blue"&gt;                                          guest                       ok = yes&lt;/p&gt;                     &lt;p class="blue"&gt;                                          writable                       = yes&lt;/p&gt;                     &lt;p class="blue"&gt;                                          comment                       = My First Share Folder&lt;/p&gt;                     &lt;p class="MsoNormal"&gt; &lt;/p&gt;                     &lt;p class="blue"&gt;[root@station10 ~]# mkdir /share&lt;/p&gt;                     &lt;p class="blue"&gt;[root@station10 ~]# chmod 777 /share/&lt;/p&gt;                     &lt;p class="blue"&gt;[root@station10 ~]# service smb restart&lt;/p&gt;                     &lt;p class="blue"&gt;Shutting down SMB                       services:                                                      [FAILED]&lt;/p&gt;                     &lt;p class="blue"&gt;Shutting down NMB                       services:                                                      [FAILED]&lt;/p&gt;                     &lt;p class="blue"&gt;Starting SMB                       services:                                                           [  OK  ]&lt;/p&gt;                     &lt;p class="blue"&gt;Starting NMB                       services:                                                           [  OK  ]&lt;/p&gt;                     &lt;p class="MsoNormal"&gt; &lt;/p&gt;                     &lt;p class="blue"&gt;smbclient –L  localhost&lt;/p&gt;                     &lt;p class="MsoNormal"&gt; &lt;/p&gt;                     &lt;p class="MsoNormal"&gt;&lt;span class="blue" style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;แค่นี้ก็เป็นอันเสร็จพิธีครับสำหรับ &lt;/span&gt;&lt;span class="blue"&gt;samba server &lt;span style="font-size: 14pt; font-family: &amp;quot;Angsana New&amp;quot;;" lang="TH"&gt;ลองทำดูครับ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-9121904194357632982?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/9121904194357632982/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=9121904194357632982' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/9121904194357632982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/9121904194357632982'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/samba-server.html' title='การติดตั้ง Samba Server'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3672355933160940907</id><published>2008-08-18T10:50:00.000-07:00</published><updated>2008-08-22T07:47:15.747-07:00</updated><title type='text'>My sources.list for Debian Lenny/Sid</title><content type='html'>&lt;div class="storycontent"&gt;   &lt;div class="snap_preview"&gt;&lt;pre&gt;deb &lt;a href="http://ftp.debianclub.org/debian" title="http://ftp.debianclub.org/debian"&gt;http://ftp.debianclub.org/debian&lt;/a&gt; lenny main contrib&lt;br /&gt;deb-src &lt;a href="http://ftp.debianclub.org/debian" title="http://ftp.debianclub.org/debian"&gt;http://ftp.debianclub.org/debian&lt;/a&gt; lenny main contrib&lt;/pre&gt;&lt;p&gt;###########################################&lt;br /&gt;#Debian Lenny&lt;br /&gt;deb http://ftp.nl.debian.org/debian/ lenny main contrib non-free&lt;br /&gt;deb http://security.debian.org/ lenny/updates main contrib non-free&lt;/p&gt; &lt;p&gt;########################################&lt;br /&gt;#Multimedia support (latest ffmpeg, mplayer,  and more)&lt;br /&gt;#http://debian.video.free.fr/index.html&lt;br /&gt;#get the apt GPG key from here :  http://www.debian-multimedia.org/faq.php&lt;/p&gt; &lt;p&gt;#testing (Lenny)&lt;br /&gt;deb ftp://ftp.uni-kl.de/debian-multimedia/ testing main&lt;br /&gt;#unstable (Sid)&lt;br /&gt;deb ftp://ftp.uni-kl.de/debian-multimedia/ unstable main&lt;br /&gt;##################################################&lt;br /&gt;#Debian Sid:&lt;br /&gt;deb http://ftp.nl.debian.org/debian/ unstable main contrib non-free&lt;br /&gt;##############################################&lt;br /&gt;#to use unstable repositories (Sid) of Debian to get some of the latest packages&lt;br /&gt;#make an “apt.conf”&lt;br /&gt;#as root:&lt;br /&gt;#nano -w /etc/apt/apt.conf&lt;br /&gt;#Insert this line:&lt;br /&gt;#APT::Default-Release “testing”;&lt;br /&gt;#after an apt-get update you can now do apt-get install -t unstable&lt;br /&gt;#to get a package from the unstable(Sid) repo.&lt;br /&gt;#Of course you can also use this trick for Etch &gt; Lenny&lt;br /&gt;###########################################################&lt;/p&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3672355933160940907?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3672355933160940907/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3672355933160940907' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3672355933160940907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3672355933160940907'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/my-sourceslist-for-debian-lennysid.html' title='My sources.list for Debian Lenny/Sid'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-532730072512888567</id><published>2008-08-18T10:42:00.001-07:00</published><updated>2008-08-18T10:42:37.786-07:00</updated><title type='text'>NTPDate: เวลานั้นสำคัญไฉน .</title><content type='html'>&lt;p&gt;ที่ ตั้งหัวเรื่องอย่างนี้ก็เพราะสิ่งที่เรากำลังจะมาดูกันก็คือเรื่อง "เวลา" และเจ้าเวลานี่เองที่เป็นต้นเหตุของการเรียนรู้ในครั้งนี้ เรื่องก็มีอยู่ว่า หากเราใช้งานเครื่องคอมพิวเตอร์เราคนเดียว ไม่ต้องติดต่อกับใคร ไม่ต้องส่งข้อมูลให้ใคร เรื่องเวลาเราจะตั้งเป็นเท่าไรก็ได้ ช้าหรือเร็วก็แล้วแต่ชอบใจ แต่เมื่อใดก็ตามที่เราต้องส่งข้อมูลไปยังเครื่องอื่น ๆ และต้องมีการเปรียบเทียบกันว่าข้อมูลตัวไหนเป็นตัวใหม่หรือเก่าแล้วหละก็ ....เกิดปัญหาแล้วสิ.... เพราะการจะเปรียบเทียบกันต้องตั้งอยู่บนฐานเวลาที่ตรงกัน หากช้า หรือเร็วกว่ากัน ก็ส่งผลให้การเปรียบเทียบผิดพลาด&lt;/p&gt; &lt;p&gt; วิธีแก้ปัญหา ... ก็ตั้งเองให้มันตรงกันสิ นั่นมันก็ได้อยู่หรอก แต่มีวิธีที่ดีกว่านั้น เราคงเคยได้ยินเรื่องการตั้งเวลา โดยการรับค่าเวลาจากเซิร์ฟเวอร์เวลา (Time Server) ซึ่งเครื่องที่ขอเวลาจากเซิร์ฟเวอร์ ก็จะได้เวลาที่ตรงกันเอง โดยไม่ต้องออกแรงมากมาย งั้นก็เริ่มลงโปรแกรมเลยละกันครับ&lt;/p&gt; &lt;p&gt;&lt;code&gt; # aptitude install ntpdate &lt;/code&gt;&lt;/p&gt; &lt;p&gt;ได้โปรแกรมมาแล้ว ก็เหลือแต่ต้องตั้งค่าต่าง ๆ ให้โปรแกรม แต่ว่าไปแล้วค่าที่ระบบตั้งมาให้ก็ใช้ได้แล้ว อาจจะไม่ต้องแก้อะไรเลย&lt;/p&gt; &lt;p&gt;ลองขอเวลาดู&lt;/p&gt; &lt;p&gt;&lt;code&gt; # ntpdate-debian &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;31 Jan 00:24:55 ntpdate[10301]: adjust time server 216.162.200.152 offset -0.000195 sec&lt;/pre&gt;&lt;p&gt; อาฮ่า.... ได้เวลามาแล้ว แต่ค่อนข้างช้าแฮะ ... ทำไหมเหรอครับ ก็เจ้าเซิร์ฟเวอร์เวลา ที่ตั้งค่ามากับแพ็คเกจ เขาไม่ได้ตั้งสำหรับเราคนไทยใช่ไหมครับ งั้นก็มาใช้ตัวที่อยู่ใกล้ ๆ หน่อยละกันจะได้เร็วหน่อย&lt;/p&gt; &lt;p&gt;&lt;code&gt; # echo "server th.pool.ntp.org" &gt; /etc/ntp.conf &lt;/code&gt;&lt;/p&gt; &lt;p&gt;คราวนี้ลองดูใหม่&lt;/p&gt; &lt;p&gt;&lt;code&gt; # ntpdate-debian &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;31 Jan 00:29:51 ntpdate[10329]: adjust time server 61.19.242.42 offset 0.001380 sec&lt;/pre&gt;&lt;p&gt; รอบนี้ได้มาเหมือนกัน เร็วกว่าด้วย&lt;/p&gt; &lt;p&gt;แต่ทว่า โดยพื้นฐานของระบบแล้ว จะเกิดการคลาดเคลื่อนของเวลาตลอดเวลาทีละเล็กทีละน้อย เนื่องจากพื้นฐานความแตกต่างทางด้านฮาร์ดแวร์ ซึ่งมีความแม่นยำต่างกัน ดังนั้นการขอเวลาจากเซิร์ฟเวอร์เวลาตามช่วงเวลาที่กำหนด อาจจะเป็น 1-2 ชั่วโมงต่อครั้ง จึงเป็นความคิดที่ดี&lt;/p&gt; &lt;p&gt;งั้นก็กำหนด&lt;br /&gt;&lt;code&gt; /etc/crond.hourly/updatetime &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;#!/bin/bash&lt;br /&gt;/usr/sbin/ntpdate-debian &gt; /dev/null&lt;br /&gt;/sbin/hwclock --adjust   # ปรับค่าความแตกต่างเวลาระหว่าง System Time กับ Hardware Clock (RTC)&lt;br /&gt;/sbin/hwclock --systohc # ตั้งค่าเวลา Hardware Clock ตาม System Time&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt; # /etc/init.d/cron restart &lt;/code&gt;&lt;/p&gt; &lt;p&gt;ตอนนี้เครื่องของเราก็จะทำการขอเวลาทุก ๆ ชั่วโมงแล้ว&lt;/p&gt; &lt;p&gt;System Time คือเวลาที่ระบบใช้ในขณะที่ลินุกซ์ยังทำงาน โดยจะเป็นคนละส่วนกันกับ Hardware Clock (RTC - Real Time Clock) นั่นหมายความว่า ค่าเวลาที่อานได้จากคำสั่ง date จะมาจาก System Time ไม่ได้มาจาก Hardware Clock โดยหน้าที่ของ Hardware Clock ก็คือจะคอยให้เวลากับลินุกซ์ในขณะเริ่มทำงาน รวมไปถึงขณะที่ลินุกซ์ไม่ได้ทำงานด้วย(ปิดเครื่อง) ดังนั้น การตั้งเวลา Hardware Clock ตาม System Time จึงทำให้เรามั่นใจได้ว่า หากปิดเครื่องไปแล้ว เวลาที่เปิดเครื่องมาใหม่ เรายังมีเวลาของระบบที่ถูกต้องอยู่&lt;/p&gt; &lt;p&gt;มาถึงตอนนี้เราก็ได้เวลาที่ถูกต้องและค่อนข้างแม่นยำมาแล้ว ก็ทำอย่างเดียวกันกับเครื่องแม่ข่ายที่เราจะต้องส่งข้อมูลไปเก็บ และอาจจะต้องมีการเปรียบเทียบเรื่องเวลาของการใช้งาน แก้ไข ไฟล์ คราวนี้ก็ไม่มีปัญหาแล้ว :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-532730072512888567?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/532730072512888567/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=532730072512888567' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/532730072512888567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/532730072512888567'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/ntpdate_18.html' title='NTPDate: เวลานั้นสำคัญไฉน .'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4207650107174133835</id><published>2008-08-18T10:32:00.000-07:00</published><updated>2008-08-18T10:33:07.618-07:00</updated><title type='text'>บทความ debian เยอะมากๆ</title><content type='html'>http://www.thaitux.info/book/export/html/472&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4207650107174133835?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4207650107174133835/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4207650107174133835' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4207650107174133835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4207650107174133835'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/debian_18.html' title='บทความ debian เยอะมากๆ'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-512863435016013649</id><published>2008-08-18T03:51:00.000-07:00</published><updated>2008-08-18T03:58:59.264-07:00</updated><title type='text'>set php บน debian</title><content type='html'>&lt;pre&gt;apt-get update&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;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&lt;/p&gt;&lt;ul&gt;&lt;li&gt;apache &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 &lt;/li&gt;&lt;li&gt;libapache-mod-&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-gd &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-imagick &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt; &lt;/li&gt;&lt;li&gt;my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt;-server &lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;apt-get install apache &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 libapache-mod-&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-gd &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-imagick &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt; my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt;-server&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;If you are using Apache 2, you need the following packages instead&lt;/p&gt;&lt;ul&gt;&lt;li&gt;apache2-mpm-prefork &lt;/li&gt;&lt;li&gt;libapache2-mod-&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-gd &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-imagick &lt;/li&gt;&lt;li&gt;&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt; &lt;/li&gt;&lt;li&gt;my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt;-server &lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;apt-get install apache2-mpm-prefork libapache2-mod-&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4 &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-gd &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-imagick &lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: PHP" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=PHP" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=PHP', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;php&lt;/a&gt;4-my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt; my&lt;a class="glossary autolink glossaryid4" title=": : แหล่งสารานุกรมอภิธานศัพท์ ACITL : :: SQL" href="https://www.ee.buu.ac.th/courseweb/mod/glossary/showentry.php?courseid=1&amp;amp;concept=SQL" onclick="return openpopup('/mod/glossary/showentry.php?courseid=1\&amp;amp;concept=SQL', 'entry', 'menubar=0,location=0,scrollbars,resizable,width=600,height=450', 0);"&gt;sql&lt;/a&gt;-server&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-512863435016013649?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/512863435016013649/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=512863435016013649' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/512863435016013649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/512863435016013649'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/set-php-debian.html' title='set php บน debian'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1070149475928751652</id><published>2008-08-16T07:37:00.000-07:00</published><updated>2008-08-16T07:38:04.488-07:00</updated><title type='text'>การเก็บ log</title><content type='html'>การเก็บ log ต้องแบ่งเป็น 2 ส่วน&lt;br /&gt;&lt;br /&gt;1. traffic log&lt;br /&gt;&lt;br /&gt;2. data log&lt;br /&gt;&lt;br /&gt;traffic log จะเป็น log จาก internal ไปยัง external หมายความว่า user ในหน่วยงานเราไปทำอะไรที่ไหนเราต้องมีการจัดเก็บ log ครับ&lt;br /&gt;&lt;br /&gt;data log จะเป็น log ของเครื่อง server ภายในหน่วยงานเราที่เราเปิด public ให้คนภายนอกเข้าถึงได้ เช่น  mail server , ftp server , web server เพราะเครื่องพวกนี้มีโอกาสที่จะเกิดการกระทำความผิด เช่น มีคนมา post รูปภาพไม่เหมาะสม , ส่ง mail หมิ่นประมาท , อีกหลายกรณี&lt;br /&gt;&lt;br /&gt;การจัดเก็บ&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_u"&gt;&lt;b&gt;data log&lt;/b&gt;&lt;/span&gt; แค่เอาตัวโปรแกรม agent ที่ใช้ในการยิง log ไฟล์ ไป install ที่เครื่อง server ต่างๆแล้วทำการ point destination ในการจัดเก็บ log file ไปยังเครื่อง centralized log server เป็นอันใช้ได้ครับ ดังนั้น software ที่ต้องติดตั้งที่เครื่อง server ของเราก็ คือ syslog หรือ syslog-ng(syslog new generation) แต่ถ้าเป็น syslog จะมีมาให้กับ ubuntu หรือ linux ค่ายอื่นๆอยู่แล้วนะครับไม่ต้องติดตั้งเพิ่ม แต่ผมแนะนำให้ใช้เป็น syslog-ng มากกว่านะครับ เพราะ syslog-ng สามารถ filter log ได้ว่าต้องการจะจัดเก็บ log อะไรบ้าง , เก็บแค่ไหน , กรองเอาเฉพาะ log ที่ alert เรื่องใด แถมยังสามารถจัดเก็บได้ทั้งแบบ tcp และ udp ซึ่งจะต่างกับ syslog ที่เก็บได้แต่ udp พอร์ต 514 นะครับ&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_u"&gt;&lt;b&gt;traffic log&lt;/b&gt;&lt;/span&gt; กรณีเป็นปัญหาหน่อยนะครับ เพราะต้อง implement เยอะมาก(ต้องทำระบบ login)&lt;br /&gt;&lt;br /&gt;1. proxy ของโปรโตคอลต่างๆ  เช่น squid (web proxy) , frox(ftp proxy) , imspector(im proxy)&lt;br /&gt;* แต่ถ้าจะ implement ตัว imspector ต้องระวังปัญหาเรื่องละเมิดสิทธิส่วนบุคคลนะครับ เพราะมันจัดเก็บข้อความของ user ที่กำลัง chat กันลงไปใน log ด้วยครับ ไม่ได้เก็บแต่ข้อมูลการ connect ถ้าไม่อยากมีปัญหาให้ใช้ iptables ในการ monitor ตัว IM เอง วิธีไปหาเอาจาก net ละกันครับ คงไม่สอน ณ ที่นี้อาจจะยาวไปหน่อย&lt;br /&gt;&lt;br /&gt;ประโยชน์: จัดเก็บข้อมูลได้ว่า ใคร ไปทำอะไร ที่ไหน เมื่อไหร่ (แต่ใครใน log ของ proxy ดันระบุเป็น ip address ที่ปลอมได้ง่ายมากถึงมากที่สุด)&lt;br /&gt;&lt;br /&gt;2. สืบเนื่องจากข้อ 1 นะครับ ในเมื่อ ip address ไม่มีความน่าเชื่อถือในการระบุตัวตนผู้กระทำความผิด ดังนั้น เราต้องทำระบบ authentication แบบ hotspot ให้ user ในระบบ log in ก่อนเข้าใช้งาน internet ครับ ด้วยเหตุนี้เองทาง admin ต้อง implement ระบบ authentication นะครับ โดย log ของระบบ authentication มันจะเก็บในรูปแบบ &lt;br /&gt;&lt;br /&gt;  ip address      username ที่ login      เวลาที่ใช้งาน&lt;br /&gt;&lt;br /&gt;ดัง นั้นเมื่อเราเอา log จากข้อ 2 ไป map กับ log จากข้อ 1 เราก็จะทราบผู้กระทำความผิดครับ(จริงๆไปอ่าน พรบ. ให้ละเอียดจะเห็นว่า พรบ.ระบุว่าเราต้องระบุตัวตนผู้ใช้งานได้นะครับ แต่คนมักคิดว่า proxy อย่างเดียวก็พอ  &lt;img src="http://forum.ubuntuclub.com/Smileys/default/tongue.gif" alt=":P" title="Tongue" class="smiley" border="0" /&gt;)&lt;br /&gt;&lt;br /&gt;3. ต่อมา เรื่องที่สำคัญมากจนไม่อาจข้ามไปได้ คือ time server ครับ เพราะนึกเล่นๆนะครับ พนักงานเจ้าหน้าที่มาขอ log เราโดยแจ้งมาว่า ip address ของหน่วยงานเรากระทำความผิดเมื่อวันที่ 25 สิงหาคม ช่วงเช้าๆ แต่เวลาในเครื่อง log เราดันเป็นวันที่ 11 มกราคม 2499 ยังงี้ท่านอาจซวยได้นะครับ เพราะไม่ยอม sync เวลาให้ตรงกับเครื่อง time server ดังนั้นเราต้องติดตั้งโปรแกรม ntp ที่เครื่องจัดเก็บ log และเครื่อง server ต่างๆนะครับ&lt;br /&gt;&lt;br /&gt;ถาม: ต้อง sync เวลาเครื่อง server ของเราทุกเครื่องไปยังเครื่อง time server ที่เป็น stratum0 บน internet เลยหรือเปล่าครับ&lt;br /&gt;&lt;br /&gt;ตอบ: ไม่ครับ ทำงั้นเดี๋ยวเวลามันจะ delay เกิน 10 ms เพราะต้อง วิ่งไป sync กับเครื่อง time server บน net หมดยังงี้ไม่ไหว ให้แก้ไขโดยตั้งเครื่อง server ในหน่วยงานมา 1 เครื่องเอาไป sync เวลาไปยัง time server ที่เป็น stratum 0 (หรืออาจจะ sync ไปยังเครื่องของ กรมอุทกศาสตร์ , สถาบันมาตรวิทยา ที่เป็น stratum1 ก็ได้ครับ ถือว่าหยวนๆ) แล้วเราค่อยให้เครื่อง server เครื่องอื่นๆ sync time กับเครื่อง internal time server อีกทีนึงเวลาจะได้ ไม่ delay &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_u"&gt;&lt;b&gt;&lt;br /&gt;Centralized log&lt;/b&gt;&lt;/span&gt; เครื่องนี้ควรจะต้องมี harddisk ใหญ่หน่อยนะครับเอาไว้จัดเก็บ log&lt;br /&gt;&lt;br /&gt;software: &lt;br /&gt;&lt;br /&gt;1. syslog-ng  ---&gt;  เอาไว้รับ log จากเครื่อง server  (ตาม พรบ. ถือว่าเป็น data archive)&lt;br /&gt;&lt;br /&gt;2. openssl   ---&gt;  เอาไว้ encrypt log ไม่ให้ใครเข้ามาแก้ไข  (ตาม พรบ. คือป้องกันการแก้ไข)&lt;br /&gt;&lt;br /&gt;3. md5  ---&gt; เอาไว้ hashing ตาม พรบ.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;สรุป: ต้องใช้ software ดังนี้&lt;br /&gt;&lt;br /&gt;1. squid(web proxy)&lt;br /&gt;&lt;br /&gt;2. frox(ftp proxy)&lt;br /&gt;&lt;br /&gt;3. iptables(ตั้งค่าให้เก็บ log IM ซึ่งหารายละเอียดเองนะครับว่าทำไง)&lt;br /&gt;&lt;br /&gt;4. radius server(เก็บ user account ในระบบ)&lt;br /&gt;&lt;br /&gt;5. ระบบ authentication (มีเพียบเลย ซึ่ง 1 ในหลายๆตัวและเป็นที่นิยมใช้งาน คือ chillispot)&lt;br /&gt;&lt;br /&gt;6. syslog-ng (เอาไว้ทำ centralized log server และเอาไว้ติดตั้งที่เครื่องลูกเพื่อยิง log)&lt;br /&gt;*เอ้อ! ลืมไป ถ้าเป็นเครื่อง windows ใช้ snare หรือ kiwi syslog ในการทำ syslog server และ syslog agent ได้นะครับ&lt;br /&gt;&lt;br /&gt;7. ntp เอาไว้ sync เวลา&lt;br /&gt;&lt;br /&gt;เอาแค่นี้ก่อนนะครับ ลง detail มากกว่านี้จะเยอะไป ลองไปศึกษาดูก่อนค่อยว่ากันอีกที&lt;br /&gt;&lt;br /&gt;โชคดีครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1070149475928751652?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1070149475928751652/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1070149475928751652' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1070149475928751652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1070149475928751652'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/log.html' title='การเก็บ log'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5580965184575069324</id><published>2008-08-16T07:31:00.000-07:00</published><updated>2008-08-16T07:32:22.691-07:00</updated><title type='text'>โครงการเก็บข้อมูลจราจร (Traffic Data) ด้วยซอฟต์แวร์โอเพนซอร์สโดย SIPA และ ATSI</title><content type='html'>&lt;div class="panelbody"&gt; &lt;h3&gt;โครงการเก็บข้อมูลจราจร (Traffic Data)ด้วยซอฟต์แวร์โอเพนซอร์สโดย SIPA และ ATSI&lt;/h3&gt; สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ(องค์การมหาชน) หรือ SIPA ได้ร่วมมือกับสมาคมซอฟต์แวร์ไทย&lt;br /&gt; หรือ ATSI ดำเนินการจัดฝึกอบรมผู้ประกอบการในการติดตั้งและให้บริการคำปรึกษาระบบเก็บข้อมูลจราจร(Traffic Data)&lt;br /&gt;ตามพรบ.การกระทำผิดด้วยคอมพิวเตอร์ พ.ศ. 2550 ด้วยซอฟต์แวร์โอเพนซอร์สโดยจัดการอบรมรุ่นละ 5 วัน&lt;br /&gt;(วันพุธ-วันอาทิตย์)ตั้งแต่เวลา 8.30-16.30 น. กำหนดจัดอบรมจำนวน 6 รอบ รอบละ 30 คน โดยไม่มีค่าใช้จ่ายใดๆ&lt;br /&gt;ทั้งสิ้น  พร้อมอาหารว่างและอาหารกลางวัน&lt;br /&gt;&lt;br /&gt;สามารถติดต่อจองการอบรมและส่งใบสมัครหรือสอบถามรายละเอียดได้ที่&lt;br /&gt;คุณธัญฐิวา โตตณากานต์ ปุ้ย)&lt;br /&gt;โทรศัพท์: 08 9051 3756&lt;br /&gt; e-mail: thantiwa [-AT-] gmail.com&lt;br /&gt;&lt;h3&gt;ดาวน์โหลดรายละเอียดโครงการและใบสมัคร&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/SIPA%20%c3%e8%c7%c1%a1%d1%ba%20ATSI%20%e0%bb%d4%b4%a1%d2%c3%cd%ba%c3%c1%a1%d2%c3%b5%d4%b4%b5%d1%e9%a7%c3%d0%ba%ba%e0%a1%e7%ba%a2%e9%cd%c1%d9%c5%a8%c3%d2%a8%c3%20_Traffic%20Data_%20%bf%c3%d5.pdf"&gt;รายละเอียดโครงการ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/%e1%ba%ba%bf%cd%c3%ec%c1%e3%ba%ca%c1%d1%a4%c3%a1%d2%c3%e0%a2%e9%d2%cd%ba%c3%c1.doc"&gt;ใบสมัครเข้ารับการอบรม&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;ดาวน์โหลดคู่มือการติดตั้ง&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Books/syslog-ng-book.pdf"&gt;คู่มือการเก็บข้อมูลจราจรด้วย Syslog-NG,NTP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Books/Authentication-book.pdf"&gt;คู่มือการติดตั้งระบบยืนยันตัวตน(Authentication)ด้วย Chillispot&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Books/NTP-book.pdf"&gt;คู่มือการติดตั้ง NTP (Network Time Protocol)&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;ดาวน์โหลด CD Image&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Log%20Server%202.0.iso"&gt;การเก็บข้อมูลจราจรด้วย Syslog-NG,NTP &lt;/a&gt;&lt;br /&gt;MD5SUMS : 1a9c3861dc5e4c1194e7184146930a11  Log Server 2.0.iso &lt;/li&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Debian%208.iso"&gt;การติดตั้งระบบยืนยันตัวตน(Authentication) ด้วย Chillispot&lt;/a&gt;&lt;br /&gt;MD5SUMS : 2bfd9970ade6a35ed5c138634461f720  Debian 8.iso&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;ดาวน์โหลด Configuration Files&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Class1-doc/"&gt;การเก็บข้อมูลจราจรด้วย Syslog-NG  &lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;ดาวน์โหลด Slides&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Slides/"&gt;การเก็บข้อมูลจราจรด้วย Syslog-NG,NTP &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Slides/Authentication.zip"&gt;การติดตั้งระบบยืนยันตัวตน(Authentication)ด้วย Chillispot &lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;ดาวน์โหลดเอกสารอื่นๆ&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;&lt;a href="http://61.7.253.244/syslog-ng/Class1-doc/dell-optiplex-320.pdf"&gt;การแก้ปัญหา Ubuntu/Debian ไม่ Boot บน Dell Optiplex 320&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5580965184575069324?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5580965184575069324/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5580965184575069324' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5580965184575069324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5580965184575069324'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/traffic-data-sipa-atsi.html' title='โครงการเก็บข้อมูลจราจร (Traffic Data) ด้วยซอฟต์แวร์โอเพนซอร์สโดย SIPA และ ATSI'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5903200803955122577</id><published>2008-08-16T03:37:00.000-07:00</published><updated>2008-08-16T03:38:09.230-07:00</updated><title type='text'>Squid + Radius authentication</title><content type='html'>&lt;div class="entry"&gt;      &lt;p&gt;ดาวน์โหลด squid_radius_auth จาก&lt;/p&gt; &lt;div class="codesnip-container"&gt;http://www.squid-cache.org/contrib/squid_radius_auth/squid_radius_auth-1.09.tgz&lt;/div&gt; &lt;p&gt;เมื่อได้แล้วก็&lt;/p&gt; &lt;div class="codesnip-container"&gt;# tar -zxvf squid_radius_auth-1.09.tgz&lt;br /&gt;# cd squid_radius_auth-1.09&lt;br /&gt;# make clean&lt;br /&gt;# make install&lt;/div&gt; &lt;p&gt;แก้ไข /usr/local/squid/etc/squid_radius_auth.conf&lt;/p&gt; &lt;div class="codesnip-container"&gt;server xx.xx.xx.xx&lt;br /&gt;secret yoursecret&lt;/div&gt; &lt;p&gt;แก้ไข /etc/services เพราะ Radius server ของเราใช้พอร์ท 1645/1646&lt;br /&gt;เอาคอมเมนต์ออกหน้า&lt;/p&gt; &lt;div class="codesnip-container"&gt;radius          1645/udp   #RADIUS authentication protocol (old)&lt;br /&gt;radacct        1646/udp   #RADIUS accounting protocol (old)&lt;/div&gt; &lt;p&gt;พร้อมทั้งใส่คอมเมนต์ที่&lt;/p&gt; &lt;div class="codesnip-container"&gt;#radius         1812/udp   #RADIUS authentication protocol (IANA sanctioned)&lt;br /&gt;#radacct       1813/udp   #RADIUS accounting protocol (IANA sanctioned)&lt;/div&gt; &lt;p&gt;แก้ไข /usr/local/squid/etc/squid.conf&lt;/p&gt; &lt;div class="codesnip-container"&gt;auth_param basic program /usr/local/squid/libxec/squid_rad_auth -f /usr/local/squid/etc/squid_rad_auth.conf&lt;br /&gt;auth_param basic children 5&lt;br /&gt;auth_param basic realm KBU.NET Web Authentication&lt;br /&gt;auth_param basic credentialsttl 2 hours&lt;br /&gt;acl AuthorizedUsers proxy_auth REQUIRED&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;# Allow authorized users&lt;br /&gt;# ==========================&lt;br /&gt;http_access allow all AuthorizedUsers&lt;/div&gt;          &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5903200803955122577?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5903200803955122577/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5903200803955122577' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5903200803955122577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5903200803955122577'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/squid-radius-authentication.html' title='Squid + Radius authentication'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4005763044028249805</id><published>2008-08-15T09:01:00.001-07:00</published><updated>2008-08-15T09:01:37.203-07:00</updated><title type='text'>ntop โปรแกรม monitor network</title><content type='html'>&lt;strong&gt;&lt;u&gt;วิธีติดตั้งและใช้งานก็ตามนี้เลย...&lt;/u&gt;&lt;/strong&gt; &lt;ol&gt;&lt;li&gt;&lt;strong&gt;# apt-get install ntop&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;# ntop --set-admin-password&lt;/strong&gt; เพื่อกำหนด password เวลาเข้าใช้งานในส่วนของ admin ของ program&lt;/li&gt;&lt;li&gt;&lt;strong&gt;# เปิด browser พิมพ์ http://localhost:3000&lt;/strong&gt; เพื่อเรียกใช้โปรแกรม ntop ก็จะปรากฎว่าเข้าใช้ไม่ได้ ผ่างงง.....ง!!!! ก็มันยังไม่ได้ start service นี่เฟ้ย(ปั๊ดโธ่!)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;# /etc/init.d/ntop start&lt;/strong&gt; เพื่อเป็นการstart service&lt;/li&gt;&lt;li&gt;เปิด browser แล้วก็พิมพ์งี้ &lt;strong&gt;http://localhost:3000&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;ว่ะ ฮะ ฮ่ะๆๆ! สำเร็จ &lt;ul&gt;&lt;li&gt;ถ้า จะเข้าใช้งานบางส่วนของ program (ส่วนadmin) จะมีการถาม password ให้กรอก password ตามที่ได้ตั้งไว้ตั้งแต่ต้น ส่วน username ให้กรอกว่า admin&lt;/li&gt;&lt;li&gt;ถ้า จะให้ work ควรลง program นี้ที่ gateway จะทำให้ดู traffic การใช้งานเครือข่ายของเราได้ทั้งหมด ว่าเครื่องไหนมีพฤติกรรมการใช้งานเครือข่ายยังไงบ้าง เช่น เครื่อง 192.168.20.11 มีพฤติกรรม ยิง packet ออก internet เป็นจำนวนมากอย่างต่อเนื่อง ในฐานะ admin ก็ block ซะ หมั่นไส้!!! เวลาเรียกใช้งานก็ไม่ต้องไปนั่งหน้า gatewayนะ ใช้comเครื่องไหนก็ได้ แล้วก็พิมพ์ &lt;strong&gt;http://192.168.20.254:3000&lt;/strong&gt; (สมมติว่า ip นี้เป็น ip ของ gateway)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4005763044028249805?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4005763044028249805/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4005763044028249805' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4005763044028249805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4005763044028249805'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/ntop-monitor-network.html' title='ntop โปรแกรม monitor network'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5221328942259865648</id><published>2008-08-13T17:50:00.001-07:00</published><updated>2008-08-13T17:50:57.876-07:00</updated><title type='text'>ติดตั้ง Shorewall บน Ubuntu</title><content type='html'>&lt;div class="content"&gt;&lt;div class="post-body"&gt;&lt;strong&gt;อ้างอิง &lt;a href="http://www.ubuntuclub.com/node/529"&gt;http://www.ubuntuclub.com/node/529&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div class="post-body"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div class="post-body"&gt;&lt;strong&gt;ติดตั้ง Firewall&lt;/strong&gt; - อันนี้เป็นสิ่งจำเป็นเช่นเดียวกัน คุณสามารถบล๊อกการติดต่อทั้งหมดจากภายนอกได้ ยกเว้นพอร์ตที่คุณต้องการจะเปิดไว้ เวปเซิฟเวอร์จะใช้พอร์ต 80 และ ssh ใช้ พอร์ต อะไรก็ได้ที่คุณตั้งใน /etc/ssh/sshd_config (ค่าปกติอคือ 22 )&lt;br /&gt;&lt;br /&gt;สำหรับ firewall ใน Ubuntu จะมีให้เลือกอยู่ 2 ตัว ถ้าคุณยังคงใช้เครื่องนี้เป็น desktop ต่อไปด้วย คุณอาจใช้ FireStarter เป็น graphical firewall manager แต่ถ้าคุณใช้เครื่องนี้เป็นเซิฟเวอร์อย่างเดียว คุณอาจเลือก Shorewall เพราะคุณสามารถแก้ไขจาก command line (ไม่แน่ใจว่า Firestarter จะสามารถใช้ command line ได้หรือเปล่าไม่เคยลอง) ในการติดตั้ง Shorewall ให้พิมพ์บันทัดต่อไปนี้:&lt;/div&gt; &lt;blockquote&gt; &lt;p&gt;sudo apt-get install shorewall&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;จากนั้นพิมพ์คำสั่งต่อไปนี้:&lt;/p&gt; &lt;p&gt;cd /usr/share/doc/shorewall/default-config&lt;br /&gt;sudo cp interfaces /etc/shorewall/&lt;br /&gt;sudo cp policy /etc/shorewall/&lt;br /&gt;sudo cp rules /etc/shorewall/&lt;br /&gt;sudo cp zones /etc/shorewall/&lt;/p&gt; &lt;p&gt;โดยการใช้คำสั่งในการแก้ไข (เช่น sudo nano หรือ sudo gedit) คุณต้องแก้ไขไฟล์ 4 ไฟล์ ให้เพิ่มบันทัดนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/interfaces:&lt;/p&gt; &lt;p&gt;net eth0 detect&lt;/p&gt; &lt;p&gt;เพิ่มบันทัดนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/zones:&lt;/p&gt; &lt;p&gt;net ipv4&lt;/p&gt; &lt;p&gt;คุณจะต้องมีบันทัดที่เขียนว่า "fw firewall" อยู่ใน zones file ให้ใส่บันทัดต่อไปนี้ก่อนบันทัดสุดท้ายของ /etc/shorewall/policy:&lt;/p&gt; &lt;p&gt;fw net ACCEPT net all DROP info all all REJECT info&lt;/p&gt; &lt;p&gt;และเพิ่มบันทัดเหล่านี้ไปยังไฟล์ /etc/shorewall/rules ของคุณหลังจาก SECTION NEW line:&lt;/p&gt; &lt;p&gt;#change "22" to the port you used for ssh if not the default one: ACCEPT net fw tcp 22 ACCEPT net fw tcp www,https&lt;/p&gt; &lt;p&gt;เปลี่ยนจาก 22 ไปเป็นพอร์ตที่คุณจะใช้สำหรับ ssh ให้เอาคำว่า ",https" ออก ถ้าคุณไม่คิดว่าจะติดตั้ง ssh module ใดๆ สำหรับ apache&lt;br /&gt;webserver (เพื่อความปลอดภัยในการทำธุรกรรมซื้อขาย) สุดท้ายแก้ไขไฟล์ /etc/default/shorewall โดยเปลี่ยนบันทัดที่มีคำว่า startup=0 เป็น:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;startup=1&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;คุณสามารถเปิด firewall โดยใช้คำสั่ง:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;sudo invoke-rc.d shorewall start&lt;/p&gt; &lt;/blockquote&gt; &lt;div class="post-body"&gt;ส่วนตัวเลือกอื่นๆ คุณสามารถผ่านไปยัง invoke-rc.d รวมถึงการ start, stop, และ restart&lt;/div&gt;&lt;/div&gt;               &lt;b&gt;หมวดหมู่: &lt;/b&gt;       &lt;a href="http://gotoknow.org/post/section/7"&gt;วิทยาศาสตร์ เทคโนโลยี&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5221328942259865648?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5221328942259865648/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5221328942259865648' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5221328942259865648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5221328942259865648'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/shorewall-ubuntu.html' title='ติดตั้ง Shorewall บน Ubuntu'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1878533509144101465</id><published>2008-08-13T09:59:00.000-07:00</published><updated>2008-08-13T17:50:27.361-07:00</updated><title type='text'>ผมจะทำ Server สำหรับให้บาง user สามารถเข้าอินเตอร์เน็ตได้</title><content type='html'>&lt;pre&gt;# iptables -A FORWARD -m mac --mac-source A1:B1:C1:D1:E1:F1 -s 192.168.0.11 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -m mac --mac-source A2:B2:C2:D2:E2:F2 -s 192.168.0.12 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -j DROP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1878533509144101465?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1878533509144101465/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1878533509144101465' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1878533509144101465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1878533509144101465'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/server-user.html' title='ผมจะทำ Server สำหรับให้บาง user สามารถเข้าอินเตอร์เน็ตได้'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8911678778351470164</id><published>2008-08-13T08:34:00.001-07:00</published><updated>2008-08-13T08:34:42.576-07:00</updated><title type='text'>คำสั่งเฝ้ามองระบบ Linux</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;vmstat เช่น vmstat -d&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;lsof เช่น lsof  /bin/bash&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;ps เช่น ps -aF , ps -ef&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง top&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง htop ให้ติดตั้งโปรแกรม htop ก่อนด้วยคำสั่ง apt-get htop จากนั้นเรียกใช้งาน htop ผ่าน command line ได้เลย&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง fuser&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง w และ who&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง last&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง iptables -L -v&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง netstat เช่น netstat -lnup&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง iptraf ต้องติดตั้งโปรแกรม iptraf ก่อนด้วยคำสั่ง&lt;br /&gt;apt-get install iptraf จากนั้นเรียกใช้งานด้วยคำว่า iptraf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#333399;"&gt;คำสั่ง watch เช่น watch arp -e&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8911678778351470164?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8911678778351470164/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8911678778351470164' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8911678778351470164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8911678778351470164'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/linux_13.html' title='คำสั่งเฝ้ามองระบบ Linux'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4343734770817912605</id><published>2008-08-13T08:12:00.000-07:00</published><updated>2008-08-13T08:13:39.068-07:00</updated><title type='text'>สงสัยเรื่อง ไฟล์วอล</title><content type='html'># iptables -L&lt;br /&gt;&lt;br /&gt;หรือจะถามถึงพอร์ตที่เปิดรับ service ทั้งหมด ณ ปัจจุบัน?&lt;br /&gt;$ apt-get install nmap&lt;br /&gt;$ nmap 127.0.0.1&lt;br /&gt;$ nmap your ip&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4343734770817912605?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4343734770817912605/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4343734770817912605' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4343734770817912605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4343734770817912605'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/blog-post_13.html' title='สงสัยเรื่อง ไฟล์วอล'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-420579625681652578</id><published>2008-08-12T09:34:00.001-07:00</published><updated>2008-08-12T09:34:39.407-07:00</updated><title type='text'>IPTABLES เป็น Firewall พื้นฐานของ Linux เกือบทุก Distro</title><content type='html'>&lt;div&gt;&lt;span style="background-color: rgb(255, 102, 0);" &gt;&lt;strong&gt;IPTABLES เป็น Firewall พื้นฐานของ Linux เกือบทุก Distro และให้ประสิทธิภาพที่สูงมากในการ Filtering Traffic และ การป้องกันการ Attack ต่างๆ โดยที่จะมีตัวอย่างพอสังเขป ดังนี้&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;เปิดการใช้งาน IP Forward ป้องกัน Syn Flood และ อนุญาติให้มีการใช้งานแบบ Dynamic IP (ต่อเนต DSL ทั่วไป)&lt;/span&gt;&lt;br /&gt;[root@localhost]#echo 1 &gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;[root@localhost]#echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies&lt;br /&gt;[root@localhost]#echo 1 &gt; /proc/sys/net/ipv4/ip_dynaddr&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;Drop Packet ก่อนหน้านี้ทั้งหมด&lt;br /&gt;&lt;/span&gt;[root@localhost]#iptables -F INPUT&lt;br /&gt;[root@localhost]#iptables -F FORWARD&lt;br /&gt;[root@localhost]#iptables -F OUTPUT&lt;br /&gt;[root@localhost]#iptables -P INPUT DROP&lt;br /&gt;[root@localhost]#iptables -P FORWARD DROP&lt;br /&gt;[root@localhost]#iptables -P OUTPUT ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -i lo -j ACCEPT&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;อนุญาติเฉพาะ SSH, SMTP, DNS, Web Services, SSL และ POP3 ให้ผ่านเข้าออก&lt;/span&gt;&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 22 --syn -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 25 --syn -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 53 --syn -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p udp --dport 53 --syn -j ACCEPT  &lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 80 --syn -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 443 --syn -j ACCEPT&lt;br /&gt;[root@localhost]#iptables -A INPUT -p tcp --dport 110 --syn -j ACCEPT&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;ป้องกันการ scan ports&lt;/span&gt;&lt;br /&gt;[root@localhost]#iptables -N check-flags&lt;br /&gt;[root@localhost]#iptables -F check-flags&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "NMAP:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL ALL -j DROP&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "XMAS-PSH:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "NULL_SCAN:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags ALL NONE -j DROP&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/RST:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags SYN,RST SYN,RST -j DROP&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "SYN/FIN:"&lt;br /&gt;[root@localhost]#iptables -A check-flags -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;ป้องกันการ flood SSH (SSH Brute Force)&lt;/span&gt;&lt;br /&gt;[root@localhost]#iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set&lt;br /&gt;[root@localhost]#iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 600 --hitcount 2 -j DROP&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;ห้าม ping&lt;br /&gt;&lt;/span&gt;[root@localhost]#iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j DROP&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;ห้าม traceroute&lt;br /&gt;&lt;/span&gt;[root@localhost]#iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j DROP&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;Protect Syn Flood&lt;/span&gt;&lt;br /&gt;[root@localhost]#iptables-N syn-flood&lt;br /&gt;[root@localhost]#iptables -A syn-flood -i ppp0 -m limit --limit 75/s --limit-burst 100 -j RETURN&lt;br /&gt;[root@localhost]#iptables -A syn-flood -j LOG --log-prefix "SYN-FLOOD: "&lt;br /&gt;[root@localhost]#iptables -A syn-flood -j DROP&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;REDIRECT PORT 10080 to 80&lt;br /&gt;&lt;/span&gt;[root@localhost]#iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.xxx.xxx:10080&lt;br /&gt;[root@localhost]#iptables -A FORWARD -p tcp -i ppp0 -d 192.168.xxx.xxx --dport 80 -j ACCEPT (192.168.xxx.xxx = ip ของเรา)&lt;br /&gt;[root@localhost]#iptables -A FORWARD -p tcp -i ppp0 -d 192.168.xxx.xxx --sport 80 -j ACCEPT&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;span style="color:#ff0000;"&gt;Transparent Proxy&lt;/span&gt;&lt;br /&gt;[root@localhost]#iptables -t nat -A PREROUTING -p TCP --dport 80 -j REDIRECT -to-ports 3128&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-420579625681652578?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/420579625681652578/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=420579625681652578' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/420579625681652578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/420579625681652578'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/iptables-firewall-linux-distro.html' title='IPTABLES เป็น Firewall พื้นฐานของ Linux เกือบทุก Distro'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-6780028055362510461</id><published>2008-08-12T09:16:00.000-07:00</published><updated>2008-08-12T09:17:03.625-07:00</updated><title type='text'>ดูข้อมูลของ CPU</title><content type='html'>&lt;pre class="geshifilter"&gt;&lt;span&gt;&lt;span style="color:blue;"&gt;cat /proc/cpuinfo&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-6780028055362510461?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/6780028055362510461/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=6780028055362510461' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6780028055362510461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6780028055362510461'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/cpu.html' title='ดูข้อมูลของ CPU'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5183103992090926305</id><published>2008-08-12T08:59:00.001-07:00</published><updated>2008-08-12T08:59:25.507-07:00</updated><title type='text'>Ubuntu : iptables rule</title><content type='html'>&lt;div class="content"&gt;&lt;p&gt;เป็นความรู้ที่ได้รับจากพี่ต๊อกถ่ายทอดมาให้อีกที เป็นเรื่องเกี่ยวกับการตั้งกฏของโปรแกรม iptables ใน Ubuntu&lt;/p&gt; &lt;p&gt;ซึ่งโดยปรกตินั้นเจ้า Ubuntu มันก็จะมีโปรแกรม iptables ติดตั้งมาให้เลยตอนที่ลงโปรแกรม แต่ว่ามันไม่ได้สร้างกฏเกณฑ์อะไรมาให้ทั้งนั้น ซึ่งก็คือมันไม่สามารถป้องกันอะไรได้เลย (แล้วมันจะติดมาให้ทำไมหว่า)&lt;/p&gt; &lt;p&gt;เมื่อก่อนเคยใช้ linux ตระกูลพวก Red hat ซึ่งถ้าหากต้องการเขียนกฏเกณฑ์อะไรของ Firewall ก็เข้าไป edit กฏเอาตรงเลยที่ /etc/sysconfig แล้วเปิดไฟล์ iptables edit กฏกันตรงๆ เลย&lt;/p&gt; &lt;p&gt;แต่พอมาใช้ Ubuntu มันกลับไม่มีเจ้าไฟล์นี้มาให้ คราวนี้ก็ไปไม่ถูกเลยสิครับท่าน เลยไม่ได้ทำอะไรกับ firewall ทั้งนั้น&lt;/p&gt; &lt;p&gt;แล้วความซวยก็มาถึง เหมือนนิยายนำ้เน่าเลย&lt;/p&gt; &lt;p&gt;เหมือนโดนล้วงคอ&lt;/p&gt; &lt;p&gt;คุมเครื่่อง Server อยู่มาเป็นปีเป็นชาติ &lt;/p&gt; &lt;p&gt;สุดท้ายโดนจนได้ เจอมือดีมันเข้ามาล้วงข้อมูลในเครื่อง Server เลยแถมมันยังลบข้อมูลเราด้วย&lt;/p&gt; &lt;p&gt;สุดท้ายจับไม่ได้ไล่ไม่ทัน ก็ต้องยอมมันไป ต้องเสียเวลามากู้ระบบอีก เอาข้อมูลกลับมาอีก เหนื่อยเลย &lt;/p&gt; &lt;p&gt;แล้วสุดท้ายก็ถึงบางอ้อว่า นี่เองความสำคัญอย่างหนึ่งของ Firewall ก็เลยต้องหันมาให้ความสำคัญกับมันแบบจริงๆ จังๆ อย่างมากๆ เลย สุดท้ายก็ได้พี่ต๊อกมาสอนเรื่องการสร้างกฏเพื่อป้องกันขึ้นพื้นฐานเอาไว้ให้ พออุ่นใจได้บ้างก็ดีว่าไม่มีเลย&lt;/p&gt; &lt;p&gt;สำหรับ Ubuntu มันไม่มีไฟล์ /etc/sysconfig/iptables ก็ไม่เป็นไร ก็สร้างไฟล์ขึ้นมาเองเลย สร้างไว้ที่ไหนก็ได้ยกตัวอย่างเช่น สร้างไว้ที่ home ของ user ก็ได้ ตั้งชื่อว่า iptables.firewall ก็แล้วกัน โดยการสร้างไฟล์นี้ทำได้โดย&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:blue;"&gt;# sudo iptables-save &gt;  iptables.firewall&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; เราก็จะได้ไฟล์ iptables.firewall ซึ่งจะบรรจุ pattern ของกฏเปล่าๆ ขึ้นมา จากนั้นก็ทำการแก้ไฟล์โดยใสกฏป้องกันเบื้องต้นดังนี้&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:blue;"&gt;# pico /home/phisan/iptables.firewall&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; จากนั้นทำการ edit file นี้โดยใส่ pattern ต่างๆ ดังนี้เช่น&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;&lt;br /&gt;# Generated by iptables-save v1.3.5 on Mon Feb 19 21:47:01 2007&lt;br /&gt;*filter&lt;br /&gt;:INPUT ACCEPT [1665:126682]&lt;br /&gt;:FORWARD ACCEPT [0:0]&lt;br /&gt;:OUTPUT ACCEPT [911:121420]&lt;br /&gt;# Completed on Mon Feb 19 21:47:01 2007&lt;br /&gt;&lt;br /&gt;#@Allow httpd service ------------------------------------------------&lt;br /&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT&lt;br /&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 443 -j ACCEPT&lt;br /&gt;&lt;br /&gt;#@Allow admin computer to remote login -----------------------------&lt;br /&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 22 -s xx.xx.xx.xx -j ACCEPT&lt;br /&gt;&lt;br /&gt;#@Allow ftp service from any where -----------------------------------&lt;br /&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 21 -s 0/0 -j ACCEPT&lt;br /&gt;&lt;br /&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP&lt;br /&gt;-A INPUT -i eth0 -p icmp -j DROP&lt;br /&gt;-A INPUT -i eth0 -j DROP&lt;br /&gt;COMMIT&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; อธิบายกฏอย่างคร่าว คือ&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือบริการให้เครื่องต่างๆ สามารถเรียกใช้บริการ ผ่าน port 80 ได้ซึ่งก็คือ port ของ web&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 22 -s xx.xx.xx.xx -j ACCEPT&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือเปิดบริการให้เฉพาะเครื่องที่มีหมายเลย ip xx.xx.xx.xx สามารถทำการ ssh เข้ามาได้เท่านั้น&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 21 -s 0/0 -j ACCEPT&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือเปิดบริการ ftp ได้จากทุกที่ และทุกเครื่อง สามารถเรียกใช้บริการนี้ได้&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือการปิดให้บริการ ssh ในกรณีที่มี request ที่นอกเหนือจากการอนุญาติโดยกฏข้างบน&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -p icmp -j DROP&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือการปิดการให้บริการ ping ไม่ว่าเครื่องใดๆ ที่ทำการ ping เข้ามาจะไม่มีการตอบรับจากเครื่องนี้&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:green;"&gt;-A INPUT -i eth0 -j DROP&lt;/span&gt;&lt;/pre&gt;&lt;p&gt; คือส่วนที่ใช้สำหรับเก็บตกจากฏต่างๆ ข้างบน คือถ้านอกเหนือจากกฏข้างบนแล้วจะทำการ Drop package ที่วิ่งเข้ามาทั้งหมดทิ้งไป&lt;/p&gt; &lt;p&gt;ความจริงยังมีกฏอีก แต่เอาแค่นี้ก่อนแล้วกัน เดี๋ยวชาวบ้านรู้ไต๋หมดไม่ได้&lt;/p&gt; &lt;p&gt;แต่แค่นี้ยังไม่จบ ต้องทำให้เจ้าตัว iptables รับรู้กฏที่เราสร้างขึ้นโดยการใช้คำสั่ง&lt;/p&gt; &lt;pre class="geshifilter"&gt;&lt;span style="color:blue;"&gt;# sudo iptables-restore &lt;&gt;&lt;/pre&gt;&lt;p&gt; หรือว่าจะคำสั่งนี้ไปใส่ใน rc.local ก็ได้จะได้ทำการ load rule นี้ให้กับ iptables แบบอัตโนมัติ ทุกครั้งที่ boot เครื่องเลย&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5183103992090926305?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5183103992090926305/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5183103992090926305' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5183103992090926305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5183103992090926305'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/ubuntu-iptables-rule.html' title='Ubuntu : iptables rule'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2774327199891989957</id><published>2008-08-12T08:55:00.001-07:00</published><updated>2008-08-12T08:55:30.366-07:00</updated><title type='text'>Iptables : SSH Brute force attack</title><content type='html'>&lt;p&gt;สำหรับคนที่ใช้ iptables นะครับ กรณีที่ยังไม่ได้ใช้ความสามารถ ของ recent module ใน iptables การป้องกันในอีกวิธีหนึ่งคือ นับจำนวน connection ในช่วงเวลาหนึ่งและ block ซึ่งก็เป็นวิธีที่ใช้การได้ดีในระดับหนึ่ง&lt;br /&gt;ลองเอาไปใช้ดูนะครับวิธีการมีมากมาย ขึ้นอยู่กับความเหมาะสม และ การนำไปใช้นะครับ แต่ไม่ได้หมายความว่าจะดีที่สุด เราก้ต้องศึกษาหาข้อมูลกันต่อไป&lt;/p&gt; &lt;p&gt;&lt;code&gt;iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;iptables -A INPUT -m tcp -p tcp -s My.local.Lan.0/24 --dport 22 -j ACCEPT&lt;br /&gt;iptables -A INPUT -m tcp -p tcp -s Trusted.Internet.Machine --dport 22 -j ACCEPT&lt;br /&gt;iptables -A INPUT -m tcp -p tcp --dport 22 -m state --state NEW -m limit --limit 1/min --limit-burst 2 -j ACCEPT&lt;br /&gt;iptables -A INPUT -m tcp -p tcp --dport 22 -j LOG --log-prefix SSHBRUTE&lt;br /&gt;iptables -A INPUT -m tcp -p tcp --dport 22 -j DROP&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ความหมายคร่าวๆ&lt;br /&gt;The effect is that the firewall will only admit two (for example) incoming new SSH connections per minute (it will reset the “burst” counter every minute).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2774327199891989957?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2774327199891989957/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2774327199891989957' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2774327199891989957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2774327199891989957'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/iptables-ssh-brute-force-attack.html' title='Iptables : SSH Brute force attack'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-6153036722498544735</id><published>2008-08-12T05:30:00.000-07:00</published><updated>2008-08-12T07:06:51.971-07:00</updated><title type='text'>My Firewall Config:</title><content type='html'>&lt;pre&gt;################################&lt;br /&gt;iptables -A INPUT -p tcp --dport 80 -j ACCEPT    //apache&lt;br /&gt;iptables -A INPUT -p tcp --dport 443 -j ACCEPT    //apache ssl&lt;br /&gt;iptables -A INPUT -p tcp --dport 53 -j ACCEPT    //dns - udp for large queries&lt;br /&gt;iptables -A INPUT -p udp --dport 53 -j ACCEPT    //dns - udp for small queries&lt;br /&gt;iptables -A INPUT -p tcp --dport 953 -j ACCEPT    //dns internal&lt;br /&gt;iptables -A INPUT -p tcp --dport 1080 -j ACCEPT    //dante socks server&lt;br /&gt;iptables -A INPUT -d 136.201.1.250 -p tcp --dport 22 -j ACCEPT      //sshd&lt;br /&gt;iptables -A INPUT -d 136.201.1.250 -p tcp --dport 3306 -j ACCEPT    //mysql&lt;br /&gt;iptables -A INPUT -d 136.201.1.250 -p tcp --dport 8000 -j ACCEPT    //apache on phi&lt;br /&gt;iptables -A INPUT -s 136.201.1.250 -p tcp --dport 8080 -j ACCEPT   //jboss for ejc&lt;br /&gt;iptables -A INPUT -d 136.201.1.250 -p tcp --dport 993 -j ACCEPT    //imaps&lt;br /&gt;iptables -A INPUT -s 127.0.0.1 -p tcp --dport 111 -j ACCEPT       //to speed up mail via courier. Identified via logging&lt;br /&gt;iptables -A INPUT -d 136.201.1.250 -p tcp --dport 139 -j ACCEPT   //samba&lt;br /&gt;iptables -A INPUT -s 127.0.0.1 -p tcp --dport 143 -j ACCEPT    //squirrelmail&lt;br /&gt;iptables -A INPUT -p tcp --dport 4949 -j ACCEPT   //munin stats&lt;br /&gt;iptables -A INPUT -p tcp --dport 25 -j ACCEPT    //incoming mail&lt;br /&gt;iptables -A INPUT -p tcp --dport 3128 -j ACCEPT  //squid&lt;br /&gt;iptables -A INPUT -p udp --dport 161 -j ACCEPT  //snmpd&lt;br /&gt;iptables -A INPUT -p icmp -j ACCEPT  //Allow ICMP Ping packets.&lt;br /&gt;iptables -A INPUT -p tcp -m tcp --tcp-flags ACK ACK -j ACCEPT&lt;br /&gt;iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT&lt;br /&gt;iptables -A INPUT -m state --state RELATED -j ACCEPT&lt;br /&gt;iptables -A INPUT -j REJECT&lt;br /&gt;#################################&lt;br /&gt;iptables-save &gt; rules-saved&lt;br /&gt;iptables-restore rules-saved&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="content"&gt;     &lt;p&gt;เอาคำสั่ง iptables-restore &lt;&gt; &lt;p&gt;ตัวอย่างประมาณนี้ครับ โดยจะมี keyword 4 อันครับคือ pre-up post-up pre-down post-down&lt;br /&gt;รายละเอียด ลอง $ man interfaces ดูครับ&lt;/p&gt; &lt;p&gt;auto eth0&lt;br /&gt;iface eth0 inet static&lt;br /&gt;        address blablabla&lt;br /&gt;        netmask blablabla&lt;br /&gt;        gateway blablabla&lt;br /&gt;        post-up iptables-restore &lt; rulesfile&lt;br /&gt;        pre-down iptables-save &gt; rulesfile&lt;/p&gt;   &lt;/div&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-6153036722498544735?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/6153036722498544735/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=6153036722498544735' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6153036722498544735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/6153036722498544735'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/my-firewall-config.html' title='My Firewall Config:'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2006967645101816729</id><published>2008-08-12T05:29:00.001-07:00</published><updated>2008-08-12T05:29:50.041-07:00</updated><title type='text'>debian: iptables</title><content type='html'>&lt;p&gt;iptables บนเดเบียน มี 2 วิธี (จริง ๆ มีหลายวิธีมาก)&lt;/p&gt; &lt;ol&gt;&lt;li&gt;แบบใช้ iptables-save + iptables-restore&lt;br /&gt;รันคำสั่งเพื่อสร้างกฎต่าง ๆ&lt;br /&gt;&lt;code&gt;# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE&lt;br /&gt;# iptables -A FORWARD -s 192.168.0.0/16 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -d 192.168.0.0/16 -j ACCEPT&lt;br /&gt;# iptables -A FORWARD -s ! 192.168.0.0/16 -j DROP&lt;/code&gt; &lt;p&gt;เก็บกฎไว้ที่ไฟล์ /etc/iptables/rules&lt;br /&gt;&lt;code&gt;# mkdir -p /etc/iptables&lt;br /&gt;# iptables-save &gt; /etc/iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces&lt;br /&gt;&lt;code&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;   address 192.168.5.3&lt;br /&gt;   netmask 255.255.255.0&lt;br /&gt;   network 192.168.5.0&lt;br /&gt;   broadcast 192.168.5.255&lt;br /&gt;   gateway 192.168.5.1&lt;br /&gt;   &lt;strong&gt;post-up /sbin/iptables-restore &lt; /etc/iptables/rules&lt;br /&gt;   pre-down /sbin/iptables-save &gt; /etc/iptables/rules&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;แบบใช้สคริปต์&lt;br /&gt;สร้างสคริปต์เก็บไว้คือ /usr/local/bin/d.iptables&lt;br /&gt;&lt;code&gt;# vi /usr/local/bin/d.iptables&lt;/code&gt; &lt;pre&gt;#!/bin/sh&lt;br /&gt;INTERFACE=eth1&lt;br /&gt;INT_NET=192.168.0.0/16&lt;br /&gt;/sbin/iptables -F &gt; /dev/null&lt;br /&gt;/sbin/iptables -t nat -A POSTROUTING -o $PPP_INT -j MASQUERADE&lt;br /&gt;/sbin/iptables -A FORWARD -s $INT_NET -j ACCEPT&lt;br /&gt;/sbin/iptables -A FORWARD -d $INT_NET -j ACCEPT&lt;br /&gt;/sbin/iptables -A FORWARD -s ! $INT_NET -j DROP&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;# chmod 755 /usr/local/bin/d.iptables&lt;/code&gt;&lt;/p&gt; &lt;p&gt;นำกฎมาใช้ตอนเปิดเครื่องใหม่ ผ่าน /etc/network/interfaces&lt;br /&gt;&lt;code&gt;# mkdir -p /etc/iptables/&lt;br /&gt;# vi /etc/network/interfaces&lt;/code&gt;&lt;/p&gt; &lt;pre&gt;...&lt;br /&gt;auto eth1&lt;br /&gt;iface eth1 inet static&lt;br /&gt;   address 192.168.5.3&lt;br /&gt;   netmask 255.255.255.0&lt;br /&gt;   network 192.168.5.0&lt;br /&gt;   broadcast 192.168.5.255&lt;br /&gt;   gateway 192.168.5.1&lt;br /&gt;   &lt;strong&gt;post-up /usr/local/bin/d.iptables&lt;br /&gt;   pre-down /sbin/iptables-save &gt; /etc/iptables/rules&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;(เวลาจะปรับปรุงสคริปต์ เอาเนื้อความจาก /etc/iptables/rules มาใช้ในการปรับปรุงได้) &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2006967645101816729?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2006967645101816729/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2006967645101816729' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2006967645101816729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2006967645101816729'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/debian-iptables.html' title='debian: iptables'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4003484427465990728</id><published>2008-08-12T05:09:00.000-07:00</published><updated>2008-08-12T05:10:35.407-07:00</updated><title type='text'>ICMP iptables</title><content type='html'>หลังจากลงเสร็จ เราก็มาเริ่มกันเลยดีกว่า&lt;br /&gt;ก่อนอื่น สมมุติว่าเราอยากจะปิดเครื่องเราโดยสมบูรณ์แบบ แบบว่าชาตินี้ข้าไม่ต้องการคุยกะชาวบ้าน ชาวช่องอีกเลย ก็ให้สั่งว่า&lt;br /&gt;&gt; iptables -A INPUT -i eth0 -j DROP&lt;br /&gt;ถ้าสั่งแบบนี้ แปลว่าเราไม่รับ package ใดๆ ที่เข้ามาทาง eth0 เลย (ก็ไม่ฟังชาวบ้านหน่ะละ)&lt;br /&gt;&lt;br /&gt;note: eth0 ก็คือ LAN Card ตัวที่ 1 ของเรา ถ้ามีตัวอื่นๆ อีกก็ไล่ไปเรื่อย&lt;br /&gt;note2: ถ้าไม่ได้อยู่หน้า console อย่าไปสั่ง command นี้เชียว เดี๋ยวจะเป็นเรื่อง&lt;br /&gt;&lt;br /&gt;ที นี้มันเป็นไปได้หรือ? ที่จะไม่คุยกะชาวบ้านชาวช่องเลย คำตอบคือ เป็นไปไม่ได้ครับ แล้วทีนี้จะทำไงละ? ก็ต้องปิดเป็นจุดๆ ไป เช่น สมมุติว่า เราไม่อยากให้ชาวบ้านเค้า ping เราเจอ เราก็จะสั่งว่า&lt;br /&gt;&lt;br /&gt;&gt; iptables -A INPUT -p icmp -j DROP&lt;br /&gt;มัน แปลว่า ถ้ามีอะไรก็ตามที่เป็น icmp เข้ามา ก็ให้ drop ทิ้งไป ไม่ต้องสนใจ ที่นี้ ถ้าสมมุติว่าเรามี LAN Card หลายตัว เกิดอยากปิดแค่บางตัวจะทำยังไง เราก็ต้องผสมคำสั่งเข้าไปซิครับ ย้อนกลับไปดูอันบนกันหน่อย ผมมี -i eth0 อยู่ใช่ม่ะ? เราก็เอาไอ้ -i eth0 นี่ละ มาใส่เข้าไปเลย กลายเป็น&lt;br /&gt;&lt;br /&gt;&gt; iptables -A INPUT -i eth0 -p icmp -j DROP&lt;br /&gt;คราวนี้มันก็จะแปลได้ว่า ถ้ามี icmp เข้ามาทาง eth0 เมื่อไหรให้ drop ทิ้งไป แต่ถ้ามาทางอื่นๆ ก็ไม่ต้องทำอะไร (คือปล่อยไปตามปกติ)&lt;br /&gt;&lt;br /&gt;คราวนี้มาดูความหมายกันมั่งว่าไอ้ parameter แต่ละตัวเนี่ย มันคืออะไรกันบ้าง? เริ่มจาก&lt;br /&gt;&lt;br /&gt;: &lt;span style="font-weight: bold;"&gt;-A INPUT&lt;/span&gt; ไอ้เข้า &lt;span style="font-weight: bold;"&gt;-A INPUT&lt;/span&gt; เนี่ย มันหมายถึงขาเข้า ทีนี้มีขาเข้ามันก็ต้องมีขาออก ก็เปลี่ยนจาก &lt;span style="font-weight: bold;"&gt;-A INPUT&lt;/span&gt; เป็น &lt;span style="font-weight: bold;"&gt;-A OUTPUT&lt;/span&gt; เท่านั้นเองครับ ถ้าเราใช้ &lt;span style="font-weight: bold;"&gt;-A&lt;/span&gt; ต่อๆ กันหลายๆ คำสั่ง มันก็จะเอา rule ไปต่อท้ายเรื่อยๆ ถ้าหากต้องการแทรก ให้ใช้ &lt;span style="font-weight: bold;"&gt;-I INPUT 1&lt;/span&gt; แทน ซึ่งถ้าใส่ 1 มันจะเติมเข้าไปเป็นตัวแรกสุดเลย&lt;br /&gt;&lt;br /&gt;: &lt;span style="font-weight: bold;"&gt;-i eth0&lt;/span&gt; ใช้ได้กะ &lt;span style="font-weight: bold;"&gt;-A INPUT&lt;/span&gt; เท่านั้น เอาไว้ระบุว่าจะให้ดู package ที่ LAN Card ตัวไหน อีกตัวที่เป็นไปได้คือ &lt;span style="font-weight: bold;"&gt;-o eth0&lt;/span&gt; ก็จะใช้ได้กะ &lt;span style="font-weight: bold;"&gt;-A OUTPUT&lt;/span&gt; เท่านั้นเหมือนกัน&lt;br /&gt;&lt;br /&gt;: &lt;span style="font-weight: bold;"&gt;-p icmp&lt;/span&gt; ไอ้ตัวนี้ละที่จะเป็นตัวกำหนดเลยว่าเราจะ monitor protocal ประเภทไหน เช่น &lt;span style="font-weight: bold;"&gt;icmp (ping), tcp, udp&lt;/span&gt; หรือว่าอื่นๆ ถ้าเป็น &lt;span style="font-weight: bold;"&gt;tcp&lt;/span&gt; หรือว่า &lt;span style="font-weight: bold;"&gt;udp&lt;/span&gt; เราสามารถกำหนด port เพิ่มเติมได้ด้วย parameter &lt;span style="font-weight: bold;"&gt;-dport 80&lt;/span&gt; หรือ &lt;span style="font-weight: bold;"&gt;-sport 80&lt;/span&gt; สองตัวนี้ต่างกันตรงที่ว่า ตัวนึงไว้ใช้กะ &lt;span style="font-weight: bold;"&gt;-A INPUT&lt;/span&gt; (-dport 80) ส่วนอีกตัวไว้ใช้กะ &lt;span style="font-weight: bold;"&gt;-A OUTPUT&lt;/span&gt; (-sport 80)&lt;br /&gt;&lt;br /&gt;: &lt;span style="font-weight: bold;"&gt;-J DROP&lt;/span&gt; ไอ้เจ้าตัวนี้ละสำคัญที่สุด มันจะเป็นตัวที่บอกว่า ถ้ามี package เข้ามาตามเงื่อนไขที่ระบุไว้ในบรรทัดนี้แล้ว จะให้ทำยังไง เป็นไปได้คือ &lt;span style="font-weight: bold;"&gt;DROP, ACCEPT, REJECT, REDIRECT&lt;/span&gt; ซึ่งที่เราสนใจจะมีสองตัวคือ &lt;span style="font-weight: bold;"&gt;DROP&lt;/span&gt; กะ &lt;span style="font-weight: bold;"&gt;ACCEPT&lt;/span&gt; ความหมายก็ตามชื่อมันเลย &lt;span style="font-weight: bold;"&gt;DROP&lt;/span&gt; ก็ช่างหัวมัน ทิ้งไปโล้ด ส่วน &lt;span style="font-weight: bold;"&gt;ACCEPT&lt;/span&gt; ก็รับมาเข้ามาแล้วจะจัดการยังไงต่อเป็นอีกเรื่องนึง&lt;br /&gt;&lt;br /&gt;: &lt;span style="font-weight: bold;"&gt;-F&lt;/span&gt; อันนี้รุนแรงสุดละ มันคือคำสั่งที่จะลบ rule ทั้งหมดที่เคยทำไว้ ถ้าเกิดทำๆ ไปแล้วเจ๊งก็สามารถ reset ได้ด้วยวิธีนี้ครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4003484427465990728?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4003484427465990728/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4003484427465990728' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4003484427465990728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4003484427465990728'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/icmp-iptables.html' title='ICMP iptables'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3592949737637628927</id><published>2008-08-12T03:46:00.000-07:00</published><updated>2008-08-12T03:48:41.250-07:00</updated><title type='text'>วิธี set iptables บน linux แบบง่ายๆ</title><content type='html'>&lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;ACCEPT = ยอมให้ผ่าน&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;DROP = ไม่สนใจแพ็กเกต&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;REJECT = ไม่สนใจเหมือนกัน แต่ จะแจ้งให้ เราทราบ&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j ACCEPT&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A OUTPUT -p tcp -s 192.168.0.0/24 -j DROP&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A OUTPUT -p tcp -d 192.168.0.0/24 -j DROP&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;&lt;strong&gt;#### ถ้าต้อง การให้ firwall ปล่อยให้ port ไหน ผ่าน ให้ เปลี่ยน ตัวเลขของ port &lt;/strong&gt;&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A FORWARD -p tcp -s 192.168.0.0/24 --destination-port 80 -j ACCEPT&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A FORWARD -p tcp -d 192.168.0.0/24 --destination-port 80 -j ACCEPT&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;&lt;strong&gt;#### Block MSN &lt;/strong&gt;&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A INPUT -p tcp -s 192.168.0.0/24 --destination-port 1836 -j DROP&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A INPUT -p tcp -d 192.168.0.0/24 --destination-port 1836 -j DROP&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A FORWARD -p tcp -s 192.168.0.0/24 --destination-port 1836 -j DROP&lt;/span&gt;&lt;/div&gt; &lt;div align="left"&gt;&lt;span style="font-family:MS Sans Serif;font-size:85%;"&gt;iptables -A FORWARD -p tcp -d 192.168.0.0/24 --destination-port 1836 -j DROP&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3592949737637628927?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3592949737637628927/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3592949737637628927' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3592949737637628927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3592949737637628927'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/set-iptables-linux.html' title='วิธี set iptables บน linux แบบง่ายๆ'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8349667399992457557</id><published>2008-08-11T17:29:00.000-07:00</published><updated>2008-08-11T17:34:14.476-07:00</updated><title type='text'>ปัญหาเรื่อง function บน MySQL 5.x</title><content type='html'>&lt;p&gt;shell&gt; mysql_upgrade -u root -p&lt;br /&gt;shell&gt; mysql_fix_privilege_tables --password=root_password&lt;br /&gt;mysql&gt; SET GLOBAL log_bin_trust_function_creators = 1; &lt;/p&gt; &lt;p&gt;สำเร็จครับ error ที่เจอหายเป็นปลิดทิ้ง ดังตัวอย่าง&lt;/p&gt; &lt;pre&gt;################&lt;br /&gt;[root@mysqlserver ~]# ps -aux |grep mysql&lt;br /&gt;mysql   690  0.0  0.1  3456  1408 con- I     7:45AM   0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra&lt;br /&gt;mysql   791  0.0  1.2 57904 23896 con- S     7:45AM   0:00.29 [mysqld]&lt;br /&gt;root   1391  0.0  0.1  3308  1108  p0  S+    8:14AM   0:00.00 grep mysql&lt;br /&gt;[root@mysqlserver ~]# mysqladmin -u root password 'xxxxxxxx'&lt;br /&gt;[root@mysqlserver ~]# mysql_upgrade -u root -p&lt;br /&gt;Enter password:&lt;br /&gt;Looking for 'mysql' in: mysql&lt;br /&gt;Looking for 'mysqlcheck' in: mysqlcheck&lt;br /&gt;Running 'mysqlcheck'...&lt;br /&gt;mysql.columns_priv                                 OK&lt;br /&gt;mysql.db                                           OK&lt;br /&gt;mysql.event                                        OK&lt;br /&gt;mysql.func                                         OK&lt;br /&gt;mysql.general_log&lt;br /&gt;Error    : You can't use locks with log tables.&lt;br /&gt;status   : OK&lt;br /&gt;mysql.help_category                                OK&lt;br /&gt;mysql.help_keyword                                 OK&lt;br /&gt;mysql.help_relation                                OK&lt;br /&gt;mysql.help_topic                                   OK&lt;br /&gt;mysql.host                                         OK&lt;br /&gt;mysql.ndb_binlog_index                             OK&lt;br /&gt;mysql.plugin                                       OK&lt;br /&gt;mysql.proc                                         OK&lt;br /&gt;mysql.procs_priv                                   OK&lt;br /&gt;mysql.servers                                      OK&lt;br /&gt;mysql.slow_log&lt;br /&gt;Error    : You can't use locks with log tables.&lt;br /&gt;status   : OK&lt;br /&gt;mysql.tables_priv                                  OK&lt;br /&gt;mysql.time_zone                                    OK&lt;br /&gt;mysql.time_zone_leap_second                        OK&lt;br /&gt;mysql.time_zone_name                               OK&lt;br /&gt;mysql.time_zone_transition                         OK&lt;br /&gt;mysql.time_zone_transition_type                    OK&lt;br /&gt;mysql.user                                         OK&lt;br /&gt;Running 'mysql_fix_privilege_tables'...&lt;br /&gt;OK&lt;br /&gt;[root@mysqlserver ~]# mysql_fix_privilege_tables --password=xxxxxxxx&lt;br /&gt;This script updates all the mysql privilege tables to be usable by&lt;br /&gt;the current version of MySQL&lt;br /&gt;&lt;br /&gt;done&lt;br /&gt;[root@mysqlserver ~]# mysql -u root -p&lt;br /&gt;Enter password:&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 16&lt;br /&gt;Server version: 5.1.22-rc-log FreeBSD port: mysql-server-5.1.22&lt;br /&gt;&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&gt; SET GLOBAL log_bin_trust_function_creators = 1;&lt;br /&gt;Query OK, 0 rows affected (0.00 sec)&lt;br /&gt;&lt;br /&gt;mysql&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8349667399992457557?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8349667399992457557/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8349667399992457557' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8349667399992457557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8349667399992457557'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/function-mysql-5x.html' title='ปัญหาเรื่อง function บน MySQL 5.x'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5522224089761057176</id><published>2008-08-10T09:03:00.000-07:00</published><updated>2008-08-10T09:04:05.340-07:00</updated><title type='text'>NTPDate: เวลานั้นสำคัญไฉน ....</title><content type='html'>&lt;p&gt;ที่ ตั้งหัวเรื่องอย่างนี้ก็เพราะสิ่งที่เรากำลังจะมาดูกันก็คือเรื่อง "เวลา" และเจ้าเวลานี่เองที่เป็นต้นเหตุของการเรียนรู้ในครั้งนี้ เรื่องก็มีอยู่ว่า หากเราใช้งานเครื่องคอมพิวเตอร์เราคนเดียว ไม่ต้องติดต่อกับใคร ไม่ต้องส่งข้อมูลให้ใคร เรื่องเวลาเราจะตั้งเป็นเท่าไรก็ได้ ช้าหรือเร็วก็แล้วแต่ชอบใจ แต่เมื่อใดก็ตามที่เราต้องส่งข้อมูลไปยังเครื่องอื่น ๆ และต้องมีการเปรียบเทียบกันว่าข้อมูลตัวไหนเป็นตัวใหม่หรือเก่าแล้วหละก็ ....เกิดปัญหาแล้วสิ.... เพราะการจะเปรียบเทียบกันต้องตั้งอยู่บนฐานเวลาที่ตรงกัน หากช้า หรือเร็วกว่ากัน ก็ส่งผลให้การเปรียบเทียบผิดพลาด&lt;/p&gt; &lt;p&gt; วิธีแก้ปัญหา ... ก็ตั้งเองให้มันตรงกันสิ นั่นมันก็ได้อยู่หรอก แต่มีวิธีที่ดีกว่านั้น เราคงเคยได้ยินเรื่องการตั้งเวลา โดยการรับค่าเวลาจากเซิร์ฟเวอร์เวลา (Time Server) ซึ่งเครื่องที่ขอเวลาจากเซิร์ฟเวอร์ ก็จะได้เวลาที่ตรงกันเอง โดยไม่ต้องออกแรงมากมาย งั้นก็เริ่มลงโปรแกรมเลยละกันครับ&lt;/p&gt; &lt;p&gt;&lt;code&gt; # aptitude install ntpdate &lt;/code&gt;&lt;/p&gt; &lt;p&gt;ได้โปรแกรมมาแล้ว ก็เหลือแต่ต้องตั้งค่าต่าง ๆ ให้โปรแกรม แต่ว่าไปแล้วค่าที่ระบบตั้งมาให้ก็ใช้ได้แล้ว อาจจะไม่ต้องแก้อะไรเลย&lt;/p&gt; &lt;p&gt;ลองขอเวลาดู&lt;/p&gt; &lt;p&gt;&lt;code&gt; # ntpdate-debian &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;31 Jan 00:24:55 ntpdate[10301]: adjust time server 216.162.200.152 offset -0.000195 sec&lt;/pre&gt;&lt;p&gt; อาฮ่า.... ได้เวลามาแล้ว แต่ค่อนข้างช้าแฮะ ... ทำไหมเหรอครับ ก็เจ้าเซิร์ฟเวอร์เวลา ที่ตั้งค่ามากับแพ็คเกจ เขาไม่ได้ตั้งสำหรับเราคนไทยใช่ไหมครับ งั้นก็มาใช้ตัวที่อยู่ใกล้ ๆ หน่อยละกันจะได้เร็วหน่อย&lt;/p&gt; &lt;p&gt;&lt;code&gt; # echo "server th.pool.ntp.org" &gt; /etc/ntp.conf &lt;/code&gt;&lt;/p&gt; &lt;p&gt;คราวนี้ลองดูใหม่&lt;/p&gt; &lt;p&gt;&lt;code&gt; # ntpdate-debian &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;31 Jan 00:29:51 ntpdate[10329]: adjust time server 61.19.242.42 offset 0.001380 sec&lt;/pre&gt;&lt;p&gt; รอบนี้ได้มาเหมือนกัน เร็วกว่าด้วย&lt;/p&gt; &lt;p&gt;แต่ทว่า โดยพื้นฐานของระบบแล้ว จะเกิดการคลาดเคลื่อนของเวลาตลอดเวลาทีละเล็กทีละน้อย เนื่องจากพื้นฐานความแตกต่างทางด้านฮาร์ดแวร์ ซึ่งมีความแม่นยำต่างกัน ดังนั้นการขอเวลาจากเซิร์ฟเวอร์เวลาตามช่วงเวลาที่กำหนด อาจจะเป็น 1-2 ชั่วโมงต่อครั้ง จึงเป็นความคิดที่ดี&lt;/p&gt; &lt;p&gt;งั้นก็กำหนด&lt;br /&gt;&lt;code&gt; /etc/crond.hourly/updatetime &lt;/code&gt;&lt;/p&gt; &lt;pre&gt;#!/bin/bash&lt;br /&gt;/usr/sbin/ntpdate-debian &gt; /dev/null&lt;br /&gt;/sbin/hwclock --adjust   # ปรับค่าความแตกต่างเวลาระหว่าง System Time กับ Hardware Clock (RTC)&lt;br /&gt;/sbin/hwclock --systohc # ตั้งค่าเวลา Hardware Clock ตาม System Time&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt; # /etc/init.d/cron restart &lt;/code&gt;&lt;/p&gt; &lt;p&gt;ตอนนี้เครื่องของเราก็จะทำการขอเวลาทุก ๆ ชั่วโมงแล้ว&lt;/p&gt; &lt;p&gt;System Time คือเวลาที่ระบบใช้ในขณะที่ลินุกซ์ยังทำงาน โดยจะเป็นคนละส่วนกันกับ Hardware Clock (RTC - Real Time Clock) นั่นหมายความว่า ค่าเวลาที่อานได้จากคำสั่ง date จะมาจาก System Time ไม่ได้มาจาก Hardware Clock โดยหน้าที่ของ Hardware Clock ก็คือจะคอยให้เวลากับลินุกซ์ในขณะเริ่มทำงาน รวมไปถึงขณะที่ลินุกซ์ไม่ได้ทำงานด้วย(ปิดเครื่อง) ดังนั้น การตั้งเวลา Hardware Clock ตาม System Time จึงทำให้เรามั่นใจได้ว่า หากปิดเครื่องไปแล้ว เวลาที่เปิดเครื่องมาใหม่ เรายังมีเวลาของระบบที่ถูกต้องอยู่&lt;/p&gt; &lt;p&gt;มาถึงตอนนี้เราก็ได้เวลาที่ถูกต้องและค่อนข้างแม่นยำมาแล้ว ก็ทำอย่างเดียวกันกับเครื่องแม่ข่ายที่เราจะต้องส่งข้อมูลไปเก็บ และอาจจะต้องมีการเปรียบเทียบเรื่องเวลาของการใช้งาน แก้ไข ไฟล์ คราวนี้ก็ไม่มีปัญหาแล้ว :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5522224089761057176?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5522224089761057176/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5522224089761057176' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5522224089761057176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5522224089761057176'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/ntpdate.html' title='NTPDate: เวลานั้นสำคัญไฉน ....'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-819263028540373270</id><published>2008-08-10T08:59:00.000-07:00</published><updated>2008-08-10T09:00:20.120-07:00</updated><title type='text'>ตั้งเวลาด้วย at</title><content type='html'>&lt;p&gt;คำสั่ง &lt;strong&gt;at&lt;/strong&gt; เป็นคำสั่งที่เอาไว้สั่งให้ โปรแกรม อื่นๆทำงานตามเวลา ที่กำหนด ซึ่งบางทีเรายังไม่อยากให้มันทำ ณ. เวลาปัจจุบัน เช่น จำเป็นจะต้องโหลดโปรแกรมขนาดใหญ่ แต่ก็ยังเป็นช่วงเวลาทำงานอยู่ เกรงว่าคนอื่นจะได้รับผลกระทบ ก็เลยต้องเลื่อนเวลาออกไปโหลดตอน ห้าทุ่ม แต่ก็กลัวลืม และคงรอไม่ไหว คำสั่งนี้ช่วยได้&lt;/p&gt; &lt;p&gt;การใช้คำสั่งนี้ก็ง่ายนิดเดียว โดยเรียกคำสั่งแล้วตามด้วยเวลา แล้ว enter หน้าจอจะขึ้นบรรทัดใหม่ ตรงนี้ให้ใส่คำสั่งที่ต้องการจะให้ทำงาน เสร็จแล้วจะออกจากโปรแกรม &lt;strong&gt;at&lt;/strong&gt; ก็ให้กด Ctrl+d ก็จะออกจากโปรแกรม &lt;strong&gt;at&lt;/strong&gt; พร้อมแจ้ง job และเวลาที่จะทำงาน ดังตัวอย่าง&lt;br /&gt;&lt;code lang="bash"&gt;&lt;br /&gt;wutthiphan@enigma:~$ at 23:00&lt;br /&gt;warning: commands will be executed using /bin/sh&lt;br /&gt;at&gt; wget -b -c ftp://ftp.au.debian.org/pub/debian-cd/4.0_r0/debian-40r0-i386-DVD-2.iso&lt;br /&gt;(กด CTRL+D)&lt;br /&gt;job 4 at Fri Apr 20 23:00:00 2007&lt;br /&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;เราสามารถตรวจสอบ job ที่ยังค้างอยู่ด้วยคำสั่ง &lt;strong&gt;atq&lt;/strong&gt; และหากต้องการลบ job ทิ้งก็สามารถใช้คำสั่ง &lt;strong&gt;atrm&lt;/strong&gt; ได้&lt;br /&gt;ใช้คำสั่ง &lt;strong&gt;atq&lt;/strong&gt; ดู job ที่ยังไม่ได้ทำ&lt;br /&gt;&lt;code lang="bash"&gt;&lt;br /&gt;wutthiphan@enigma:~$ atq&lt;br /&gt;4       Fri Apr 20 23:00:00 2007 a wutthiphan&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;จากด้านบนมี job หมายเลข 4 รอการทำงานที่เวลา 23:00 น. หากต้องการลบก็สามารถสั่ง atrm และตามด้วย job id เช่น&lt;br /&gt;&lt;code lang="bash"&gt;&lt;br /&gt;wutthiphan@enigma:~$ atrm 4&lt;br /&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;การตั้งเวลาแบบต่างๆ เพื่อความยืดหยุ่นในการใช้งานขอยกตัวอย่างสักเล็กน้อยดังนี้&lt;/p&gt; &lt;p&gt;ตั้งให้ทำงานเวลา หกโมงเช้า วันจันทร์&lt;br /&gt;&lt;code lang="bash"&gt;at 6am monday&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ตั้งให้ทำงานในอีก 30 นาทีข้างหน้า&lt;br /&gt;&lt;code lang="bash"&gt;at now + 30 minutes&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ตั้งให้ทำงานเวลา ตีสี่ ในอีก 3 วันข้างหน้า&lt;br /&gt;&lt;code lang="bash"&gt;at 4am + 3 days&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ตั้งให้ทำงานเวลา 8 โมงเช้า ของวันที่ 27 เมษายน&lt;br /&gt;&lt;code lang="bash"&gt;at 8am April 27&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ที่สำคัญเพื่อให้คำสั่ง at ทำงานได้ service atd นั้นต้องทำงานอยู่ด้วย start service atd โดยสั่งดังนี้&lt;br /&gt;&lt;code lang="bash"&gt;# /etc/init.d/atd start&lt;/code&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-819263028540373270?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/819263028540373270/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=819263028540373270' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/819263028540373270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/819263028540373270'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/at.html' title='ตั้งเวลาด้วย at'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-7712635948970457489</id><published>2008-08-10T08:12:00.000-07:00</published><updated>2008-08-10T08:16:43.062-07:00</updated><title type='text'>การ dump ข้อมูลใน MySQL ให้ถูกต้องตาม Character-set</title><content type='html'>ธีการใช้คำสั่งก็ คือ&lt;p&gt;mysqldump --default-character-set=&lt;span style="color:#ff0000;"&gt;latin1&lt;/span&gt; -h &lt;span style="color:#ff0000;"&gt;MySQLserver &lt;/span&gt;-u &lt;span style="color:#ff0000;"&gt;username&lt;/span&gt; -p &lt;span style="color:#ff0000;"&gt;DBName&lt;/span&gt; &gt;&lt;span style="color:#ff0000;"&gt;DBName&lt;/span&gt;.sql&lt;/p&gt;&lt;p&gt;ใช้คำสั่ง sed s/latin1/tis-620/g db_name_tbl.sql &gt; db_name_tbl1.sql&lt;br /&gt;&lt;/p&gt;&lt;p&gt;สร้าง databases ให้เป็น tis620&lt;/p&gt;&lt;p&gt;นำ db_name_tbl1.sql มา dump เข้าฐานข้อมูล&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-7712635948970457489?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/7712635948970457489/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=7712635948970457489' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7712635948970457489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7712635948970457489'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/dump-mysql-character-set.html' title='การ dump ข้อมูลใน MySQL ให้ถูกต้องตาม Character-set'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2697030406513688648</id><published>2008-08-10T06:45:00.000-07:00</published><updated>2008-08-10T06:46:16.303-07:00</updated><title type='text'>การติดตั้ง shoutcast เป็น video streaming</title><content type='html'>&lt;p&gt;                        แบ่งเป็น 2 ฝั่ง &lt;br /&gt; 1. ฝั่ง server&lt;br /&gt; เริ่มต้นให้ทำการ fetch เอาไฟล์ shoutcast-1-9-5-freebsd5-elf.tar.gz มา เอาจากที่นี่ก็ได้ครับ&lt;br /&gt; #fetch&lt;a target="_blank" href="http://bsd.psru.ac.th/book2/shoutcast/shoutcast-1-9-5-freebsd5-elf.tar.gz"&gt;http://bsd.psru.ac.th/book2/shoutcast/shoutcast-1-9-5-freebsd5-elf.tar.gz&lt;/a&gt;&lt;br /&gt;จริง ๆ แล้วมีใน ports นะครับ จะอยู่ที่ /usr/ports/audio/shoutcast แต่เท่าที่ลองดูมะแจ่มครับ มะรู้ว่าเพราะผม set ไม่เป็นหรือเปล่า - -"&lt;br /&gt; จากนั้นก็ทำการแตกไฟล์ออกครับ&lt;br /&gt; #tar zxvf shoutcast-1-9-5-freebsd5-elf.tar.gz&lt;br /&gt; เข้าไปใน folder ที่แตกออกมา&lt;br /&gt; #cd shoutcast-1-9-5-freebsd5-elf&lt;br /&gt; จากนั้นให้ทำการแก้ไขไฟล์ sc_serv.conf โดยมีรายละเอียดหลัก ๆ ดังนี้&lt;br /&gt;ตรง password=changme ให้เปลี่ยน changme เป็น password ของเราครับ จะเป็น password ที่เครื่องลูกจะใช้ตอน stream ส่งข้อมูลเข้ามาครับ&lt;br /&gt; ตรง ;AdminPassword=adminpass ให้เอาเครื่องหมาย ; ออก แล้วตรง adminpass ให้เปลี่ยน password ของผู้ดูแลครับ&lt;br /&gt; เสร็จเรียบร้อยการ config เบื่องต้น จากนั้นสั่งให้ shoutcast server ทำงานโดยสั่ง&lt;br /&gt; #./sc_serv&lt;br /&gt; เรียบร้อยครับฝั่ง server  &lt;img src="http://www.thaibsd.com/webboard/pic/b7.gif" border="0" /&gt; &lt;/p&gt; &lt;p&gt;  2. ฝั่ง stream client &lt;br /&gt; ก่อนอื่น download โปรแกรม nsvtools ลงมาก่อน จาก url นี้ครับ&lt;br /&gt;&lt;a target="_blank" href="http://www.nullsoft.com/nsv/nsvtools-setup.exe"&gt;http://www.nullsoft.com/nsv/nsvtools-setup.exe&lt;/a&gt;&lt;br /&gt;พอ download มาแล้วก็ทำการติดตั้งเลยครับ แนะว่าที่เก็บโปรแกรมให้เปลี่ยนจากของเดิมที่จะเอาไปเก็บใน c:\Program Files\NSVtools เป็น C:\NSVtools เฉย ๆ ดีกว่าครับเวลาเข้าไปสั่งให้ทำงานหรือ config จะง่ายกว่าครับ&lt;br /&gt;หลังจากติดตั้งเสร็จแล้วก็เริ่ม config กันเลยครับไปที่ dos promtp (windows ที่สูงกว่า me ไปที่ start --&gt; run ---&gt; พิมพ์ cmd กด ok, windows ตั้งแต่ me ลงมา ไปที่ start --&gt; run ---&gt; พิมพ์ command --&gt; กด ok) จากนั้นไปยัง directory ที่เราติดตั้งโปรแกรมลงไป (ของผมติดตั้งใน C:\NSVtools)&lt;br /&gt; ที่ command line&lt;br /&gt; #cd \&lt;br /&gt; #cd NSVtools&lt;br /&gt; #nsvenc /config&lt;br /&gt;จะปรากฏหน้าตาแบบนี้ครับ ให้เรากำหนดค่าตามใจชอบได้เลยครับ (แล้วแต่มั่ก) จากนั้นคลิ๊กที่ NSV Encoder Configuration จะปรากฏหน้าจอประมาณนี้ขึ้นมา ให้เราตั้งค่าประมาณนี้ครับ ส่วนสำคัญจะอยู่ที่ Audio Format กับ Video แนะนำว่าให้ตั้งตามนี้ครับ&lt;br /&gt;เสร็จแล้วครบการ config นั้นทำการ encoder ไฟล์ media ของเราได้เลยครับ ทำการ copy ไฟล์ที่เราจะ encoder ไปเก็บไว้ที่ที่เราติดตั้งโปรแกรมไว้ ผมเก็บไว้ที่ C:\NSVtools ครับ ซึ่งการ encoder รูปแบบมาตรฐานจะมีรุปแบบดังนี้้ครับ&lt;br /&gt; #nsvenc input.นามสกุล output.nsv&lt;br /&gt; สมมติว่าผมมีไฟล์ชื่อ video.mpg ผมก็จะสั่งดังนี้&lt;br /&gt; #nsvenc video.mpg video.nsv&lt;br /&gt; มันก็จะทำการ encoder ไฟลืให้เรา หาก error ให้ทำการ config ค่า encoder ใหม่ครับ&lt;br /&gt;หลังจากเสร็จเรียบร้อยให้ทำการสร้าง folder ขึ้นมา 1 folder และทำการ ย้ายไฟล์ video.nsv ไปเก็บไว้ที่ folder นั้น เช่นผมเก็บไฟล์ video เกี่ยวกับกิจกรรมผมก็จะตั้งชื่อว่า activity (จะอยู่ที่ C:\NSVtools\activity)&lt;br /&gt; จากนั้นให้เราทำการสร้างไฟล์ headers.txt ขึ้นมาโดยมีรายละเอียดในไฟล์ดังนี้&lt;br /&gt; ###### รายละเอียดในไฟล์ headers.txt #############&lt;br /&gt; changeme &lt;-== รหัสผ่านที่จะ connect ไปที่ shoutcast server ที่เรากำหนดไว้ตั้งแต่ตอนแรกอ่ะครับ (ฝั่ง server)&lt;br /&gt; content-type:video/nsv&lt;br /&gt; icy-metadata:0&lt;br /&gt; icy-name:My NSV Stream  &lt;-== ใส่รายละเอียด อันนี้แล้วแต่มัก&lt;br /&gt; icy-genre:Video&lt;br /&gt; icy-pub:0&lt;br /&gt; icy-br:128&lt;br /&gt; icy-url:http://www.shoutcast.com &lt;-== ใส่ url ของ web เรา อันนี้แล้วแต่มัก&lt;br /&gt; icy-irc:#chan&lt;br /&gt; icy-icq:1234567&lt;br /&gt; icy-aim:SomeUser&lt;br /&gt; icy-reset:1&lt;br /&gt; #### จบ #####&lt;br /&gt; จากนั้นทำการ save และนำไปเก็บไว้ที่ C:\NSVtools เรียบร้อยแล้วเราก็เริ่มบรรเลงเพลงยุทธิ์ได้เลยครับ โดยสั่งดังนี้&lt;br /&gt; #nsvscsrc 192.168.1.1:8001:headers.txt activity&lt;br /&gt;เมื่อ 192.168.1.1 คือ ip เครื่อง shoutcast server และ 8001 คือ port ของ shoutcast ที่เราตั้งไว้ 8000 (ให้เพิ่มขึ้นอีก 1) และ activity คือ directory ที่เราเอาไฟล์ media ที่เรา encode เสร็จแล้วไปเก็บไว้ครับ&lt;br /&gt;เรียบร้อยครับ โอย เสร็จซะที่ - -" หลัก ๆ ก็ตามนี้ถ้าติดปัญหาค่อยมา Post ถามอีกทีครับ ตอนนี้ผมขอตัวเอาเครื่องคอมพ์ไปติดให้ User ก่อน โอยเหนื่อย เมื่อไหร่หลวงพี่จะสึกเนี่ย&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2697030406513688648?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2697030406513688648/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2697030406513688648' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2697030406513688648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2697030406513688648'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/shoutcast-video-streaming.html' title='การติดตั้ง shoutcast เป็น video streaming'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-7127723392462714813</id><published>2008-08-10T06:05:00.001-07:00</published><updated>2008-08-10T06:05:41.232-07:00</updated><title type='text'>ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer</title><content type='html'>http://www.tpit.co.th/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-7127723392462714813?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/7127723392462714813/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=7127723392462714813' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7127723392462714813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/7127723392462714813'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/centralized-log-php-syslogviewer.html' title='ทำเองได้ centralized log แถมวิวได้ด้วย php syslogviewer'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-814526460281854816</id><published>2008-08-10T05:18:00.000-07:00</published><updated>2008-08-10T05:50:04.435-07:00</updated><title type='text'>backup mysql database ด้วย mysqldump</title><content type='html'>&lt;p&gt;สำหรับ database เล็กๆ ใช้ phpmyadmin ก็สะดวกดี แต่ถ้า database ขนาดใหญ่ หลายล้าน records ล่ะ ก็คงไม่สะดวก ยิ่ง Server config ให้ PHP เป็น &lt;a href="http://www.php.net/features.safe-mode" target="_blank"&gt;safe mode&lt;/a&gt; ก็จะมีปัญหากับ time-out   ซึ่งทำให้ใช้ phpMyAdmin ไม่ได้ &lt;br /&gt;&lt;br /&gt;เขียน PHP scripts ให้ backup database โดยการ generate เป็น ไฟล์ SQL เก็บเอาไว้&lt;br /&gt;มันก็ใช้งานได้ดีอยู่..  แต่มันทำงานได้ช้ามาก  (เกือบ 1 ชั่วโมง สำหรับ database ขนาด 300 MB)&lt;br /&gt;&lt;br /&gt;สำหรับการ backup database ขนาดใหญ่แล้ว  ผมคิดว่า mysqldump นั้นมีประสิทธิภาพมากที่สุดแล้ว&lt;br /&gt;&lt;!--emo&amp;:P--&gt;&lt;!--endemo--&gt;ทั้งๆที่มากับ mysql อยู่แล้ว ทำไมจึงมองข้ามก็ไม่รู้ :)     วันนี้ก็เลยมาลองใช้สิ่งที่ MySQL จัดเตรียมมาให้แล้ว&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;การ backup&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;คำสั่งสำหรับ backup ฐานข้อมูล ของ mysql คือ  mysqldump รูปแบบการใช้งานมีดังต่อไปนี้&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color: rgb(102, 153, 153);"&gt;shell&gt; mysqldump [options] db_name [tables]&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(102, 153, 153);"&gt;shell&gt; mysqldump [options] --databases db_name1 [db_name2 db_name3...]&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: rgb(102, 153, 153);"&gt;shell&gt; mysqldump [options] --all-databases &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;สำหรับรายละเอียดของ options ต่างๆ ดูที่ &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html" target="_blank"&gt;http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;strong&gt;ตัวอย่างการใช้งาน&lt;/strong&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color: rgb(0, 204, 204);"&gt;#mysqldump -u root -p mydatabase &gt; db.sql &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt; สำหรับบน Linux และ NetWare จะมี   &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/mysqlhotcopy.html" target="_blank"&gt;mysqlhotcopy&lt;/a&gt; ให้ใช้ด้วย พัฒนาโดยคุณ Tim Bunce เขียนด้วย PERL เพราะท่านเล่น lock และ flush จากนั้นก็ copy file มาซะงั้น &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;การ restore&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="background-color: rgb(102, 153, 153);"&gt;#mysql -u root -p database &lt;&gt;&lt;/p&gt;&lt;/blockquote&gt;ง่ายๆ และรวดเร็วดี :)&lt;!--emo&amp;:)--&gt;&lt;!--endemo--&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.theprojects.org/tutorials/mysqldump.php" target="_blank"&gt;How to backup a MySQL database with mysqldump&lt;/a&gt; &lt;span style="color: red;"&gt;แนะนำ&lt;/span&gt;&lt;br /&gt;&lt;a href="http://linuxcommand.org/man_pages/mysqldump1.html" target="_blank"&gt;mysqldump man page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html" target="_blank"&gt;8.12. mysqldump — A Database Backup Program&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-814526460281854816?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/814526460281854816/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=814526460281854816' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/814526460281854816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/814526460281854816'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/backup-mysql-database-mysqldump.html' title='backup mysql database ด้วย mysqldump'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1154431784884757082</id><published>2008-08-10T02:54:00.000-07:00</published><updated>2008-08-10T03:29:05.777-07:00</updated><title type='text'>Comodo Firewall</title><content type='html'>http://ninkungz.exteen.com/20080527/defense-comodo-firewall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1154431784884757082?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1154431784884757082/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1154431784884757082' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1154431784884757082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1154431784884757082'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/comodo-firewall.html' title='Comodo Firewall'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-32642265682318186</id><published>2008-08-08T06:29:00.000-07:00</published><updated>2008-08-08T06:49:22.579-07:00</updated><title type='text'>ป้องกันการโจมตีด้วย SSH</title><content type='html'>เปลี่ยน port ที่ใข้ใน /etc/ssh/sshd_config&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# &lt;strong&gt;aptitude install fail2ban&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local&lt;/strong&gt;&lt;br /&gt;# &lt;strong&gt;vi /etc/fail2ban/jail.local&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;[DEFAULT]&lt;br /&gt;ignoreip = 127.0.0.1  # เป็น ip ที่จะไม่มีการ Ban โดยเด็ดขาด&lt;br /&gt;bantime = 1440        # เป็นเวลาที่จะ Ban IP ครับ ค่าเริ่มต้น 600 วินาที = 10 นาที&lt;br /&gt;                    # น้อยไปก็เปลี่ยนได้ครับ 1440 วินาที = 1 วัน&lt;br /&gt;                    # หรือ -1 สำหรับการ Ban IP ตลอดไป จนกว่าจะ Reboot&lt;br /&gt;maxretry = 3          # ให้ผู้ไม่ประสงค์ดี หรือแม้แต่เราเอง ลองได้กี่ครั้ง&lt;br /&gt;...&lt;br /&gt;[ssh-ddos]&lt;br /&gt;enabled = true       # ผมเปลี่ยนจาก false เป็น true เพื่อเพิ่มการตรวจสอบ SSH DoS&lt;br /&gt;port     = ssh, sftp&lt;br /&gt;filter     = sshd-ddos&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; แก้ไขเสร็จ สั่งเริ่ม Service ใหม่&lt;/p&gt; # &lt;strong&gt;/etc/init.d/fail2ban restart&lt;/strong&gt; &lt;p&gt; ผลคือ&lt;/p&gt; # &lt;strong&gt;cat /var/log/fail2ban.log&lt;/strong&gt; ... 2007-09-17 18:33:15,860 fail2ban.actions: WARNING [ssh] Ban 125.24.142.28 2007-09-17 18:34:25,008 fail2ban.actions: WARNING [ssh] Ban 60.191.41.108 ... &lt;p&gt; ความสามารถของ fail2ban ยังไม่หมดแค่การตรวจสอบ และปิดกั้นสำหรับ SSH เท่านั้น ยังมีอีกหลาย Service ที่ fail2ban สามารถเฝ้ายามให้ได้ ไม่ว่าจะเป็น apache, vsftpd, proftpd, postfix, couriersmtp, named (DNS) เป็นต้น&lt;/p&gt; &lt;p&gt;หลังจากวันนี้ไป... ใครจะมาโจมตีก็ทำได้ยากซักหน่อยละครับผม :)&lt;/p&gt;&lt;pre&gt;#####################################################################&lt;br /&gt;&lt;br /&gt;ตัวโปรแกรม fail2ban&lt;br /&gt;มันจะเป็นโปรแกรมจำพวกป้องกันการพยายาม login&lt;br /&gt;เข้าใช้งานระบบจากผู้ไม่ประสงค์ดี หลักการง่ายๆสมมติเครื่อง server&lt;br /&gt;ของเราเปิดให้มีการ secure shell เข้ามาใช้งานจากภายนอกได้&lt;br /&gt;ถ้าเราไม่ลงโปรแกรมจำพวก fail2ban สิ่งที่อาจจะเกิดขึ้น คือ&lt;br /&gt;วันดีคืนดีอาจจะโดน hack เข้ามาใช้งาน server ได้ โดย hacker&lt;br /&gt;มันอาจจะใช้โปรแกรมสุ่ม username,password ช่วยในการเจาะระบบ&lt;br /&gt;ถ้าเผอิญดวงตก hacker มันสามารถได้ username,password เราไป&lt;br /&gt;ก็เป็นอันว่าได้อุทาน "เอ้า! ซวยล่ะสิ" แน่ๆเลย&lt;br /&gt;ก็เพราะยังงี้แหละเลยมีคนคิดโปรแกรมแบน ip ขึ้นมา&lt;br /&gt;&lt;/pre&gt;&lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;    หลักการทำงานของตัวโปรแกรม คือ มันจะไปอ่าน log ไฟล์ของระบบอยู่เป็นระยะๆ ว่ามีคนที่พยายาม login เข้าระบบแล้ว fail ติดๆกันมั๊ย เช่น ถ้าเราตั้งค่าคอนฟิคของตัวโปรแกรมหลังจากที่ได้ติดตั้งไว้ว่า ถ้า login แล้ว fail ครบ 3 ครั้งก็ให้แบน ip เบอร์นั้นแ_ร่งไปเลยสักปีนึง ถ้ามีคน login แล้ว fail เข้าให้จริงๆ ทุกๆครั้งที่ fail ข้อมูลการ fail จะถูกเก็บเป็น log ไฟล์เอาไว้ และโปรแกรม fail2ban มันก็จะคอยอ่าน log ไฟล์อยู่เป็นระยะๆ ถ้าเจอ host ไหนปรากฎอยู่ใน log ว่า login แล้ว fail ครบตามจำนวน มันก็จะไปแก้ iptables ให้ block ipaddress นั้นไปเลย ซึ่งพอ ban ครบตามกำหนดเวลาที่ได้ตั้งไว้ในไฟล์ configure ตัว fail2ban ก็จะไปแก้ค่า iptables ให้ ip นั้นสามารถ access เข้ามาใช้งานได้ตามเดิม &lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;strong&gt;วิธีใช้งาน&lt;/strong&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;step1: &lt;strong&gt;$sudo  aptitude  install  fail2ban&lt;/strong&gt;   ---&gt;   ติดตั้ง fail2ban&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;step2: &lt;strong&gt;$sudo  gedit  /etc/fail2ban.conf&lt;/strong&gt;    ---&gt;   เปิดไฟล์ configure ขึ้นมาแก้ไข &lt;p&gt;* option ในส่วนต่างๆที่สำคัญมีดังนี้&lt;/p&gt; &lt;p&gt;&lt;strong&gt;maxfailures = 5&lt;/strong&gt;    ---&gt;  ในส่วนนี้หมายถึง connect แล้ว fail ครบ 5 ครั้งแล้วให้แบน ip(ของผมตั้งไว้ 2)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;bantime = 600&lt;/strong&gt;    ---&gt;  หมายถึงให้แบนเป็นเวลา 600 วินาที (ของผมกรอกเป็นหมื่นเลย)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;ignoreip = 192.168.20.0/24&lt;/strong&gt;    ---&gt;   หมายถึง ip ในวงนี้ไม่ต้องไปสนใจแบนเพราะว่าอยู่ใน lan วงเดียวกัน(ช่างมันละกันฟะ หยวนๆ) &lt;/p&gt; &lt;p&gt;** ถ้าต้องการให้มันส่ง mail มาแจ้งเตือนด้วยก็ให้ไปที่หัวข้อ [mail] แล้วแก้ดังนี้&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;enable = true&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;host = mail.sipa.or.th &lt;/strong&gt;   ---&gt;  เครื่องที่จะใช้ส่ง mail(อันนี้ตามสะดวกครับ ใครใช้อันไหน)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;port = 25&lt;/strong&gt;    ---&gt;   port ของ mail&lt;/p&gt; &lt;p&gt;#####################&lt;strong&gt;special option add by rooney&lt;/strong&gt;##################&lt;/p&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;strong&gt;AUTHREQUIRED = true&lt;/strong&gt;    &lt;/div&gt; &lt;div align="left"&gt;&lt;strong&gt;&lt;br /&gt;smtpuser = rooney@sipa.or.th&lt;/strong&gt;    ---&gt;   กรอก email address ของเราลงไป&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;smtppassword = abcd &lt;/strong&gt;   ---&gt;   กรอก password ของ email address เราลงไปครับ &lt;p&gt;###########################################################&lt;/p&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;&lt;strong&gt;from = rooney@sipa.or.th &lt;/strong&gt;  ---&gt;   mail ถูกส่งมาจาก &lt;a href="mailto:rooney@sipa.or.th"&gt;rooney@sipa.or.th&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;to = rooney@hotmail.com &lt;/strong&gt;   ---&gt;   ให่ส่ง mail แจ้งเตือนไปที่ &lt;a href="mailto:rooney@hotmail.com"&gt;rooney@hotmail.com&lt;/a&gt;  &lt;p&gt;step3 : &lt;strong&gt;$sudo  /etc/init.d/fail2ban  restart&lt;/strong&gt;    ---&gt;   restart สักรอบก่อนใช้งาน&lt;/p&gt; &lt;p&gt;*ส่วนข้างล่างนี้ คือ เนื้อหาใน mail ที่ fail2ban ส่งมาถึงผมเวลาเจออะไรไม่ชอบมาพากลครับ&lt;/p&gt; &lt;p&gt;Hi,&lt;/p&gt; &lt;p&gt;The IP 125.18.166.180 has just been banned by Fail2Ban after&lt;br /&gt;3 attempts against ssh.&lt;/p&gt; &lt;p&gt;Here are more information about 125.18.166.180:&lt;/p&gt; &lt;p&gt;% [whois.apnic.net node-2]&lt;br /&gt;% Whois data copyright terms    &lt;a href="http://www.apnic.net/db/dbcopyright.html" title="http://www.apnic.net/db/dbcopyright.html"&gt;http://www.apnic.net/db/dbcopyright.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;inetnum:      125.18.166.0 - 125.18.166.255&lt;br /&gt;netname:      ANARFIN2187-srt&lt;br /&gt;descr:        ANAR FIN ENGINEERS PVT. LTD&lt;br /&gt;descr:        905,World Trade Center&lt;br /&gt;descr:        Ring Road&lt;br /&gt;descr:        Surat&lt;br /&gt;descr:        Gujarat&lt;br /&gt;descr:        India&lt;br /&gt;descr:        Contact Person: Mr. Umesh&lt;br /&gt;descr:        Email: &lt;a href="mailto:urn@yahoo.co.in"&gt;urn@yahoo.co.in&lt;/a&gt;&lt;br /&gt;descr:        Phone:null&lt;br /&gt;country:      IN&lt;br /&gt;admin-c:      NA40-AP&lt;br /&gt;tech-c:       NA40-AP&lt;br /&gt;mnt-by:       MAINT-IN-BBIL&lt;br /&gt;status:       ASSIGNED NON-PORTABLE&lt;br /&gt;changed:      &lt;a href="mailto:techsupport@bharti.com"&gt;techsupport@bharti.com&lt;/a&gt; 20060405&lt;br /&gt;source:       APNIC&lt;/p&gt; &lt;p&gt;route:        125.18.166.0/24&lt;br /&gt;descr:        BHARTI-IN&lt;br /&gt;descr:        Bharti Tele-Ventures Limited&lt;br /&gt;descr:        Class A ISP in INDIA .&lt;br /&gt;descr:        234 , OKHLA PHASE III ,&lt;br /&gt;descr:        NEW DELHI&lt;br /&gt;descr:        INDIA&lt;br /&gt;country:      IN&lt;br /&gt;origin:       AS9498&lt;br /&gt;mnt-by:       MAINT-IN-BBIL&lt;br /&gt;changed:      &lt;a href="mailto:techsupport@bharti.com"&gt;techsupport@bharti.com&lt;/a&gt; 20050812&lt;br /&gt;source:       APNIC&lt;/p&gt; &lt;p&gt;person:       Network Administrator&lt;br /&gt;nic-hdl:      NA40-AP&lt;br /&gt;e-mail:       &lt;a href="mailto:techsupport@bharti.com"&gt;techsupport@bharti.com&lt;/a&gt;&lt;br /&gt;address:      Bharti Infotel Ltd.&lt;br /&gt;address:      ISP Division - Long Distance - Telesonic&lt;br /&gt;address:      234 ,&lt;br /&gt;address:      Okhla Ind. Area,&lt;br /&gt;address:      Phase III&lt;br /&gt;address:      New Delhi,&lt;br /&gt;address:      INDIA-110020&lt;br /&gt;phone:        +91-11- 5171 0131&lt;br /&gt;fax-no:       +91-11- 5171 1050&lt;br /&gt;country:      IN&lt;br /&gt;changed:      &lt;a href="mailto:techsupport@bharti.com"&gt;techsupport@bharti.com&lt;/a&gt; 20040911&lt;br /&gt;mnt-by:       MAINT-IN-BBIL&lt;br /&gt;source:       APNIC&lt;/p&gt; &lt;p&gt;Regards,&lt;/p&gt; &lt;p&gt;Fail2Ban&lt;/p&gt; &lt;p&gt;* นี่ก็เนื้อหาใน email อีกฉบับที่ส่งมาถึงผมครับ&lt;/p&gt; &lt;p&gt;Hi,&lt;/p&gt; &lt;p&gt;The jail apache-noscript has been started successfuly.&lt;/p&gt; &lt;p&gt;Regards,&lt;/p&gt; &lt;p&gt;Fail2Ban&lt;/p&gt; &lt;p&gt;เนื่องด้วย fail2ban นอกจากจะมอนิเตอร์ดูการ access เข้ามายังเครื่องได้แล้ว มันยังสามารถมอนิเตอร์ดู process ของโปรแกรมได้อีกด้วยนะครับ&lt;br /&gt;แต่ว่ามอนิเตอร์ได้เป็นบางโปรแกรมนะครับ ถ้าอยากจะให้มันมอนิเตอร์โปรแกรมใดก็ให้ไปตั้งค่า enable = true ตรงโปรแกรมนั้นเป็นอันใช้ได้&lt;/p&gt; &lt;p&gt;&lt;strong&gt;***เรื่องเล่าจากการใช้งานจริง***&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;จากการที่ได้ทดลองใช้งานดูนะครับ(ผมตั้งค่า maxfailures = 2)&lt;/p&gt; &lt;p&gt;1. กรณีเครื่องที่เราใช้เป็น client เป็น linux ถ้าเกิดเราทำการ ssh ไปยังเครื่องอื่นแล้วกรอก password ผิดครบ 3 ครั้ง(3 ครั้งถ้วนๆไม่ขาดไม่เกิน) จะโดนเตะออกจากระบบ ไม่ว่าเครื่องที่เปิดให้ login จะลง fail2ban หรือเปล่า&lt;/p&gt; &lt;p&gt;rooney@rooney:~$ ssh root@192.168.20.182&lt;br /&gt;root@192.168.20.182's password:&lt;br /&gt;Permission denied, please try again.&lt;br /&gt;root@192.168.20.182's password:&lt;br /&gt;Permission denied, please try again.&lt;br /&gt;root@192.168.20.182's password:&lt;br /&gt;Permission denied (publickey,password).&lt;br /&gt;rooney@rooney:~$&lt;/p&gt; &lt;p&gt;* ปัญหาอยู่ตรงนี้ครับ คือ ผมตั้งค่า maxfailures ไว้ที่ 2 ครั้ง ซึ่งที่ผมเข้าใจผมคิดว่าพอกรอกรหัสผิดครบ 2 ครั้งแล้ว จะโดนแบนทันทีไม่มีการขึ้น prompt มาให้กรอก password ใดๆทั้งสิ้น แต่พอเอาเข้าจริงพอกรอกผิดไป 2 ครั้งมันก็ยังดันขึ้น prompt มาให้กรอก password อีก ไอ้เราก็คิดต่อว่า "อ๋อ มันคงขึ้นprompt มาให้กรอกเฉยๆแต่คงเข้าไม่ได้เพราะน่าจะโดนแบนไม่ให้เข้าตั้งกะผิดครั้งที่ 2 แล้วแหงมๆ" แต่พอเอาเข้าจริง พอกรอก 2 ครั้งแรกผิด แต่ว่ากรอกครั้งที่ 3 ถูก ก็ดัน login เข้าเครื่องได้ซะงั้น เล่นเอาอึ้งกิมกี่ไปชั่วขณะ พอหลังจากมีเวลาทำใจสักพักก็เลยรู้ว่า "ฮั่นแน่! login ได้แต่ว่ามันใช้งานไม่ได้นี่หว่า" &lt;/p&gt;&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;    สรุปก็คือ โดย default ของโปรแกรม ssh ใน linux มันจะให้กรอก password ผิดได้ 3 ครั้ง ดังนั้นถึงเราจะกรอกผิดไป 2 ครั้งมันก็จะยังขึ้น prompt มาให้กรอกอีก และถ้ากรอกครั้งที่ 3 ถูกก็ยังจะสามารถ login ได้ด้วย แต่จะทำอะไรกับระบบไม่ได้เลยเพราะโดนแบนโดย fail2ban ตั้งกะกรอก password ผิดครั้งที่ 2 ครับ และถ้าโดนแบนแล้ว ถ้าพยายาม ssh อีกรอบคราวนี้จะโดนแบนตั้งกะตอนแรกเลย คือ จะไม่มี prompt ขึ้นมาให้ถาม password สักกะแว๊ปนึงเลย&lt;/div&gt; &lt;div align="left"&gt; &lt;/div&gt; &lt;div align="left"&gt;2. กรณีเครื่องที่เราใช้เป็น client เป็น windows แล้วใช้โปรแกรม putty เป็นโปรแกรมในการ ssh มันจะสามารถกรอก password ได้ถึง 7 ครั้งครับ แต่ก็จะโดนแบนตั้งกะกรอกผิด 2 ครั้งเหมือนกันครับ ถึง login ได้ก็ใช้งานไม่ได้         &lt;/div&gt; &lt;div align="left"&gt;    &lt;/div&gt;                        &lt;strong&gt; ***จบแล้วจ้า***&lt;/strong&gt;&lt;pre&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-32642265682318186?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/32642265682318186/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=32642265682318186' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/32642265682318186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/32642265682318186'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/ssh.html' title='ป้องกันการโจมตีด้วย SSH'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-4985612429179538773</id><published>2008-08-07T12:31:00.001-07:00</published><updated>2008-08-07T12:31:31.382-07:00</updated><title type='text'>Debian:Install eBox package on Debian</title><content type='html'>&lt;pre&gt; การติดตั้ง eBox on Debian แบบปกติ วิธีนี้มีความเสี่ยงตรงที่ว่า หาก Connect ของ Net หลุดเมื่อไหรก็จะต้องเริ่มใหม่ หรือไม่ อาจโชคร้ายกว่านั้นต้องลง Debian ใหม่ด้วย สิ่งที่จะต้องทำมีดังนี้&lt;br /&gt; 1. ติดตั้ง debian เอาเฉพาะ Kernel&lt;br /&gt; 2. Initial Source List กระทำโดย ใช้ VI Editor ก็ได้ โดยหากจะใช้ VI ก็กระทำโดย&lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;       vi  /etc/apt/sources.list   ไม่แนะนำให้ใช้ nano Editor เพราะอาจเปิดปัญหาที่ ตัว Debian อาจหาตัว Server&lt;br /&gt;ของ eBox ไม่เจอได้&lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;  เมืื่อเปิด VI ขึ้นมาแล้วก็ให้เพิ่มข้อความไป 3 บรรทัด ให้กด ESC แล้วตามด้วยตัว I เพื่อเข้าสู่โหมด Editor&lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;        deb &lt;a href="http://ebox-platform.com/debian/stable/" class="external free" title="http://ebox-platform.com/debian/stable/" rel="nofollow"&gt;http://ebox-platform.com/debian/stable/&lt;/a&gt; ebox/&lt;br /&gt;       deb &lt;a href="http://ebox-platform.com/debian/stable/" class="external free" title="http://ebox-platform.com/debian/stable/" rel="nofollow"&gt;http://ebox-platform.com/debian/stable/&lt;/a&gt; extra/&lt;br /&gt;       deb &lt;a href="http://ebox-platform.com/debian/sarge/stable/" class="external free" title="http://ebox-platform.com/debian/sarge/stable/" rel="nofollow"&gt;http://ebox-platform.com/debian/sarge/stable/&lt;/a&gt; security/&lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;  เมื่อพิมพ์เสร็จ ก็ให้กด ESC แล้วพิมพ์ :wq เพื่อทำการบรรทึกแล้วออกจากหน้านั้น &lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;  3. ทำการติดตั้ง Package โดย  พิมพ์&lt;br /&gt;             $ apt-get update&lt;br /&gt;             $ apt-get install ebox libebox ebox-network ebox-objects ebox-mail ebox-firewall&lt;br /&gt;ebox-trafficshaping ebox-samba ebox-dns ebox-dhcp ebox-squid ebox-usersandgroups ebox-software&lt;br /&gt;ebox-ntp ebox-printers ebox-jabber ebox-ca ebox-openvpn&lt;br /&gt;&lt;/pre&gt; &lt;pre&gt;  4. รอจนกว่าจะติดตั้งเสร็จ&lt;br /&gt; 5. เราสามารถทดสอบได้ว่า Package ที่ลงไปนั้นใช้ได้หรือไม่นั้นได้  โดย &lt;a href="https://localhost/" class="external free" title="https://localhost:443/" rel="nofollow"&gt;https://localhost:443/&lt;/a&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-4985612429179538773?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/4985612429179538773/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=4985612429179538773' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4985612429179538773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/4985612429179538773'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/debianinstall-ebox-package-on-debian.html' title='Debian:Install eBox package on Debian'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1041805060619551383</id><published>2008-08-07T12:13:00.000-07:00</published><updated>2008-08-07T12:22:42.872-07:00</updated><title type='text'>การเปิดปิด Service ตอนที่บูทเครื่องขึ้นมา</title><content type='html'>Debian มีเครื่องมือมาให้ครับ rcconf ติดตั้ง ใช้คำสั่ง&lt;br /&gt;&lt;em&gt;&lt;strong&gt;# apt-get install rcconf&lt;br /&gt;&lt;br /&gt;สอน linux&lt;br /&gt;&lt;br /&gt;http://linux.sothorn.org/node/235&lt;br /&gt;&lt;br /&gt;http://61.7.157.250/debian/html/&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1041805060619551383?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1041805060619551383/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1041805060619551383' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1041805060619551383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1041805060619551383'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/service.html' title='การเปิดปิด Service ตอนที่บูทเครื่องขึ้นมา'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-9074155696052298055</id><published>2008-08-07T12:04:00.000-07:00</published><updated>2008-08-07T12:05:15.101-07:00</updated><title type='text'>ทดลองติดตั้ง apache2 mysql5 phpmyadmin</title><content type='html'>&lt;p&gt;ผมติดตั้ง Debian จากแผ่น cd รุ่น stable&lt;br /&gt;โดยเลือก ติดตั้ง webserver และ desktop เพิ่มเติม&lt;br /&gt;การติดตั้งผ่านไปเรียบร้อย ต่อมาได้ติดตั้งเพิ่มเติม ดังนี้&lt;/p&gt; &lt;p&gt;# apt-get install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql phpmyadmin&lt;/p&gt; &lt;p&gt;แต่พอเรียกใช้งาน &lt;a href="http://ip-address/phpmyadmin" title="http://ip-address/phpmyadmin"&gt;http://ip-address/phpmyadmin&lt;/a&gt;&lt;br /&gt;กลับพบหน้าต่างให้เลือก download หรือ save แทนที่จะแสดงหน้าโปรแกรม&lt;/p&gt; &lt;p&gt;แก้ไขตามที่หาเจอใน google แล้วแต่ยังเหมือนเดิม&lt;br /&gt;ผมคงพลาดหรือข้ามขั้นตอนอะไรไปแน่ๆ&lt;br /&gt;รบกวนแนะนำด้วยครับ ขอบคุณครับ&lt;/p&gt;&lt;div class="content"&gt;     &lt;p&gt;ปรกติหากลงผ่านระบบ apt มันจะ config ให้แล้วครับ แต่ที่ทำไม่ได้เพราะว่าเรายังไม่ได้ทำ link ไปยังที่อยู่ของ phpmyadmin ครับ ลองเข้าไปตามนี้ดูนะครับ&lt;/p&gt; &lt;pre&gt;# cd /var/www&lt;br /&gt;# ls&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;ดูว่ามี directory phpmyadmin อยู่หรือเปล่าครับ ถ้าไม่มีก็ลองหาไดเร็กทอรีที่เก็บ phpmyadmin ไว้ครับโดยปรกติจะอยู่ที่ /usr/share/phpmyadmin เราก็ใช้คำสั่งนี้ครับ&lt;/p&gt; &lt;pre&gt;file:///usr/share/ubuntu-artwork/home/index.html&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="content"&gt;     &lt;p&gt;มี directory phpmyadmin อยู่ครับ และมีlink เรียบร้อย&lt;/p&gt; &lt;pre&gt;&lt;code&gt;&lt;br /&gt;# ls -al&lt;br /&gt;total 16&lt;br /&gt;drwxr-xr-x  3 root root 4096 2007-10-02 15:03 .&lt;br /&gt;drwxr-xr-x 15 root root 4096 2007-10-02 13:14 ..&lt;br /&gt;lrwxrwxrwx  1 root root   24 2007-10-02 13:05 analog -&gt; /usr/share/analog/images&lt;br /&gt;drwxr-xr-x  2 root root 4096 2007-10-02 14:57 apache2-default&lt;br /&gt;lrwxrwxrwx  1 root root   21 2007-10-02 14:38 phpmyadmin -&gt; /usr/share/phpmyadmin&lt;br /&gt;-rw-r--r--  1 root root   22 2007-10-02 15:03 test.php&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; ผมจึงลองทำตามคุณ wd แล้วลองเรียกใหม่สามารถเรียกได้แล้วครับ&lt;br /&gt;ขอบคุณครับ&lt;/p&gt;   &lt;/div&gt;&lt;pre&gt;&lt;br /&gt;# ln -s /usr/share/phpmyadmin /var/www/phpmyadmin&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;คราวนี้เราก็ทดสอบเรียกดูใหม่อีกครั้งหนึ่งครับ&lt;br /&gt;http://{ip address}/phpmyadmin ถ้าไม่มีอะไรผิดพลาดก็จะขึ้นให้ใส่ username และ password โดยหากเรายังไม่แก้ไข password ของ root ก็ใส่ username เป็น root และไม่ต้องใส่ password ก็สามารเข้าไปใช้งานได้ครับ&lt;/p&gt; &lt;p&gt;Note : อย่าลืมเปลี่ยน password ของ root นะครับ เดี๋ยวโดนขโมย database&lt;br /&gt;ได้ผลอย่างไรก็บอกด้วยแล้วกันครับ&lt;br /&gt;ไม่ทราบตอบตรงคำถามหรือเปล่านะครับ&lt;/p&gt;   &lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-9074155696052298055?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/9074155696052298055/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=9074155696052298055' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/9074155696052298055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/9074155696052298055'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/apache2-mysql5-phpmyadmin.html' title='ทดลองติดตั้ง apache2 mysql5 phpmyadmin'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8964460361024534091</id><published>2008-08-07T12:00:00.000-07:00</published><updated>2008-08-07T12:01:27.567-07:00</updated><title type='text'>เดเบียน ๑๐๑</title><content type='html'>&lt;a href="http://linux.thai.net/%7Ethep/docs/debian/debian-01.pdf"&gt;http://linux.thai.net/~thep/docs/debian/debian-01.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8964460361024534091?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8964460361024534091/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8964460361024534091' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8964460361024534091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8964460361024534091'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/blog-post.html' title='เดเบียน ๑๐๑'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-1574571529719428392</id><published>2008-08-07T11:59:00.002-07:00</published><updated>2008-08-07T12:00:00.343-07:00</updated><title type='text'>Intro to Debian Process (ตอนจบ)</title><content type='html'>&lt;p&gt;เอาละ พูดถึงกระบวนการทั่วไปมาแล้ว ถ้าคุณสนใจจะ build debian package สำหรับซอฟต์แวร์โปรดของคุณ ก็อาจจะเริ่มจากฝึก build จาก &lt;a href="http://www.debian.org/doc/maint-guide/"&gt;New Maintainers' Guide&lt;/a&gt; แต่ถ้าคุณ build คล่องถึงระดับหนึ่งแล้ว การจะเริ่มอัปโหลดแพกเกจเข้า debian จะมีประเด็นต่างๆ ที่จะถูกตรวจสอบเยอะแยะ เพื่อให้เป็นไปตาม &lt;a href="http://www.debian.org/doc/debian-policy/"&gt;Debian Policy&lt;/a&gt; เครื่องมือหลักที่จะช่วยคุณได้ก็คือ lintian และ linda ซึ่งเป็นเครื่องมือตรวจสอบความถูกต้องของ debian package คล้ายๆ กับ lint สำหรับโปรแกรมภาษา C น่ะแหละ&lt;/p&gt;  &lt;p&gt;ต่อไปนี้เป็นประเด็นที่พบบ่อย พึงระวังขณะสร้าง debian package:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt; &lt;b&gt;CVS directories&lt;/b&gt; ควรลบไดเรกทอรี CVS ทั้งหลายที่ยังตกค้างอยู่ โดยเฉพาะถ้าคุณ        maintain debian script ใน CVS เรื่องนี้เป็นเรื่องที่พบบ่อยมาก        ถ้าไม่อยากถูกตรวจพบด้วยข้อหาตื้นๆ ก็ควรเตือนตัวเองเสมอๆ ให้ลบ CVS ก่อน build        ซึ่งหมายความว่า คุณไม่ควร build debian package ภายใน CVS working copy        แต่ควรคัดลอกออกมา build ข้างนอก จะสะดวกกว่า        &lt;/li&gt;&lt;li&gt; &lt;b&gt;native/non-native&lt;/b&gt; ถ้าแพกเกจที่คุณ build มี upstream source        ไม่ใช่เป็นแพกเกจเฉพาะใช้ใน debian ก็ควรจะ build เป็นแบบ non-native โดยใช้        upstream tarball ที่เปลี่ยนนามสกุลจาก &lt;tt&gt;.tar.gz&lt;/tt&gt; เป็น        &lt;tt&gt;.orig.tar.gz&lt;/tt&gt; และ &lt;em&gt;ห้ามแตะต้อง&lt;/em&gt; ข้อมูลใดๆ ใน upstream tarball        ปล่อยให้เป็น &lt;em&gt;pristine source&lt;/em&gt; ไว้ แล้ว &lt;tt&gt;dpkg-buildpackage&lt;/tt&gt;         จะสร้าง &lt;tt&gt;.diff.gz&lt;/tt&gt; เพื่อใช้เพิ่ม debian script ให้ ถ้ามันไม่ gen แบบนี้ให้          ก็ควรตรวจสอบ ว่าคุณได้เปลี่ยนชื่อ upstream tarball (หรือทำ symlink ในอีกชื่อ)         ก่อน build หรือไม่ มีเหตุผลดีๆ มากมายในการทำให้แน่ใจว่ามีการแยก         &lt;tt&gt;.orig.tar.gz&lt;/tt&gt; กับ &lt;tt&gt;.diff.gz&lt;/tt&gt; เช่น ทุก release จะใช้ pristine         source ร่วมกัน ต่างกันแค่ &lt;tt&gt;.diff.gz&lt;/tt&gt; ที่ใช้เพิ่ม debian script         ทำให้ประหยัดเนื้อที่และ bandwidth ในการ upload/download         รวมทั้งสะดวกในการตรวจสอบความเปลี่ยนแปลงเทียบกับ upstream และระหว่าง release         ต่างๆ เป็นต้น        &lt;/li&gt;&lt;li&gt; &lt;b&gt;copyright&lt;/b&gt; เรื่องนี้จะถูกตรวจสอบเป็นเรื่องแรกๆ เลย        คุณควรแน่ใจว่ากรอกข้อมูลเกี่ยวกับแหล่งต้นตอของ upstream source, ข้อมูลลิขสิทธิ์ของ        upstream และไฟล์ต่างๆ ที่ใช้ประกอบการสร้าง debian package ต้องให้ครบ และที่สำคัญ        อย่าลืมใส่ข้อความ disclaimer ที่มีมากับข้อความลิขสิทธิ์เสมอ และถ้าแพกเกจนั้นใช้ license        ที่เป็นที่รู้จัก เช่น GPL, LGPL, BSD, Artistic ก็ไม่ต้องใส่ไฟล์ COPYING มา        แต่เขียนข้อข้อความสั้นๆ ที่ท้าย disclaimer ว่าใน debian ให้อ่านข้อความเต็มของ license        ดังกล่าวได้ที่ &lt;tt&gt;/usr/share/common-licenses/&lt;em&gt;&lt;license&gt;&lt;/em&gt;&lt;/tt&gt;        มีการพูดถึงรายละเอียดเรื่องนี้ใน         &lt;a href="http://lists.debian.org/debian-legal/2003/12/msg00188.html"&gt;กระทู้&lt;/a&gt;        ใน debian-legal        &lt;/li&gt;&lt;li&gt; &lt;b&gt;debhelper comment&lt;/b&gt; ชาว debian เขาค่อนข้างเนี้ยบกับแฟ้ม         &lt;tt&gt;debian/rules&lt;/tt&gt; ว่าควรจะสะอาด คุณอาจใช้ debhelper ช่วยสร้างสคริปต์ต่างๆ         โดยอัตโนมัติ รวมทั้ง &lt;tt&gt;debian/rules&lt;/tt&gt; นี้ด้วย แต่คำสั่ง &lt;tt&gt;dh_*&lt;/tt&gt; ที่คุณไม่ใช้        คุณอาจเสียดายที่จะลบทิ้ง โดยใส่คอมเมนต์ไว้ ขอบอกว่าอย่าทำ ควรลบทิ้งไปเลย ถ้าไม่อยากถูก        sponsor ตีมือ        &lt;/li&gt;&lt;li&gt; &lt;b&gt;debian/rules&lt;/b&gt; พยายามให้ &lt;tt&gt;debian/rules&lt;/tt&gt; สะอาดที่สุดเท่าที่จะทำได้        แฟ้มนี้โดยเนื้อหาก็คือ Makefile นั่นเอง แต่พยายามอย่าใช้ script เฉพาะกิจมากเกินไป         เช่น สั่ง cp ตรงโน้น rm ตรงนี้ แต่ควรพยายามใช้คำสั่ง &lt;tt&gt;dh_*&lt;/tt&gt; ของ debhelper        ถ้าเป็นไปได้ ซึ่งถ้าตรวจสอบดีๆ จะพบว่ามีคำสั่งครอบคลุมหลายๆ งานที่ไม่คิดว่าจะมีใน distro        อื่น (ทุกคำสั่งมี man page ให้อ่าน!) ซึ่งการใช้คำสั่งเหล่านี้ นอกจากจะง่ายแล้ว         ยังมีผลดีตรงที่ไม่เสี่ยงต่อการละเมิด debian policy ด้วย โดยเฉพาะเวลามี transition        ใหญ่ๆ ของระบบ (เช่น Xorg 7 ที่ผ่านมาหมาดๆ) จะเห็นประโยชน์ชัดมาก โดยแค่ build        แพกเกจใหม่ด้วย debhelper ตัวใหม่ โดยแทบไม่ต้องแก้อะไรเลย ก็ transition        ไปกับหมู่คณะได้แล้ว        &lt;/li&gt;&lt;li&gt; &lt;b&gt;NMU&lt;/b&gt; ตรงนี้เป็นประเด็นปลีกย่อย สำหรับกรณีที่คุณ build package ของคนอื่น         เพื่อแก้ปัญหาอะไรบางอย่าง พยายามทำตาม policy เรื่อง Non-maintainer upload        กล่าวคือ ใช้เลข release แบบทศนิยม และระบุ &lt;tt&gt;* NMU&lt;/tt&gt; หรือ         &lt;tt&gt;* Non-Maintainer Upload&lt;/tt&gt; ใน &lt;tt&gt;debian/changelog&lt;/tt&gt; ด้วย        &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;โดยส่วนใหญ่แล้ว หลายประเด็นสามารถถูกตรวจสอบได้ด้วย lintian/linda ดังนั้น คุณจะพบว่า  สำหรับ debian แล้ว tool ตรวจสอบดังกล่าว ไม่ได้เป็นแค่เครื่องมือประกอบ แต่กลายเป็นส่วนหนึ่งของ  build process เลยทีเดียว (ผมจึงใช้ &lt;tt&gt;debuild&lt;/tt&gt; แทน &lt;tt&gt;dpkg-buildpackage&lt;/tt&gt; และถ้าจะให้ดี ควรใช้ &lt;tt&gt;pbuilder&lt;/tt&gt; สำหรับแพกเกจที่เสี่ยงต่อการลิงก์ไลบรารีผิดที่) ถึงจะเป็นแค่ warning ก็ไม่ควรเพิกเฉย&lt;/p&gt;  &lt;p&gt;ฟู่.. ปาดเหงื่อหน่อย ในที่สุดก็เขียนจบ ขอขอบคุณที่ติดตามครับ ทั้งหมดนี้คงยังครอบคลุมไม่หมด แต่คงพอให้เห็นภาพของกระบวนการทั้งหมด ความละเอียดลออของ debian ทำให้ยังรักษาคุณภาพไว้ได้ แม้จะเป็นการทำงานร่วมกันของคนเรือนพันทั่วโลก มี package จำนวนมโหฬาร และ &lt;a href="http://www.debian.org/ports/"&gt;architecture&lt;/a&gt; ต่างๆ ให้ดูแลมากมาย เข้ามาในโลกของ debian แล้ว จะรู้สึกถึงการใช้คอมพิวเตอร์ให้เป็นประโยชน์มากมาย ความเป็นอัตโนมัติของ apt ยังเป็นแค่มุมมองสำหรับผู้ใช้เท่านั้น แต่สำหรับนักพัฒนา  ก็จะพบความเป็นอัตโนมัติอีกหลายอย่าง เช่น build daemon ที่ช่วยการ port และ transition ต่างๆ โดยอัตโนมัติ หรือการเคลื่อนของแพกเกจจาก unstable มา tesing โดยอัตโนมัติ พร้อมกันนั้น ความเข้มแข็งของระเบียบปฏิบัติต่างๆ สำหรับมนุษย์ ก็ทำให้คนที่กระจายอยู่ในส่วนต่างๆ ของโลก สามารถทำงานร่วมกันได้อย่างแน่นแฟ้น       &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-1574571529719428392?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/1574571529719428392/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=1574571529719428392' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1574571529719428392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/1574571529719428392'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/intro-to-debian-process.html' title='Intro to Debian Process (ตอนจบ)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-673988632442081772</id><published>2008-08-07T11:59:00.001-07:00</published><updated>2008-08-07T11:59:28.660-07:00</updated><title type='text'>Intro to Debian Process (3)</title><content type='html'>&lt;p&gt;ก่อนจะพูดเรื่องประเด็นปลีกย่อยของการสร้างแพกเกจ คิดว่าพูดถึงกระบวนการต่อให้จบก่อนดีกว่า&lt;/p&gt;  &lt;h4&gt;Debian Developer&lt;/h4&gt;  &lt;p&gt;ก่อนอื่น พูดถึงสภาเจไดก่อน ผู้ที่จะมีสิทธิ์อัปโหลดแพกเกจเข้า debian pool ได้ จะต้องเป็นผู้ที่มี OpenPGP public key อยู่ใน debian keyring ซึ่งกว่าจะได้เอากุญแจไปคล้องได้ ก็ต้องผ่านกระบวนการทำงานต่างๆ เพื่อเป็นการรับประกันว่า คนคนนั้นมีคุณสมบัติเพียงพอที่จะร่วมพัฒนา debian อย่างมีคุณภาพได้ ซึ่งผมก็ได้รับการบอกเล่ามาว่า ต้องใช้เวลาเป็นปีๆ จนหลายคนถอดใจไปก่อน ดังนั้น เวลาที่ได้พบ Debian Developer ผมจึงรู้สึกเหมือน apprentice ได้พบเจได หรือสาวกได้พบนักบุญถ้าเปรียบเทียบกับประชากรในศาสนา ปานนั้นเลย&lt;/p&gt;  &lt;p&gt;ตอนนี้ มี Debian Developer (DD) ร่วมๆ &lt;a href="http://www.debian.org/devel/people"&gt;สองพันคน&lt;/a&gt; จากทั่วโลก นี่ถ้านับ maintainer ทั้งหลายที่ยังไม่ได้ตำแหน่ง DD อีกเยอะแยะ รวมกับ user community ที่คึกคัก ก็นับได้ว่า  debian เป็นโครงการที่ใหญ่และเป็นสากลมากโครงการหนึ่ง&lt;/p&gt;  &lt;p&gt;ผู้ที่จะเข้าเป็น DD ได้ จะต้องผ่าน &lt;a href="http://www.debian.org/devel/join/newmaint"&gt;New Maintainer Process&lt;/a&gt; หรือเรียกย่อๆ ว่า NM (อย่าเพิ่งแปลกใจครับ debian เขายังมีตัวย่ออีกเยอะให้ใช้ เป็นการเจาะจงศัพท์เทคนิคว่าไม่ใช่หมายถึงคำทั่วไป) ซึ่งถ้าดูจาก &lt;a href="http://www.debian.org/devel/join/nm-checklist"&gt;Checklist&lt;/a&gt; แล้ว จะเห็นว่าผู้สมัคร NM จะต้องมีประสบการณ์ทำงานกับ debian มาระยะหนึ่งแล้ว จนมี DD ไว้วางใจ สามารถ &lt;a href="http://www.debian.org/devel/join/nm-advocate"&gt;advocate&lt;/a&gt; ผู้สมัครคนนั้นได้ แล้วก็จะมีการสอบสัมภาษณ์ความเข้าใจในปรัชญาต่างๆ ของ debian ทดสอบความชำนาญต่างๆ จนผ่านทุกขั้นตอนแล้ว จึงจะได้เป็น DD&lt;/p&gt;  &lt;h4&gt;Web of Trust&lt;/h4&gt;  &lt;p&gt;ใน NM checklist จะมีขั้นตอนแรกๆ ขั้นตอนหนึ่งที่สำคัญที่ควรกล่าวถึง คือการยืนยันตัวตนด้วย OpenPGP key ที่มี &lt;a href="http://en.wikipedia.org/wiki/Web_of_trust"&gt;Web of Trust&lt;/a&gt; ที่แน่นหนา กล่าวคือ มีผู้เซ็นยืนยันตัวตนของเจ้าของกุญแจเยอะพอ ว่ากุญแจนี้เป็นของคนคนนี้จริงๆ (เพราะในอินเทอร์เน็ต ใครๆ ก็สร้างกุญแจได้ โดยอาจจะแอบอ้างว่าเป็นของธนาคารก็ได้ ถ้าไม่มีการตรวจสอบตัวตนดังกล่าว เป็นต้น แต่กรณีของธนาคาร อาจใช้การตรวจสอบผ่าน  &lt;a href="http://en.wikipedia.org/wiki/Certificate_authority"&gt;Certificate  Authorities (CA)&lt;/a&gt; มากกว่าแบบกระจายด้วย Web of Trust) และกุญแจนี้  จะใช้ในการเซ็นรับรอง debian package ในวันข้างหน้าเมื่อได้ทำหน้าที่ DD ว่าแพกเกจมาจาก  maintainer ตัวจริง หรือมาจากแหล่งที่เชื่อถือได้ โดยตรวจสอบกับ public key ที่ไปคล้องไว้ใน  debian keyring เพื่อกันแพกเกจปลอมปนที่จะเข้ามาใน debian pool&lt;/p&gt;  &lt;p&gt;เพื่อรับประกัน web of trust นี้ เวลาคน debian มีการพบปะกัน จึงมักถือโอกาสจัด &lt;a href="http://www.cryptnet.net/fdp/crypto/gpg-party.html"&gt;Key Signing  Party&lt;/a&gt; เสมอๆ เพราะเป็นโอกาสที่จะได้เซ็นยืนยันเจ้าของกุญแจเมื่อได้พบตัวจริง โดยในการเซ็นนั้น จะมีขั้นตอนการตรวจสอบพอควร เช่น ต้องมีบัตรประจำตัวประชาชน หรือหนังสือเดินทาง มายืนยัน (เพื่อไม่ให้มีใครมาแอบอ้างง่ายๆ ว่าตนคือบิล เกตส์ หรือ RMS อะไรทำนองนี้) รวมทั้งคอมพิวเตอร์ที่ใช้ในการเซ็นก็จะต้องแน่ใจว่าปราศจากการปลอมแปลงคำสั่งด้วย&lt;/p&gt;  &lt;h4&gt;Package Sponsoring&lt;/h4&gt;  &lt;p&gt;แล้วก็มาถึงคำถามยอดฮิตที่ผมถูกผู้อ่าน blog ถาม และผมเองก็เคยสงสัยเป็นอันดับต้นๆ เหมือนกัน ว่าการ sponsor แพกเกจมันหมายถึงอะไร&lt;/p&gt;  &lt;p&gt;จากขั้นตอนการกลั่นกรอง DD สุดหินที่ได้กล่าวไป ความจริงเป็นการรับประกันคุณภาพของ debian เอง แต่ขณะเดียวกัน ก็เปิดโอกาสให้ผู้ที่ไม่ได้เป็น DD ได้ร่วมพัฒนาได้ด้วย โดยอาจจะแสดงความจำนงขอดูแลแพกเกจได้ แต่เมื่อจะอัปโหลดเข้า debian pool ซึ่งจำเป็นต้องมีลายเซ็น DD กำกับ ก็สามารถร้องขอให้ DD คนใดคนหนึ่งช่วยเซ็นและอัปโหลดให้ได้ ซึ่งการเซ็นและอัปโหลดให้ดังกล่าวนี่แหละ ที่เรียกว่าการ &lt;em&gt;sponsor&lt;/em&gt; แพกเกจ&lt;/p&gt;  &lt;p&gt;แน่นอนว่าลายเซ็นนั้น หมายถึงการร่วมรับผิดชอบกับ maintainer ด้วยส่วนหนึ่ง แม้ข้อมูลในแพกเกจจะแสดงชื่อของ maintainer ว่าเป็นเจ้าของ ไม่ใช่ DD เจ้าของลายเซ็น แต่ในคิวสำหรับอัปโหลดก็จะมีการบันทึกไว้ ว่า DD คนไหนอัปโหลดให้ ดังนั้น กว่าจะเซ็นให้ได้ DD จะต้องตรวจสอบคุณภาพของแพกเกจเสียก่อน โดยปกติจึงมีการตรวจแก้ก่อนอัปโหลด&lt;/p&gt;  &lt;p&gt;มีหลายวิธีที่ maintainer จะหา sponsor อาจจะด้วยการทำงานร่วมกันอย่างใดอย่างหนึ่งมาก่อน เช่น คุยงานผ่าน mailing list หรือคุยกันในงานประชุม แต่กรณีอย่างนั้นคงครอบคลุมแพกเกจทั้งหมดได้ยาก โดยทั่วไปจึงมักใช้ &lt;a href="http://lists.debian.org/debian-mentors/"&gt;debian-mentors&lt;/a&gt; mailing list หรือ IRC ห้อง #debian-mentors ที่ irc.debian.org รายละเอียดต่างๆ อ่านได้จาก &lt;a href="http://people.debian.org/%7Empalmer/debian-mentors_FAQ.html"&gt;debian-mentors  FAQ&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;เนื่องจากความยากลำบากในการหา sponsor เมื่อได้ sponsor แล้ว จึงควรถือโอกาสแก้ปัญหาต่างๆ ในแพกเกจตามที่ sponsor ชี้ให้ได้มากที่สุด ด้านหนึ่ง เป็นโอกาสที่จะได้ปรับปรุงคุณภาพแพกเกจ และอีกด้านหนึ่ง เป็นการลดภาระที่ต้องรบกวน sponsor อีกบ่อยๆ ในอนาคต&lt;/p&gt;  &lt;h4&gt;NEW Queue&lt;/h4&gt;  &lt;p&gt;สำหรับการอัปโหลดที่มีไฟล์ซอร์สใหม่ที่ไม่เคยอยู่ใน debian pool มาก่อน (ไม่นับ debian diff ที่เป็นเพียงการออก release ใหม่) แพกเกจที่อัปโหลดจะเข้าไปอยู่ในคิว &lt;a href="http://ftp-master.debian.org/new.html"&gt;NEW&lt;/a&gt; เพื่อรอตรวจรับโดยทีม ftp-master โดยเป็นการตรวจสอบทั่วไปเพื่อกันความเสี่ยงเรื่องการฝังม้าโทรจันหรืออะไรทำนองนี้ โดยปกติจะใช้เวลาเฉลี่ยไม่เกินหนึ่งเดือน&lt;/p&gt;  &lt;p&gt;แพกเกจใหม่ที่ผ่านการตรวจรับในคิว NEW แล้ว หรือแพกเกจที่เพียงออกรุ่นใหม่โดยไม่ได้มีซอร์สที่ไม่เคยอัปโหลดมาก่อน ก็จะตรงเข้าสู่ &lt;a href="http://incoming.debian.org/"&gt;incoming&lt;/a&gt; เพื่อรอเข้าสู่ unstable หรือ experimental pool ต่อไป แล้วแต่กรณี&lt;/p&gt;  &lt;p&gt;เมื่อแพกเกจสถิตอยู่ใน unstable ครบกำหนด 10 วันโดยไม่มี bug ร้ายแรง แพกเกจนั้นก็จะเคลื่อนเข้าสู่ testing โดยอัตโนมัติ&lt;/p&gt;  &lt;p&gt;วันนี้ยาวหน่อย เพราะจะเก็บรายละเอียดที่สำคัญให้ครบ ตอนหน้าน่าจะเขียนถึงประเด็นที่พบบ่อยในการ build debian package ได้       &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-673988632442081772?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/673988632442081772/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=673988632442081772' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/673988632442081772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/673988632442081772'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/intro-to-debian-process-3.html' title='Intro to Debian Process (3)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2817987313607478074</id><published>2008-08-07T11:58:00.000-07:00</published><updated>2008-08-07T11:59:00.928-07:00</updated><title type='text'>Intro to Debian Process (2)</title><content type='html'>&lt;p&gt;ว่ากันด้วยเรื่อง debian process ต่อ มาดูเรื่องการเป็นเจ้าของแพกเกจกันบ้าง&lt;/p&gt;  &lt;h4&gt;ความเป็นเจ้าของในแพกเกจ&lt;/h4&gt;  &lt;p&gt;ความเป็นเจ้าของในแพกเกจ หมายถึงสิทธิ์ในการอัปโหลดแพกเกจนั้นๆ โดยเป็นผู้ดูแล bug ต่างๆ ในแพกเกจด้วย (คือมีสิทธิ์ปิด bug และได้รับรายงาน bug ทางเมล)&lt;/p&gt;  &lt;p&gt;การเปลี่ยนแปลงความเป็นเจ้าของแพกเกจเกิดได้หลายแบบ โดยส่วนใหญ่จะทำผ่าน bug ใน &lt;a href="http://www.debian.org/devel/wnpp/"&gt;wnpp&lt;/a&gt; (Work-Needing and Prospective Packages) ดังนี้:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt; &lt;b&gt;request for package&lt;/b&gt; หรือ RFP เป็น bug wnpp        ที่ผู้ใช้เสนอแพกเกจใหม่ที่ยังไม่มีใน debian รอคอย maintainer ที่สนใจมาทำให้ &lt;/li&gt;&lt;li&gt; &lt;b&gt;new package&lt;/b&gt; เป็นการเปิด bug wnpp ชนิด ITP (Intent To Package)        หรือเปลี่ยนสถานะ bug ชนิด RFP เป็น ITP และปิด bug ด้วยการอัปโหลดแพกเกจตัวแรก &lt;/li&gt;&lt;li&gt; &lt;b&gt;orphan&lt;/b&gt; เมื่อผู้ดูแลไม่สามารถดูแลแพกเกจต่อ ก็อาจสละแพกเกจโดยเปิด bug wnpp        ชนิด O (Orphaned) รอจนกระทั่งมีผู้สนใจมารับช่วงต่อ มิฉะนั้น Debian QA Team        จะรับดูแลให้ชั่วคราว แพกเกจไหนที่ orphan นานๆ อาจถูกตัดออกจาก debian ในที่สุด &lt;/li&gt;&lt;li&gt; &lt;b&gt;adopt&lt;/b&gt; คือการรับช่วงดูแลแพกเกจกำพร้าต่อ โดยเปลี่ยนสถานะ bug wnpp ชนิด O        เป็น ITA (Intent To Adopt) แล้วปิด bug ด้วยการอัปโหลดแพกเกจรุ่นใหม่ โดยเขียน        changelog ว่า &lt;tt&gt;* New Maintainer (Closes: #&lt;i&gt;xxxxx&lt;/i&gt;)&lt;/tt&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;สำหรับผู้ดูแลแพกเกจที่เริ่มไม่มีเวลา อาจประกาศหาผู้ดูแลต่อแทนการ orphan ได้ โดยเปิด bug wnpp ชนิด RFA (Request For Adoption) หรือ RFH (Request For Help) แทนก็ได้ โดย RFH จะอ่อนกว่า เป็นการขอความช่วยเหลือโดยยังเจตนาจะดูแลแพกเกจต่อไป ส่วน RFA เป็นการประกาศหาผู้ดูแลต่อ โดยในระหว่างนี้ จะยังคงดูแลบ้างถ้ามีโอกาส และ O เป็นการประกาศชัดว่าจะไม่ดูแลต่ออีกเลย&lt;/p&gt;  &lt;p&gt;นอกจากนี้ ยังมีความเป็นเจ้าของร่วมแบบไม่ใช่ &lt;b&gt;maintainer&lt;/b&gt; คือเป็น &lt;b&gt;uploader&lt;/b&gt; โดยมีสิทธิ์เทียบเท่า maintainer ในแง่การอัปโหลดและการดูแล bug อีกด้วย มีหลายแพกเกจที่ช่วยกันดูแลหลายคน ก็อาศัย uploader หลายๆ คนช่วยกันทำผ่าน &lt;a href="http://alioth.debian.org/"&gt;alioth&lt;/a&gt; svn&lt;/p&gt;  &lt;p&gt;แต่ก็ไม่ใช่เฉพาะ maintainer และ uploader เท่านั้นที่สามารถอัปโหลดได้ ในบางครั้ง maintainer อาจยื่นมือช่วยแก้แพกเกจอื่นได้ อาจจะเพราะ bug มันเกี่ยวเนื่องกับแพกเกจของตัวเอง หรือเป็นการแก้ไขในเชิงนโยบายภาพรวม หรือด้วยเหตุผลใดก็แล้วแต่ การอัปโหลดดังกล่าวเรียกว่า Non-Maintainer Upload (NMU) โดยในกรณีเช่นนี้ เลข debian release จะใช้จุดทศนิยม เช่น จาก 0.3.3-4 เป็น 0.3.3-4.1 และ bug ต่างๆ ที่ NMU แก้ จะยังไม่ปิด จนกว่า maintainer จะอัปโหลดแพกเกจตัวใหม่เป็น 0.3.3-5 โดย Acknowledge NMU และปิด bug ที่ NMU แก้ ถ้าพิจารณาแล้วว่ายอมรับการแก้นั้น หรืออาจจะใช้วิธีอื่นก็อธิบายใน changelog&lt;/p&gt;  &lt;p&gt;ดังนั้น สำหรับผู้มาใหม่ และสนใจจะช่วยทำแพกเกจ อาจจะมองหา &lt;a href="http://bugs.debian.org/wnpp"&gt;bug wnpp&lt;/a&gt; ชนิด O, RFA หรือ RFP โดยถ้าเจอแพกเกจที่สนใจ และแน่ใจในวรยุทธ์การ build package ของตนแล้ว ก็อาจจะอาสาโดยเปลี่ยนสถานะ bug ชนิด O หรือ RFA เป็น ITA หรือ bug ชนิด RFP เป็น ITP แล้วเตรียมอัปโหลดแพกเกจ&lt;/p&gt;  &lt;p&gt;คราวหน้ามาต่อเรื่องประเด็นปลีกย่อยที่จะพบขณะทำแพกเกจ       &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2817987313607478074?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2817987313607478074/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2817987313607478074' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2817987313607478074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2817987313607478074'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/intro-to-debian-process-2.html' title='Intro to Debian Process (2)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2135050211872153584</id><published>2008-08-07T11:57:00.000-07:00</published><updated>2008-08-07T11:58:25.622-07:00</updated><title type='text'>Intro to Debian Process (1)</title><content type='html'>&lt;div class="post-body"&gt;       &lt;p&gt;       เพื่อส่งเสริมให้ผู้สนใจจะเข้าร่วมพัฒนากับเดเบียน ได้มีแนวทางในการเข้าร่วม หรืออย่างน้อย ก็เพื่อประกอบความเข้าใจสำหรับผู้อ่าน blog ของผม ว่าที่ผ่านๆ มา ที่เขียนเรื่องเกี่ยวกับเดเบียนเนี่ย ผมทำอะไรกันแน่ เพราะเดเบียนเขามีศัพท์เฉพาะหลายคำเอาไว้ใช้&lt;/p&gt;  &lt;h4&gt;เอกสารแนะนำ&lt;/h4&gt;  &lt;p&gt;ก่อนอื่น แนะนำเอกสารที่ควรอ่านเสียก่อน สำหรับผู้สนใจเข้าร่วมพัฒนาเดเบียน:&lt;/p&gt; &lt;ul&gt;&lt;li&gt; &lt;a href="http://www.debian.org/doc/maint-guide/"&gt;New Maintainers'         Guide&lt;/a&gt; ให้ข้อมูลเบื้องต้น สำหรับผู้ที่สนใจจะเริ่มทำแพกเกจสำหรับเดเบียน        โดยเริ่มตั้งแต่สอนวิธีเริ่มสร้าง debian package จาก source ตั้งต้น,        การตรวจสอบแพกเกจด้วย lintian, การอัปโหลด, การออกแพกเกจรุ่นใหม่        &lt;/li&gt;&lt;li&gt; &lt;a href="http://www.debian.org/doc/developers-reference/"&gt;Developer's         Reference&lt;/a&gt; เป็นเอกสารอ้างอิงสำหรับนักพัฒนาเดเบียนทุกคน มีเรื่องต่างๆ ที่จำเป็น        ตั้งแต่ขั้นตอนการสมัครเป็น maintainer, หน้าที่ของ debian developer, การจัดการ key,        การจัดการแพกเกจ, การ sponsor แพกเกจ, internationalization &lt;/li&gt;&lt;li&gt; &lt;a href="http://www.debian.org/doc/debian-policy/"&gt;Debian Policy         Manual&lt;/a&gt; เป็นเอกสารที่จำเป็นต้องอ่าน ถ้าจะ build package เพราะ policy        เป็นแนวทางการทำงานร่วมกันของนักพัฒนาเดเบียนเรือนพันทั่วโลก        โดยไม่เกิดปัญหาความเข้ากันไม่ได้ระหว่างแพกเกจต่างๆ เริ่มตั้งแต่ filesystem hierarchy        standard, ระบบเมนู, นโยบายสำหรับระบบย่อยต่างๆ ที่มีองค์ประกอบหลายชิ้น เช่น Emacs,        Java, Perl, Python ฯลฯ &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;ยังมีเอกสารน่าสนใจอื่นๆ อีก ที่ &lt;a href="http://www.debian.org/devel/"&gt;Debian Developers' Corner&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;สายการพัฒนา&lt;/h4&gt;  &lt;p&gt;ทีนี้ สำหรับผู้อ่านที่ยังไม่ทราบวิธีนับรุ่นและสายการพัฒนาต่างๆ ของเดเบียน ขอเกริ่นคร่าวๆ ว่าเดเบียนขณะใดๆ มีสายการพัฒนาหลักๆ 3 สาย คือ stable, testing และ unstable โดย stable คือรุ่นที่คงตัว ไม่ค่อยมีการเปลี่ยนแปลง ยกเว้น security update หรือการแก้ bug ที่ร้ายแรง, testing คือรุ่นทดสอบที่รอปล่อยตัวเป็น stable รุ่นถัดไป มีการเปลี่ยนแปลงค่อนข้างบ่อย แต่ผ่านการทดสอบใน unstable มาระยะหนึ่งแล้ว ส่วน unstable คือรุ่นใหม่สุดที่เปลี่ยนแปลงบ่อยสุด แพกเกจต่่างๆ จะเริ่มอัปโหลดเข้าที่นี่ เพื่อรอ bug report ระยะหนึ่งก่อนย้ายเข้า testing แต่ทั้งนี้ ยังมีแหล่งอัปโหลดที่ใช้ทดสอบในหมู่นักพัฒนากันเองที่ experimental ที่มักใช้เป็นที่พักของแพกเกจที่มีองค์ประกอบหลายส่วน เช่น GNOME ที่ต้องรอย้ายเข้า unstable พร้อมกันเป็นชุด และรุ่นต่างๆ ที่เคลื่อนผ่านสายการพัฒนาเหล่านี้ จะมีชื่อรหัส (codename) ซึ่งได้มาจากชื่อตัวละครใน Toy Story โดยมี sid (เด็กที่ชอบทำลายของเล่น) เป็น unstable เสมอ รายละเอียดอ่านได้จาก &lt;a href="http://www.debian.org/doc/FAQ/ch-ftparchives.html#s-sourceforcodenames"&gt;FAQ&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;สำหรับผู้ดูแลแพกเกจ การอัปโหลดแพกเกจโดยปกติจึงมีสองที่ คือ unstable และ experimental แต่โดยทั่วไป ถ้าแพกเกจนั้นไม่ได้เกาะเกี่ยวกับใครมาก  หรือไม่ใช่การเปลี่ยนแปลงขนานใหญ่ในโครงสร้างภายใน ก็มักจะอัปโหลดเข้า unstable และเมื่อแพกเกจสถิตอยู่ใน unstable ได้ระยะหนึ่งโดยไม่มี release-critical bug ก็จะย้าย  (migrate) เข้า testing โดยอัตโนมัติ&lt;/p&gt;  &lt;h4&gt;คำที่เกี่ยวกับแพกเกจ&lt;/h4&gt;  &lt;p&gt;มีคำศัพท์เบื้องต้นที่ควรรู้เกี่ยวกับแพกเกจคือ:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt; &lt;b&gt;upstream&lt;/b&gt; หมายถึงผู้พัฒนาต้นน้ำ ได้แก่เจ้าของโครงการต่างๆ         ที่พัฒนาและเผยแพร่ซอร์สโค้ดต้นฉบับ เช่น GNOME, KDE, X.org &lt;/li&gt;&lt;li&gt; &lt;b&gt;maintainer&lt;/b&gt; หมายถึงผู้ดูแล debian package โดยเอาซอร์สจาก upstream        มาเพิ่มสคริปต์สำหรับสร้างเป็น debian package และคอยปรับรุ่นใหม่ๆ ใน debian        ตามการออกรุ่นของ upstream &lt;/li&gt;&lt;li&gt; &lt;b&gt;debian-native&lt;/b&gt; หมายถึงแพกเกจที่ไม่มี upstream source         แต่เป็นแพกเกจที่พัฒนาภายใน debian เอง เช่น debhelper ซึ่งเป็นเครื่องมือช่วยสร้าง         debian package ซึ่งแพกเกจเหล่านี้ จะนับรุ่นเสมือนเป็น upstream โดยไม่มีเลข debian        release ต่อท้าย ในขณะที่แพกเกจที่เป็น &lt;b&gt;non-native&lt;/b&gt; จะนับรุ่นโดยใช้รุ่นของ         upstream ประกอบกับเลข debian release เช่น 0.3.3-4 หมายถึง upstream เป็นรุ่น        0.3.3 และเป็นการทำ debian package รุ่นที่ 4 ใน debian โดยอ้างอิง upstream        รุ่นเดียวกันนี้ &lt;/li&gt;&lt;li&gt; &lt;b&gt;pristine source&lt;/b&gt; หมายถึง source tarball ของ upstream ซึ่งใน debian         จะแยกออกจากสคริปต์ต่างๆ ที่ใช้สร้างแพกเกจ (ต่างจาก .src.rpm ของ redhat ที่จะรวมทั้ง        source ทั้ง RPM spec มาในก้อนเดียวกัน) โดยมี suffix เป็น ".orig.tar.gz" เช่น        จาก upstream source thaibrowser-0.3.3.tar.gz ก็จะเปลี่ยนชื่อเป็น         thaibrowser-0.3.3.orig.tar.gz เพื่อแยกให้รู้ความแตกต่างจาก tarball อื่นๆ        และที่เรียกว่า &lt;b&gt;pristine source&lt;/b&gt; (ซอร์สบริสุทธิ์) ก็เพราะ debian         จะไม่แตะต้องข้อมูลใน .orig.tar.gz นี้เลย ถ้าจะ patch ก็จะแยก patch ต่างหาก        แม้แต่ script ที่ใช้ build package ก็จะอยู่ในรูป patch สำหรับสร้าง debian/        directory ภายใน upstream source tree &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;ยาวละ ไว้คราวหน้ามาต่อ&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ที่มา : http://thep.blogspot.com/2006/05/intro-to-debian-process-1.html&lt;br /&gt;&lt;/p&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2135050211872153584?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2135050211872153584/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2135050211872153584' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2135050211872153584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2135050211872153584'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/intro-to-debian-process-1.html' title='Intro to Debian Process (1)'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-647430414944379438</id><published>2008-08-07T11:56:00.000-07:00</published><updated>2008-08-07T11:57:36.976-07:00</updated><title type='text'>เอกสารเกี่ยวกับ Linux</title><content type='html'>http://linux.thai.net/~thep/docs/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-647430414944379438?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/647430414944379438/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=647430414944379438' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/647430414944379438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/647430414944379438'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/linux_07.html' title='เอกสารเกี่ยวกับ Linux'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3550440700862497977</id><published>2008-08-07T11:40:00.000-07:00</published><updated>2008-08-07T11:46:01.606-07:00</updated><title type='text'>เกี่ยวกับ rc.statd จำเป็นไหม จะ disable ได้ไหม</title><content type='html'>netstat -tap&lt;br /&gt;พอร์ต 43195&lt;br /&gt;&lt;pre&gt;Proto Recv-Q Send-Q Local Address    Foreign Address         State       PID/Program name&lt;br /&gt;tcp        0      0 localhost:mysql   *:*            LISTEN     15531/mysqld&lt;br /&gt;tcp        0      0 *:pop3            *:*            LISTEN     27547/tcpserver&lt;br /&gt;tcp        0      0 localhost:spamd   *:*            LISTEN     10606/perl&lt;br /&gt;tcp        0      0 *:sunrpc          *:*            LISTEN     2124/portmap&lt;br /&gt;tcp        0      0 *:auth            *:*            LISTEN     2705/inetd&lt;br /&gt;tcp        0      0 *:smtp            *:*            LISTEN     27532/tcpserver&lt;br /&gt;tcp        0      0 *:43195           *:*            LISTEN     2740/rpc.statd&lt;br /&gt;tcp6       0      0 *:imap2           *:*            LISTEN     2767/couriertcpd&lt;br /&gt;tcp6       0      0 *:www             *:*            LISTEN     18390/apache2&lt;br /&gt;tcp6       0      0 *:8822            *:*            LISTEN     2715/sshd&lt;br /&gt;&lt;/pre&gt;ต้องการปิด port 43195&lt;br /&gt;&lt;br /&gt;&lt;div class="content"&gt;     &lt;p&gt;NFS(Network File System) ช่วยให้เราสามารถ mount ระบบไฟล์จากเครื่องในเครือข่ายได้นะครับ คล้ายๆการ map drive ใน win นะครับ ถ้าแน่ใจว่าไม่ใช้ก็ให้ปิด service เหล่านี้(ถ้ามี)นะครับ&lt;/p&gt; &lt;p&gt;&lt;code&gt;portmap&lt;br /&gt;nfs-common&lt;br /&gt;nfs-kernel-server&lt;/code&gt;&lt;/p&gt; &lt;p&gt;วิธีลบ&lt;br /&gt;&lt;code&gt;# update-rc.d -f ชื่อserviceข้างบน remove&lt;/code&gt;&lt;/p&gt; &lt;p&gt;ถ้าเถื่อนๆหน่อยก็เข้าไปลบใน /etc/rc2.d/ ไฟล์ที่ขึ้นต้นด้วย S ตามด้วยตัวเลขและชื่อ service ลบทิ้งได้เลยไม่ต้องเสียดายมันเป็นแค่ symbolic link ตัวจริงๆจะเก็บไว้ใน /etc/init.d/&lt;/p&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3550440700862497977?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3550440700862497977/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3550440700862497977' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3550440700862497977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3550440700862497977'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/rcstatd-disable.html' title='เกี่ยวกับ rc.statd จำเป็นไหม จะ disable ได้ไหม'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-8842195512158194286</id><published>2008-08-07T11:30:00.000-07:00</published><updated>2008-08-07T11:34:42.007-07:00</updated><title type='text'>CoovaChilli Documentation</title><content type='html'>http://coova.org/wiki/index.php/CoovaChilli/Documentation&lt;br /&gt;&lt;br /&gt;Hot spot&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-8842195512158194286?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/8842195512158194286/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=8842195512158194286' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8842195512158194286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/8842195512158194286'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/coovachilli-documentation.html' title='CoovaChilli Documentation'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-897471786024066544</id><published>2008-08-07T11:29:00.000-07:00</published><updated>2008-08-08T06:25:38.233-07:00</updated><title type='text'>shorewall  on Debian</title><content type='html'>&lt;p&gt;shorewall เป็นโปรแกรมประเภท firewall เอาไว้สำหรับกรอง packet ต่างๆที่เข้ามาในเครื่องเรา เป็นเครื่องมือสำหรับป้องกันเครื่องของเราจากผู้บุกได้พอสมควร&lt;br /&gt;ตัวอย่างนี้เป็นการติดตั้ง shorewall กับ debian etch&lt;/p&gt; &lt;p&gt;ถ้าหากติดตั้ง ipchains ให้ remove ipchains ออกก่อน&lt;br /&gt;#apt-get remove ipchains&lt;/p&gt; &lt;p&gt;หลังจากนั้นก็ติดตั้ง shorewall&lt;br /&gt;#apt-get install shorewall&lt;/p&gt; &lt;p&gt;หลังจากติดตั้ง shorewall เสร็จแล้วต่อไปก็เป็นการตั้ค่าให้กับ shorewall ให้เข้าไปแก้ไขที่ไฟล์ /etc/default/shorewall&lt;br /&gt;#nano /etc/default/shorewall&lt;br /&gt;ให้เปลี่ยน&lt;br /&gt;startup=0&lt;br /&gt;เป็น&lt;br /&gt;startup=1&lt;/p&gt; &lt;p&gt;สำหรับการติดตั้งโปรแกรม shorewall ครั้งแรก จะไม่มีไฟล์ configuration ใน directory /etc/shorewall/ ต้องคัดลอกไฟล์จาก /usr/share/doc/shorewall-common/default-config มาก่อน&lt;br /&gt;cp /usr/share/doc/shorewall-common/default-config/* /etc/shorewall/&lt;/p&gt; &lt;p&gt;การตั้งค่า zones&lt;br /&gt;ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/zones&lt;br /&gt;#ZONE TYPE OPTIONS IN OUT&lt;br /&gt;# OPTIONS OPTIONS&lt;br /&gt;fw firewall&lt;br /&gt;net ipv4 #&lt;br /&gt;loc ipv4 #&lt;br /&gt;#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE&lt;/p&gt; &lt;p&gt;การตั้งค่า interfaces&lt;br /&gt;ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/interfaces&lt;br /&gt;#ZONE INTERFACE BROADCAST OPTIONS&lt;br /&gt;net eth0 detect&lt;br /&gt;#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE&lt;/p&gt; &lt;p&gt;การตั้งค่า policy&lt;br /&gt;ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/policy&lt;br /&gt;#SOURCE DEST POLICY LOG LIMIT:BURST&lt;br /&gt;# LEVEL&lt;br /&gt;fw net ACCEPT&lt;br /&gt;fw loc ACCEPT&lt;br /&gt;net all DROP info&lt;br /&gt;all all REJECT info&lt;br /&gt;#LAST LINE — DO NOT REMOVE&lt;/p&gt; &lt;p&gt;การตั้งค่า rules เป็นการกำหนดกฎต่างๆที่ใช้ในการกรอง packet ที่เข้ามาภายในเครื่องว่าจะให้ผ่านไปได้หรือไม่ให้ผ่าน&lt;br /&gt;ให้เพิ่มข้อความต่อไปนี้ในไฟล์ /etc/shorewall/rules&lt;br /&gt;#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/&lt;br /&gt;# PORT(S) PORT(S) DEST LIMIT GROUP&lt;br /&gt;#SECTION ESTABLISHED&lt;br /&gt;#SECTION RELATED&lt;br /&gt;SECTION NEW&lt;br /&gt;ACCEPT net fw tcp 22&lt;br /&gt;ACCEPT net fw tcp 3306&lt;br /&gt;#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE&lt;br /&gt;ตัวอย่างด้านบนเป็นการ อนุญาติให้ packet จาก zone net ผ่านเข้าได้สองพอร์ทคือพอร์ท 80 กับ พอร์ท 10000 และโปรโตคอลต้องเป็นโปรโตคอล tcp&lt;br /&gt;สำหรับใครที่ต้องการจะเพิ่มพอร์ทอื่นๆ สำหรับโปรแกรมแต่ละโปรแกรม ก็ทำได้ตามความต้องการครับ&lt;/p&gt; &lt;p&gt;หลังจากที่ตั้งค่าให้กับ shorewall แล้ว ให้ทำการเริ่มต้นการทำงานของ shorewall โดย&lt;br /&gt;#/etc/init.d/shorewall start&lt;br /&gt;ถ้าหากมีข้อผิดพลาดเกิดขึ้น สามารถดูรายละเอียดได้ในไฟล์ /var/log/shorewall-init.log&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ที่มา : http://debianclub.org/node/241&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-897471786024066544?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/897471786024066544/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=897471786024066544' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/897471786024066544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/897471786024066544'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/shorewall-on-debian.html' title='shorewall  on Debian'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-3166565578783940604</id><published>2008-08-07T11:27:00.000-07:00</published><updated>2008-08-07T11:28:19.461-07:00</updated><title type='text'>คำสั่ง Firewall</title><content type='html'>&lt;h1 class="title"&gt;ไฟล์วอล &lt;/h1&gt;# iptables -L&lt;br /&gt;&lt;br /&gt;หรือจะถามถึงพอร์ตที่เปิดรับ service ทั้งหมด ณ ปัจจุบัน?&lt;br /&gt;&lt;pre&gt;# &lt;strong&gt;netstat -a&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;$ apt-get install nmap&lt;br /&gt;&lt;br /&gt;$ nmap 127.0.0.1&lt;br /&gt;&lt;br /&gt;$ nmap your ip&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-3166565578783940604?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/3166565578783940604/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=3166565578783940604' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3166565578783940604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/3166565578783940604'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/firewall.html' title='คำสั่ง Firewall'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2119219509529067218</id><published>2008-08-07T11:24:00.000-07:00</published><updated>2008-08-07T11:26:04.404-07:00</updated><title type='text'>Firewall บน Debian</title><content type='html'>&lt;div class="content"&gt;&lt;p&gt;หลาย ๆ คนในที่นี้ ที่ต้องดูแลเครื่อง server และการ remote เข้าไปควบคุมเครื่อง ผ่านทาง Secure Shell (SSH) เป็นเรื่องที่สร้างความสุขให้แก่เราอย่างมาก เนื่องจากไม่ต้องเข้าไปดูหน้าเครื่องก็ได้ แต่ไม่ใช่เราเพียงผู้เดียวที่อยากเข้าไปใช้งาน ผู้ไม่ประสงค์ดี ก็อยากเข้าไปใช้เหมือนกัน โดยความพยายามที่จะเดาชื่อ username และ password (Dictionary Attacks - Brute Force) แต่โชคยังดีที่ server ส่วนใหญ่ที่ดูแลอยู่ มี user ไม่มาก แถม password ก็ไม่ต้องห่วงให้เดาก็ต้องเดานานมาก ๆ หากอยากตรวจสอบความยากง่ายของ password ที่ใช้อยู่ สามารถทดสอบได้ที่ &lt;a href="http://www.securitystats.com/tools/password.php" title="http://www.securitystats.com/tools/password.php"&gt;http://www.securitystats.com/tools/password.php&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;คำถาม&lt;/strong&gt; ที่ตามมาคือ ก็ password ก็ยากมาก ๆ แล้วนี่ ทำไมต้องกังวลอีก .....&lt;/p&gt; &lt;p&gt;&lt;strong&gt;คำตอบ&lt;/strong&gt; ก็คือ เพราะมันยากนี่แหละ พี่แกเลยพยายามทุกวิถีทาง เพื่อจะเข้ามาให้ได้ โจมตีด้วยการกระหน่ำคำต่าง ๆ ใน dictionary ที่แกมีอยู่ ผลที่ตามมาคือ bandwidth ที่มีค่าของเรา ถูกเอาไปใช้เพื่อการโจมตี โดยที่เราไม่ได้ประโยชน์ใด ๆ ทั้งสิ้น ตังค์เราก็ต้องจ่าย จะมาใช้แบบไม่ขออนุญาตง่าย ๆ ได้ไงฟะ (ถึงขอ...ก็ไม่ให้เฟ้ย) แล้วทำไงดี...... ???&lt;/p&gt; &lt;p&gt;มีโปรแกรมหลาย ๆ ตัวที่ทำหน้าที่ตรวจสอบ และปิดกั้น (block) การเข้ามาของผู้ไม่ประสงค์ดี แต่ด้วยการที่เราเป็นสาวก Debian ต้องมองหาอะไรที่ง่ายต่อชีวิต และทรัพย์สินก่อนเป็นอันดับแรก .... และก็เจอ ....&lt;/p&gt; &lt;h4 class="post-subtitle"&gt;&lt;a href="http://www.fail2ban.org/"&gt;Fail2Ban&lt;/a&gt;&lt;/h4&gt; &lt;p&gt;ชื่อก็บอกยี่ห้ออยู่แล้วว่า "ผิดมา ตู แบน" เป็นโปรแกรมที่มีอยู่ใน Debian repository (ทั้งใน etch, lenny และ sid แต่เวอร์ชันอาจจะต่างกัน เพราะต่างกรรม ต่างวาระ) การติดตั้งก็แสนจะสะดวก ตามสไตล์ Debian&lt;/p&gt; &lt;pre&gt;# &lt;strong&gt;aptitude install fail2ban&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; ติดตั้งเสร็จแล้วครับ เท่านี้ก็ใช้งานได้แล้ว :P ... &lt;/p&gt; &lt;p&gt;คำถาม อ้าวไม่ต้องตั้งค่าอะไรเลยเหรอ....&lt;/p&gt; &lt;p&gt;คำตอบ ไม่ต้องก็ใช้งานได้แล้วครับ แต่จะให้ดีก็สำรวจกันหน่อยดีกว่า ว่ามีอะไรให้เราตั้งได้บ้าง&lt;/p&gt; &lt;p&gt;เข้าไปดูการตั้งค่ากันต่อละกันครับ&lt;/p&gt; &lt;p&gt;&lt;code&gt;/etc/fail2ban/jail.conf&lt;/code&gt; เป็นไฟล์ config ที่มากับระบบ หากต้องการแก้ไข&lt;/p&gt; &lt;pre&gt;# &lt;strong&gt;cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; นี่คือข้อดีที่ Debian ทำให้ เนื่องจากหากมีการ update ในอนาคต config อาจถูกเปลี่ยนโดย maintainer ได้ เราก็แก้ที่ local จะได้ไม่ไปยุ่งยากกับ maintainer เขาครับ&lt;/p&gt; &lt;pre&gt;# &lt;strong&gt;vi /etc/fail2ban/jail.local&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;...&lt;br /&gt;[DEFAULT]&lt;br /&gt;ignoreip = 127.0.0.1  # เป็น ip ที่จะไม่มีการ Ban โดยเด็ดขาด&lt;br /&gt;bantime = 1440        # เป็นเวลาที่จะ Ban IP ครับ ค่าเริ่มต้น 600 วินาที = 10 นาที&lt;br /&gt;                     # น้อยไปก็เปลี่ยนได้ครับ 1440 วินาที = 1 วัน&lt;br /&gt;                     # หรือ -1 สำหรับการ Ban IP ตลอดไป จนกว่าจะ Reboot&lt;br /&gt;maxretry = 3          # ให้ผู้ไม่ประสงค์ดี หรือแม้แต่เราเอง ลองได้กี่ครั้ง&lt;br /&gt;...&lt;br /&gt;[ssh-ddos]&lt;br /&gt;enabled = true       # ผมเปลี่ยนจาก false เป็น true เพื่อเพิ่มการตรวจสอบ SSH DoS&lt;br /&gt;port     = ssh, sftp&lt;br /&gt;filter     = sshd-ddos&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; แก้ไขเสร็จ สั่งเริ่ม Service ใหม่&lt;/p&gt; &lt;pre&gt;# &lt;strong&gt;/etc/init.d/fail2ban restart&lt;/strong&gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; ผลคือ&lt;/p&gt; &lt;pre&gt;# &lt;strong&gt;cat /var/log/fail2ban.log&lt;/strong&gt;&lt;br /&gt;...&lt;br /&gt;2007-09-17 18:33:15,860 fail2ban.actions: WARNING [ssh] Ban 125.24.142.28&lt;br /&gt;2007-09-17 18:34:25,008 fail2ban.actions: WARNING [ssh] Ban 60.191.41.108&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;p&gt; ความสามารถของ fail2ban ยังไม่หมดแค่การตรวจสอบ และปิดกั้นสำหรับ SSH เท่านั้น ยังมีอีกหลาย Service ที่ fail2ban สามารถเฝ้ายามให้ได้ ไม่ว่าจะเป็น apache, vsftpd, proftpd, postfix, couriersmtp, named (DNS) เป็นต้น&lt;/p&gt; &lt;p&gt;หลังจากวันนี้ไป... ใครจะมาโจมตีก็ทำได้ยากซักหน่อยละครับผม :)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ที่มา : http://debianclub.org/node/61&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2119219509529067218?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2119219509529067218/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2119219509529067218' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2119219509529067218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2119219509529067218'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/firewall-debian.html' title='Firewall บน Debian'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-2646725450440022095</id><published>2008-08-07T11:18:00.001-07:00</published><updated>2008-08-07T11:22:36.939-07:00</updated><title type='text'>เพิ่มความปลอดภัยให้กับ Linux</title><content type='html'>Trick 1: Unmounting the unresponsive DVD drive&lt;br /&gt;Trick 2: Getting your screen back when it's hosed&lt;br /&gt;Trick 3: Collaboration with screen&lt;br /&gt;Trick 4: Getting back the root password&lt;br /&gt;Trick 5: SSH back door&lt;br /&gt;Trick 6: Remote VNC session through an SSH tunnel&lt;br /&gt;Trick 7: Checking your bandwidth&lt;br /&gt;Trick 8: Command-line scripting and utilities&lt;br /&gt;Trick 9: Spying on the console&lt;br /&gt;Trick 10: Random system information collection&lt;br /&gt;http://www.ibm.com/developerworks/linux/library/l-10sysadtips/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-2646725450440022095?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/2646725450440022095/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=2646725450440022095' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2646725450440022095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/2646725450440022095'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/linux.html' title='เพิ่มความปลอดภัยให้กับ Linux'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7059857428171456581.post-5521318615415393455</id><published>2008-08-07T11:08:00.000-07:00</published><updated>2008-08-07T11:19:27.968-07:00</updated><title type='text'>Debian+ Inno DB Myisam</title><content type='html'>มุมมอง debian ของฉัน + Inno DB Myisam&lt;br /&gt;เท่าที่รู้คือ ( ไม่แน่ใจถูกหรือเปล่า )&lt;br /&gt;-ISAM (MyISAM) คือ รูปแบบการเก็บ ข้อมูลตามปกติ ( default )ของ MYSQL&lt;br /&gt;- ทำงาน เร็วกว่า InnoDB แต่ ผิดพลาดได้ง่ายกว่า table เสียหายได้ง่าย&lt;br /&gt;-InnoDB ข้อดีคือ&lt;br /&gt;-รองรับการทำ Transaction รองรับการอ่านและเขียน พร้อมๆ กันได้ดี&lt;br /&gt;-มีระบบ Auto Data Recovery หากมีการ shutdown โดยไม่เหมาะสม&lt;br /&gt;คือ&lt;br /&gt;1. ช่วย บอกความแตกต่างให้หน่อยครับ เอาขอดีข้อเสีย&lt;br /&gt;2. Transaction = รองรับการอ่านและเขียน พร้อมๆ กันได้ดี คือ การลองรับการเข้าถึงฐานข้อมูล&lt;br /&gt;ที่มีทั้งการอ่านและเขียน จากหลายคนพร้อมกันหรือไม่ใช่ครับ&lt;br /&gt;3. InnoDB มีอยู่ใน Mysql เปล่าครับ แล้วจะเปิดใช้ได้ยังไรครับ&lt;br /&gt;&lt;br /&gt;รื่องของขนาดไฟล์เท่าที่ใช้มา MyISAM ใช้กับไฟล์ขนาดไม่ใหญ่มากนะครับ 3GB - 4GB ก็รอดยากแล้ว และจะอืดมากถ้าไฟล์ขนาดใหญ่ ๆ แต่ InnoDB นั้นตอนนี้ผมใช้เกิน 10GB ยังไม่มีปัญหาเลยครับ แต่ถ้าจะใช้ InnoDB กับระบบใหญ่ ๆ ควรศึกษาการ tunning ให้ดีด้วยนะครับ จะมีผลต่อ performance ของระบบโดยตรง&lt;br /&gt;&lt;br /&gt;InnoDB นั้นมีให้ใช้ใน MySQL 5.0 ขึ้นไป (จริงๆแล้วตั้งแต่ 4 กว่าๆด้วยซ้ำ) แต่ บน windows ต้องบอกให้ Active ก่อนใช้งาน โดยทำอย่างนี้&lt;br /&gt;&lt;br /&gt;  1. แก้ไข c:\windows\my.ini&lt;br /&gt;  2. ตอนแรกจะถูก Comment ไว้ ให้ Uncomment บรรทัดที่ว่า&lt;br /&gt;     default-storage-engine=INNODB&lt;br /&gt;  3. และ มีการ Skip ไม่ให้ใช้ InnoDB เราต้อง Comment ซะ&lt;br /&gt;     #skip-innodb&lt;br /&gt;  4. จากนั้นให้ Save แล้วก็ Restart MySQL Server&lt;br /&gt;&lt;br /&gt;แล้ว InnoDB ดียังไง ใช้ทำอะไร ก็เอาว่า เรื่องนึงคือ การทำ Foreign Key ซึ่งจะทำการ Reference Index แต่ละ Table ก็จะสามารถทำการ Cascade Delete, Update ได้ว่างั้น ถ้าไม่ Enable ก็จะได้เป็น MyISAM เราจะใช้ Foreign Key ไม่ได้ครับ&lt;br /&gt;ขอบคุณล่วงหน้าสำหรับทุกความเห็นและทุกคำตอบครับ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7059857428171456581-5521318615415393455?l=wittaya8.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wittaya8.blogspot.com/feeds/5521318615415393455/comments/default' title='ส่งความคิดเห็น'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7059857428171456581&amp;postID=5521318615415393455' title='0 ความคิดเห็น'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5521318615415393455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7059857428171456581/posts/default/5521318615415393455'/><link rel='alternate' type='text/html' href='http://wittaya8.blogspot.com/2008/08/debian.html' title='Debian+ Inno DB Myisam'/><author><name>วิทยา</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
