<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com &#187; network account</title>
	<atom:link href="http://spalinux.com/tag/network-account/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Sat, 21 Jan 2012 16:07:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>เก็บปริมาณการใช้งาน network บนลินุกซ์ด้วย conntrack-tools</title>
		<link>http://spalinux.com/2008/09/network_accounting_on_linux_by_conntrack_tools</link>
		<comments>http://spalinux.com/2008/09/network_accounting_on_linux_by_conntrack_tools#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:15:34 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[conntrack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network account]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=183</guid>
		<description><![CDATA[ในบทความนี้จะกล่าวถึงวิธีการคอนฟิกลินุกซ์ให้สามารถเก็บปริมาณการใช้งาน network ที่เข้าออกเครื่องได้ โดยจะเป็นรายงาน (log) แบบค่อนข้างละเอียดคือ ดูได้ว่าแต่ละ packet ที่ส่งเข้า/ออกเครื่องนั้นมีประเภทไหนบ้าง มาจาก IP Address ต้นทาง ปลายทาง จากไหน ใช้ protocol เป็น TCP หรือ UDP และใช้ Port อะไร เช่นเป็น Web, Mail, Secure Shell หมายเหตุ คุณสมบัตินี้จะคล้ายๆ กับการใช้งาน Netflow บนอุปกรณ์ Cisco Router มีหลายวิธีที่สามารถทำได้ แต่ในที่นี้จะแนะนำการใช้โปรแกรม conntrack-tools จับปริมาณการใช้งาน โดย conntrack-tools ถือว่าเป็นโปรแกรม (userspace tools) ที่ติดต่อกับ Linux kernel ในส่วนของ Connection Tracking System จุดประสงค์หลักๆ ของโปรแกรมนี้จะสามารถนำไปทำเป็น High [...]]]></description>
			<content:encoded><![CDATA[<p>ในบทความนี้จะกล่าวถึงวิธีการคอนฟิกลินุกซ์ให้สามารถเก็บปริมาณการใช้งาน network ที่เข้าออกเครื่องได้ โดยจะเป็นรายงาน (log) แบบค่อนข้างละเอียดคือ ดูได้ว่าแต่ละ packet ที่ส่งเข้า/ออกเครื่องนั้นมีประเภทไหนบ้าง มาจาก IP Address ต้นทาง ปลายทาง จากไหน ใช้ protocol เป็น TCP หรือ UDP และใช้ Port อะไร เช่นเป็น Web, Mail, Secure Shell</p>
<p>หมายเหตุ คุณสมบัตินี้จะคล้ายๆ กับการใช้งาน Netflow บนอุปกรณ์ Cisco Router</p>
<p>มีหลายวิธีที่สามารถทำได้ แต่ในที่นี้จะแนะนำการใช้โปรแกรม conntrack-tools จับปริมาณการใช้งาน โดย conntrack-tools ถือว่าเป็นโปรแกรม (userspace tools) ที่ติดต่อกับ Linux kernel ในส่วนของ Connection Tracking System จุดประสงค์หลักๆ ของโปรแกรมนี้จะสามารถนำไปทำเป็น High Availability stateful firewall ได้ แต่ในบทความนี้จะขอไม่กล่าวถึงการใช้งานคุณสมบัตินี้</p>
<p><span id="more-183"></span></p>
<p>คุณสมบัติของเครื่องที่จะสามารถคอนฟิกให้ใช้งาน conntrack-tools ได้นั้นมีดังนี้</p>
<ul>
<li>ใช้เวอร์ชั่น Linux kernel มากกว่า 2.6.18</li>
<li>ติดตั้ง Library ชื่อ libnfnetlink, libnetfilter_conntrack</li>
<li>คอนฟิกและเปิดการใช้งาน connection tracking system, nfnetlink</li>
<li>ติดตั้งโปรแกรม conntrack-tools</li>
</ul>
<p>ตัวอย่างในบทความนี้ทดสอบบน Fedora 9 ซึ่งจะติดตั้ง kernel และ Library ตามข้อกำหนดมาเรียบร้อยแล้ว สิ่งที่ต้องทำเพิ่มคือเปิดการใช้งาน Connection Tracking System และติดตั้งโปรแกรม conntrack-tools เพิ่มเติม</p>
<h4>ตรวจสอบเครื่องก่อนลงโปรแกรมเพิ่มเติม</h4>
<p>ตัวอย่างการตรวจสอบ kernel และ Library ก่อนลงโปรแกรมเพิ่มเติม</p>
<pre>[root@server ~]# <strong>uname -a
</strong>Linux server.nelisys.com 2.6.25-14.fc9.i686 #1 SMP Thu May 1 06:28:41 EDT 2008 i686 i686 i386 GNU/Linux</pre>
<pre>[root@server ~]# <strong>rpm -q libnfnetlink
</strong>libnfnetlink-0.0.33-0.1.svn7211.fc9.i386</pre>
<pre>[root@server ~]# <strong>rpm -q libnetfilter_conntrack
</strong>libnetfilter_conntrack-0.0.89-0.1.svn7356.fc9.i386</pre>
<h4>เปิดการใช้งาน Connection Tracking System</h4>
<p>ก่อนที่โปรแกรมจะสามารถจับสถิติการใช้งานได้นั้นจำเป็นต้องเปิดคุณสมบัติ Connection Tracking System โดยในที่นี้จะคอนฟิก iptables ให้ตรวจสอบ state ทุก packet ที่วิ่งเข้าออกจากเครื่อง ดังนี้</p>
<p><span style="color: #ff0000;"><strong>คำเตือน ตัวอย่างไฟล์คอนฟิกของ iptables ด้านล่างนี้เป็นการอนุญาตทุก packet ให้สามารถส่งเข้าออกเครื่องนี้ได้ทั้งหมด แนะนำให้ทดสอบทำความเข้าใจใน network ที่แยกต่างหากก่อน เพื่อความปลอดภัยของเครื่อง แล้วค่อยนำไปประยุกต์ใช้งานจริง</strong></span></p>
<p>ตัวอย่างไฟล์คอนฟิกของ iptables</p>
<pre>[root@server ~]# <strong>cat /etc/sysconfig/iptables
</strong>*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
COMMIT</pre>
<p>ใช้คำสั่ง service เพื่อรัน iptables</p>
<pre>[root@server ~]# <strong>service iptables start
</strong>iptables: Applying firewall rules:                         [  OK  ]</pre>
<p>ตรวจสอบ rules ที่ถูกสร้างขึ้น</p>
<pre>[root@server ~]# <strong>iptables -L -v -n
</strong>Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   71  5388 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED</pre>
<pre>Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination</pre>
<pre>Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   64  6204 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED</pre>
<p>ใช้คำสั่ง lsmod เพื่อดู kernel module ที่ถูกเรียกใช้งานสำหรับการทำ Connection Tracking System</p>
<pre>[root@server ~]# <strong>lsmod | grep con
</strong>nf_conntrack_ipv4      11396  2
nf_conntrack           49748  2 nf_conntrack_ipv4,xt_state</pre>
<h4>ติดตั้งโปรแกรม conntrack-tools</h4>
<p>สามารถดาวน์โหลดโปรแกรม conntrack-tools สำหรับติดตั้งบน Fedora 9 ได้จาก</p>
<p><a href="http://mirrors.kernel.org/fedora/releases/9/Everything/i386/os/Packages/conntrack-tools-0.9.6-0.1.svn7382.fc9.i386.rpm">http://mirrors.kernel.org/fedora/releases/9/Everything/i386/os/Packages/conntrack-tools-0.9.6-0.1.svn7382.fc9.i386.rpm</a></p>
<p>ตัวอย่างการติดตั้งโปรแกรม conntrack-tools</p>
<pre>[root@server ~]# <strong>rpm -ivh conntrack-tools-0.9.6-0.1.svn7382.fc9.i386.rpm
</strong>Preparing...                ########################################### [100%]
   1:conntrack-tools        ########################################### [100%]</pre>
<p>จากการติดตั้งจะมีอยู่สองโปรแกรมคือ<br />
- conntrackd จะรันเป็น daemon ในการเก็บปริมาณการใช้งาน network<br />
- conntrack เป็นโปรแกรมที่ตรวจสอบไฟล์ /proc/net/ip_conntrack</p>
<p>ในบทความนี้เราจะใช้เฉพาะ conntrackd รันเป็น daemon</p>
<h4>สร้างไฟล์คอนฟิกของ conntrackd</h4>
<p>ขั้นตอนต่อไปคือการสร้างไฟล์ /etc/conntrackd/conntrackd.conf ซึ่งเป็นไฟล์คอนฟิกของ conntrackd โดยในที่นี้จะคอนฟิกให้รันอยู่ในโหมดการเก็บสถิติการใช้งาน network accounting</p>
<p>ตัวอย่างไฟล์คอนฟิก /etc/conntrackd/conntrackd.conf ในโหมดการเก็บสถิติการใช้งาน</p>
<pre>[root@server ~]# cat /etc/conntrackd/conntrackd.conf
#
# General settings
#
General {
    #
    # Number of buckets in the caches: hash table
    #
    HashSize 8192</pre>
<pre>    #
    # Maximum number of conntracks:
    # it must be &gt;= $ cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
    #
    HashLimit 65535</pre>
<pre>    #
    # Logfile: on, off, or a filename
    # Default: on (/var/log/conntrackd.log)
    #
    LogFile off</pre>
<pre>    #
    # Syslog: on, off or a facility name (daemon (default) or local0..7)
    # Default: off
    #
    Syslog off</pre>
<pre>    #
    # Lockfile
    #
    LockFile /var/lock/conntrack.lock</pre>
<pre>    #
    # Unix socket configuration
    #
    UNIX {
        Path /tmp/sync.sock
        Backlog 20
    }</pre>
<pre>    #
    # Netlink socket buffer size
    #
    SocketBufferSize 262142</pre>
<pre>    #
    # Increase the socket buffer up to maximum if required
    #
    SocketBufferSizeMaxGrown 655355
}</pre>
<pre><strong>Stats {
</strong>    #
    # If you enable this option, the daemon writes the information about
    # destroyed connections to a logfile. Default is off.
    # Logfile: on, off, or a filename
    # Default file: (/var/log/conntrackd-stats.log)
    #
 <strong>   LogFile on</strong></pre>
<pre>    #
    # Enable connection logging via Syslog. Default is off.
    # Syslog: on, off or a facility name (daemon (default) or local0..7)
    # If you set the facility, use the same as in the General clause,
    # otherwise you'll get a warning message.
    #
    Syslog off
}</pre>
<pre>#
# Ignore traffic for a certain set of IP's: Usually
# all the IP assigned to the firewall since local
# traffic must be ignored, just forwarded connections
# are worth to replicate
#
IgnoreTrafficFor {
    IPv4_address 127.0.0.1 # loopback
}</pre>
<pre>#
# Do not replicate certain protocol traffic
#
IgnoreProtocol {
#    UDP
#   ICMP
#   IGMP
#   VRRP
    # numeric numbers also valid
}</pre>
<h4>รันโปรแกรม conntrackd</h4>
<p>รันโปรแกรม conntrackd ให้เป็น daemon ของเครื่องตามตัวอย่าง</p>
<pre>[root@server ~]# <strong>conntrackd -d</strong></pre>
<pre>[root@server ~]# <strong>ps -ef | grep conntrackd
</strong>root     17381     1  0 22:19 ?        00:00:00 conntrackd -d</pre>
<h4>ทดสอบการใช้งานและดูไฟล์ที่ถูกสร้างขึ้น</h4>
<p>ไฟล์คอนฟิกด้านบนจะสั่งให้โปรแกรม conntrackd ที่รันเก็บสถิติไว้ในไฟล์ /var/log/conntrackd-stats.log โดยจะเก็บสถิติเมื่อมีการส่งข้อมูลสิ้นสุด (close connection) ในแต่ละ packet ที่เข้าออกเครื่อง</p>
<p>ตัวอย่างไฟล์ที่ถูกสร้างขึ้น</p>
<pre>Fri Sep 19 22:24:11 2008        tcp      6 src=192.168.1.1 dst=192.168.1.9 sport=1038 dport=22 packets=15 bytes=1864
                                           src=192.168.1.9 dst=192.168.1.1 sport=22 dport=1038 packets=12 bytes=2984
Fri Sep 19 22:24:21 2008        tcp      6 src=192.168.1.1 dst=192.168.1.9 sport=1039 dport=80 packets=5 bytes=817
                                           src=192.168.1.9 dst=192.168.1.1 sport=80 dport=1039 packets=5 bytes=639
Fri Sep 19 22:24:25 2008        tcp      6 src=192.168.1.1 dst=192.168.1.9 sport=1043 dport=80 packets=6 bytes=917
                                           src=192.168.1.9 dst=192.168.1.1 sport=80 dport=1043 packets=6 bytes=2784
Fri Sep 19 22:24:25 2008        tcp      6 src=192.168.1.1 dst=192.168.1.9 sport=1044 dport=80 packets=5 bytes=718
                                           src=192.168.1.9 dst=192.168.1.1 sport=80 dport=1044 packets=4 bytes=303
Fri Sep 19 22:24:25 2008        tcp      6 src=192.168.1.1 dst=192.168.1.9 sport=1045 dport=80 packets=5 bytes=718
                                           src=192.168.1.9 dst=192.168.1.1 sport=80 dport=1045 packets=5 bytes=342</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://conntrack-tools.netfilter.org/index.html" target="_blank">conntrack-tools: Netfilter’s connection tracking userspace tools</a></li>
<li><a href="http://www.free-it.de/archiv/talks_2005/paper-11076/paper-11076.html" target="_blank">Flow based network accounting with Linux</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/09/network_accounting_on_linux_by_conntrack_tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

