2013年3月21日 星期四

嬸婆圓滿

  昨晚聽到嬸婆過世消息,跟父母聊了一會兒,聽到他們說出『上一代都走了』,感受到他們的不捨及徬徨,這世界上再也沒有人對他們惜命命,永遠被當成孩子疼,為他們開心,為他們難過。

  從小父親就不斷告訴我,嬸婆是我們家的大恩人,是她拉拔國小畢業後的父親、二伯、四叔,不只提供住宿,有白米飯可吃,有衣服鞋子穿,還教授一技之長,成就我們家今日的富足。一向不常表逹情感的父親對嬸婆卻是例外,當年我南下民雄讀書時,就常提醒我,有空時,要代替他常去斗南請安。我是個不善社交的人,但我很明確收到父親的心意,所以還是硬著頭皮隻身拜訪。不過,雖然陌生,但因為嬸婆家幾十年來一直沒有改變過,我也順便想像父親當年在嬸婆家生活的樣子,問問我父親當年的事蹟。這是難得的故事,嬸婆口中的父親,是唯一以長輩的角度描述,不同於母親及伯叔。

  對我而言,嬸婆的言行大多來自父母的口述,比較像是故事中的人物,沒有那麼深切的真實感。不過,有一點是不同的,他們之間的情感是紮實,每回父母去見她,離開時,老人家總是像娃兒般含淚送別,千留萬留。

  我不懂,當年二家居住相隔幾十公里,生平沒見過幾次面,什麼意念讓嬸婆決定對別人家的孩子付出這麼多?圓了更多人生。就用『圓滿』來詮釋這位非凡的嬸婆!

2012年4月11日 星期三

安裝 CentOS / RHEL 6 預設的繁體中文字型套件

因為一開始安裝 CentOS 6 時,沒有選繁體中文,所以在遠端使用 firefox 時,因為沒有安裝繁體中文字型檔,所以繁體中文的部分都是一個個方塊的亂碼,十分不便。因為也沒有裝 X window,沒有使用圖形介面的套件管理程式來增加繁體中文的支援,上 Google 也沒查到繁體中文字型套件名稱。在 CentOS 5 中文字型套件名稱是 fonts-chinese-* ,但是在 CentOS 6 就沒有這個套件名稱,只好用很笨的方法,直接把有出現 fonts 的套件列出,從名字很像中文拼音的先試,一個一個找。最後我結論如下,只要安裝以下套件即可:

cjkuni-ukai-fonts (楷體)
cjkuni-uming-fonts (明體)
cjkuni-fonts-common
cjkuni-fonts-ghostscript
wqy-zenhei-fonts (文泉驛,黑體)
wqy-zenhei-fonts-common


使用 YUM 直接全裝啦!
[root]# yum install cjkuni-* wqy-zenhei-*


註:CJK套件代表 中日韓文 Chinese + Japanese + Korean

2012年3月29日 星期四

解決 Linux 上 NFS 群組上限16個的問題

前言:
在 Linux 上使用 NFS server 在 client 要求存取時,會驗證群組的權限(癈話),當權限不夠時,聰明的我們會立刻檢查Owner 及 Group 或 ACL 權限是否足夠。但是前幾年,我卻遇到明明權限設定是足夠的,使用 id 指令查詢時,也出現該目標的 group ID ,但是檔案就是無法讀寫,一直回應 permission denied ,試到三字經都駡出來了!查了很久才發現是 NFS 協定本身的限制,它在 server 端,只會 cache 16 個群組,也就是說第 17 個以後的群組,它完全不會理會。這也可以說明,為什麼我在 server 端直接對 filesystem 讀寫是正常,但是使用 NFS 在 client 端時,就會出現 permission denied ,這個問題當然也會出現在其它 UNIX like 及 BSD 的系統。這個問題其實已經困擾好幾年了,但一直沒有個好方法解決,只能消極的不要讓 group 超過 16 個。隨著公司開的專案越來越多,最近實在是覺得一直幫 user 調 group 數量很煩,所以就再次查看看有沒有解決的辦法。天時、地利是站在我這邊的,我找到一篇說明很詳細的文章,它講解原因、無效的解決方式、正確解決方式、充要條件等等,有興趣的人一定要詳讀:
Solving the NFS 16-Group Limit Problem(https://xkyle.com/solving-the-nfs-16-group-limit-problem/)



充要條件:
NFS server 版本在 1.0.12 以上,可以使用指令 rpc.mountd -v 查詢
kernel 版本在 2.6.21 以上,可以使用指令 uname -r 查詢
PS:只要處理 NFS server 這台機器即可,這個問題跟 client 無關,client 端的版本是舊的也不會影響解決的效果。


範例:
我就以 CentOS 6 作為範例:(CentOS 5, CentOS4, CentOS3 ...... 都不符合充要條件,除非你自行make 新版的 NFS server 套件及 kernel)

增加 NFS server 分享 ( rpc.mountd )時的選項:--manage-gids
[root]# vi /etc/sysconfig/nfs修改這一行,預設選項為空白: RPCMOUNTDOPTS=""
請修改成:RPCMOUNTDOPTS="--manage-gids"

(儲存、離開)


重新啟動 NFS server 服務:
請注意!若有 client 已經 mount 了此 NFS server 的 export 目錄時,最好先 umount ,不然會出現卡住的狀況。

[root]# /etc/rc.d/init.d/nfs restart

[root]# service nfs restart

這樣就完成了,超簡單的!但是改完之後還是有上限 ,不過不是以 group 的個數為上限,而是以 1001 bytes 。我的實際測試如下:
a) gid 從 60001 ~ 600167,每一個 group 使用 5 個 bytes,是 167x5=835
再加每個 gid 之間需要有個分隔符號,所以再加上 166(167-1),835+166=1001

重新讀取 NFS server 端的 rpc.mountd 的 gid cache:
[root@tp9bak tmp]# date +%s > /proc/net/rpc/auth.unix.gid/flush


查看 NFS server 端的 rpc.mountd 的 gid cache :
[root@tp9bak tmp]# cat /proc/net/rpc/auth.unix.gid/content
#uid cnt: gids...
60001 167: 60001 60002 60003 60004 60005 60006 60007 60008 60009 60010 60011 60012 60013 60014 60015 60016 60017 60018 60019 60020 60021 60022 60023 60024 60025 60026 60027 60028 60029 60030 60031 60032 60033 60034 60035 60036 60037 60038 60039 60040 60041 60042 60043 60044 60045 60046 60047 60048 60049 60050 60051 60052 60053 60054 60055 60056 60057 60058 60059 60060 60061 60062 60063 60064 60065 60066 60067 60068 60069 60070 60071 60072 60073 60074 60075 60076 60077 60078 60079 60080 60081 60082 60083 60084 60085 60086 60087 60088 60089 60090 60091 60092 60093 60094 60095 60096 60097 60098 60099 60100 60101 60102 60103 60104 60105 60106 60107 60108 60109 60110 60111 60112 60113 60114 60115 60116 60117 60118 60119 60120 60121 60122 60123 60124 60125 60126 60127 60128 60129 60130 60131 60132 60133 60134 60135 60136 60137 60138 60139 60140 60141 60142 60143 60144 60145 60146 60147 60148 60149 60150 60151 60152 60153 60154 60155 60156 60157 60158 60159 60161 60162 60163 60164 60165 60166 60167


b) 上限真的是 1001 嗎?那就試試 1002 吧!
為了湊 1002 ,gid 範圍以下:
60001 ~ 600148 (148個)
    6149 ~ 6171 (23個)
148 x 5 + 23 x 4 + 148 + 23 - 1 = 1002

結果........client 端在讀寫時不會出現  permission denied ,而是會卡住,很慘的結果。而 NFS server 端的 rpc.mountd 的 gid cache 則會出現以下結果:
[root]# cat /proc/net/rpc/auth.unix.gid/content
#uid cnt: gids...
# 60001 0:


若沒有修改過之前,會發生你明明有個 user 加到 17 以上的 group ,可是這裡永遠只有列出前面 16 個的 gid,但是不至於完全沒有。但是修改後若 gid 的 bytes 數超過上限 1001 時,不是只列出前面 1001 bytes 的 gid ,反而一個也沒有,造成此 user 完全沒有 group 權限。

2010年3月26日 星期五

在 MySQL 開個資料庫給 phpBB3

前言
安裝 phpBB3 之前,總得先吧資料庫MySQl 及 PHP 準備好~
至於 phpBB3 的安裝請看 竹貓星球 http://phpbb-tw.net/


環境
OS: CentOS Linux 5.4
Apache: 2.2.3
MySQL: 5.0.77
PHP: 5.1.6 (使用 PHP 擴充附件: mysqli)


啟動 Apache 及 MySQL 並設定 MySQL 的 root 密碼
# chkconfig httpd on
# service httpd start
# chkconfig mysqld on
# service mysqld start
# mysqladmin -u root password <MySQL root 密碼>


安裝 phpMyAdmin
原本下載的是 phpMyAdmin 3 ,但是安裝好才發現它需要 PHP 5.2 以後的版本,所以就要改用 phpMyAdmin 2 。
# wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/2.11.10/phpMyAdmin-2.11.10-all-languages.tar.bz2?use_mirror=ncu
# tar xjf phpMyAdmin-2.11.10-all-languages.tar.bz2
# mv phpMyAdmin-2.11.10-all-languages/  /var/www

建立 Apache 虛擬目錄 /phpmyadmin ,並限制只有本機能使用。
# vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /phpmyadmin /var/www/phpMyAdmin-2.11.10-all-languages
<Location /phpmyadmin> 
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    # Allow from .your-domain-name.com
</Location>  

重新啟動 Apache
# service httpd restart

設定 phpMyAdmin 驗證方式
# cp -p config.sample.inc.php config.inc.php
# vi config.inc.php
# 給 $cfg['blowfish_secret'] 一組亂數(最長 46 個字元)
$cfg['blowfish_secret'] = '1234567890abcdefghijklmnopqrstuvwxyz';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['extension'] = 'mysqli';

開 firefox 連 http://127.0.0.1/phpmyadmin ,[Language] 選 [中文 - Chinese traditional (utf-8)] 登入。

登入名稱: root
密碼:  <MySQL root 密碼>


若出現 [無法讀取 mcrypt 模組,
請檢查 PHP 設定] 訊息,請安裝以下有關加密的套件 mhash libmcrypt php-mhash php-mcrypt 。
# yum install -y mhash libmcrypt php-mhash php-mcrypt


建立資料庫 phpbb3 及其使用者 ccuphy3-phpbb3
--> [資料庫]
建立新資料庫: phpbb3
按 [建立]






--> [權限] --> [新增使用者]
使用者名稱:[文字輸入] ccuphy3-phpbb3
主機:[本地] localhost
密碼:[文字輸入] <MySQL ccuphy3-phpbb3 密碼>
Database for user : None
整體權限:( 全部取消)
資料: (全不選)
結構: (全不選)
系統管理: (全不選)
資源限制: (全不限:0)
按 [執行]







在 [指定資料庫權限] 欄中,指定資料庫 phpbb3 給使用者 ccuphy3-phpbb3
於以下資料庫加入權限: phpbb3
指定資料庫權限:(全選)
資料: (全選)
結構: (全選)
系統管理: (全選)
按 [執行]











註1:安裝 phpBB3 [資料庫設定]  步驟的內容說明
資料庫伺服器地址,或DSN:localhost (通常架phpBB3,MySQL跟Apache在同一台主機,所以設 localhost)
資料庫伺服器連接埠:  (預設在 TCP 3306 port ,若沒有自行換 port ,可以不用設定。)
資料庫名稱: phpbb3
資料庫管理員名稱:ccuphy3-phpbb3
資料庫管理員密碼:<MySQL ccuphy3-phpbb3 密碼>
資料庫表格的字首:phpbb_ (保持預設不必更改)

註2:在註冊時若要產生 GD 驗證圖檔,就需要裝 php-gd 套件。
# yum install -y php-gd

2010年3月18日 星期四

Linux 指令備忘錄



dmidecode 查硬體資訊

    dmidecode -t [TYPE]
    Valid type keywords are:
    bios
    system
    baseboard
    chassis
    processor
    memory
    cache
    connector
    slot
例如: dmidecode -t memory 查記憶體硬體資訊



fuser 查檔案或檔案系統正由那個程序使用
Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
             [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME...
       fuser -l
       fuser -V
Show which processes use the named files, sockets, or filesystems.

    -a        display unused files too
    -c        mounted FS
    -f        silently ignored (for POSIX compatibility)
    -i        ask before killing (ignored without -k)
    -k        kill processes accessing the named file
    -l        list available signal names
    -m        show all processes using the named filesystems
    -n SPACE  search in this name space (file, udp, or tcp)
    -s        silent operation
    -SIGNAL   send this signal instead of SIGKILL
    -u        display user IDs
    -v        verbose output
    -V        display version information
    -4        search IPv4 sockets only
    -6        search IPv6 sockets only
    -         reset options
例1: fuser -m /mnt/usb-flash -v 查指定的檔案系統,並顯示詳細資訊。
例2: fuser -m /mnt/usb-flash -v -i -k 殺掉正在使用指定檔案系統的程序,並顯示詳細資訊。



2010年3月11日 星期四

ntop 3.3.10 on CentOS 5.4

前言
原先我裝的是 ntop-3.3.9-7.el5.i386.rpm ,但是這個版本啟動時就出現無法開啟 GeoIP 檔案的問題,後來在設定 ntop.conf 又遇到當使用 --known-subnets 參數時,ntop 就會啟動失敗。沒有 --known-subnets 功能,其他內部網段跟 Internet 的資訊混在一起,這點我的環境實在不方便。而且不定時就 crash ,就算換其他版本還是一樣。問了 Google 大神,祂給了許多不確定的答案,哎......
在眾多答案之中唯一公認較好的方式:還是自己 make 。好吧,那就來吧!


環境
OS:CentOS 5.4
Kernel: 2.6.26.10(自行編釋)
eth1: (Internet)
eth0: 192.168.10.0/24 ,透過其它 router 會有 192.168.0.0/16 的網段


安裝 CentOS 5 已具備的 rpm 套件: zlib zlib-devel libtool libtool-ltdl automake autoconf libpcap libevent gdbm m4 openssl openssl-devel
# yum -y install zlib zlib-devel libtool libtool-ltdl automake autoconf libpcap libpcap-devel libevent gdbm gdbm-devel m4 openssl openssl-devel


安裝其他 rpm 套件: rrdtool rrdtool-devel
i386:
# wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/rrdtool-1.2.27-3.el5.i386.rpm
# wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/i386/rrdtool-devel-1.2.27-3.el5.i386.rpm
x86_64:
# wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/x86_64/rrdtool-1.2.27-3.el5.x86_64.rpm
# wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/5/x86_64/rrdtool-devel-1.2.27-3.el5.x86_64.rpm
# rpm -Uvh rrdtool-1.2.27-3.el5.x86_64.rpm rrdtool-devel-1.2.27-3.el5.x86_64.rpm


編譯及安裝 ntop-3.3.10
# wget http://downloads.sourceforge.net/project/ntop/ntop/ntop-3.3.10/ntop-3.3.10.tar.gz?use_mirror=ncu
# tar xzf ntop-3.3.10.tar.gz
# cd ntop-3.3.10/
# ./autogen.sh
出現以下錯誤訊息:
Error! You need to have libevent 1.4.X or better.
# rpm -qa | grep libevent
libevent-1.1a-3.2.1
查一下CentOS5.4 的 libevent 的版本是 1.1a ,其他的 rpm 也只到 1.3,所以只好自行 make 。


編譯及安裝 libevent-1.4.13-stable.tar.gz
# wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz
# tar xzf libevent-1.4.13-stable.tar.gz
# cd libevent-1.4.13-stable/
# ./configure
# make
# make install
libevent 會裝至下列目錄:
/usr/local/lib
/usr/local/include
/usr/local/share/man/man3


裝好 libevent-1.4.13-stable,再做一次!
# ./autogen.sh
如果 TCP 80 port 網路不通時,就要自行下載以下四個檔案,放在 ntop-3.3.10/
http://www.lua.org/ftp/lua-5.1.4.tar.gz
http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
http://www.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz


# ./autogen.sh
出現以下錯誤訊息:
configure: error: cannot find macro directory `m4'
建立 m4 目錄後,再做一次!
# mkdir m4
# ./autogen.sh

終於看到令人感動的訊息:
.... autogen.sh done
just type make to compile ntop



# make
# make install


建立帳號 ntop(uid:105) 及群組 ntop(gid:105) ,uid gid 自行決定
# echo 'ntop:x:105:105:ntop:/usr/local/var/ntop:/sbin/nologin' >> /etc/passwd
# echo 'ntop:x:105:' >> /etc/group


建立及設定 /usr/local/etc/ntop.conf
# vi /usr/local/etc/ntop.conf


--user ntop
--db-file-path /usr/local/var/ntop
--interface eth0
-4
-x 16384
-X 65536
--trace-level 3
--http-server 3000
--disable-schedyield
--skip-version-check=yes
--local-subnets 192.168.0.0/16
--known-subnets 192.168.0.0/16

註:ntop 會自動設定 eth0 上的網段,以我的環境為例:我的 eth0 是 192.168.10.0/24 ,在 ntop.conf 就不用特別定義 192.168.10.0/24 ,但因為我的 eth0 透過其它 router 會有 192.168.0.0/16 上的 host ,為了分類上的方便才使用 --local-subnets 及 --known-subnets 來定義 192.168.0.0/16 。


目錄建立與權限設定
# mkdir /usr/local/var/ntop/rrd
# chmod 700 /usr/local/var/ntop/rrd
# chown -R ntop:ntop /usr/local/share/ntop /usr/local/etc/ntop /usr/local/var/ntop/rrd


建立 admin 密碼
# ntop @/usr/local/etc/ntop.conf --set-admin-password=<密碼>


建立 ntop 為 Daemon Service
# vi /etc/rc.d/init.d/ntop


#!/bin/bash

# Source function library.
. /etc/rc.d/init.d/functions

# Path to the ntop program
prog=ntop
ntop=/usr/local/bin/$prog
pidfile=/var/run/$prog.pid
config=/usr/local/etc/$prog.conf

start() {
echo -n $"Starting $prog: "

[ -x $ntop ] || exit 1
[ -r "$config" ] || exit 6
if [ ! -r "/usr/local/var/$prog/${prog}_pw.db" ]; then
echo "service not configured, run $prog manually"
exit 6
fi

# ntop has string errors in locales other than "C"
LANG=C daemon "$ntop @$config --daemon > /dev/null"
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $pidfile $ntop
RETVAL="$?"
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $pidfile
}
reload() {
echo -n $"Reloading $prog: "
killproc $ntop -HUP
RETVAL=$?
echo
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $ntop
RETVAL=$?
;;
restart)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f $pidfile ] ; then
stop
start
fi
RETVAL=$?
;;
reload)
reload
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status}"
RETVAL=3
esac

exit $RETVAL


註:此 script 取自 ntop-3.3.9-7.el5.i386.rpm ,我修改路徑而已。

# chmod 755 /etc/rc.d/init.d/ntop
# chown root:root /etc/rc.d/init.d/ntop
# chkconfig --add ntop
# chkconfig ntop on
# service ntop start


ntop 會安裝至下列目錄:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/man/man8
/usr/local/share/ntop
/usr/local/var/ntop



參考資料:
http://forum.icst.org.tw/phpbb/viewtopic.php?f=24&t=14843

2010年2月4日 星期四

l7-filter on CentOS-5.4



流程
1. 把 l7 編進 Kernel 的 netfilter 裡
2. 把 l7 編進 iptables
3. 安裝 l7 分析規則庫




環境
CentOS release 5.4 (Final)
Kernel 2.6.18-164.el5 smp i386
iptables v1.3.5




套件




編譯核心
tar xjf linux-2.6.28.10.tar.bz2
tar xzf netfilter-layer7-v2.22.tar.gz
cd linux-2.6.28.10/

patch kernel
patch -p1 < ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch


設定核心
複製目前運行的核心設定檔
cp /boot/config-2.6.18-164.el5 .config
make menuconfig





Networking support
-> Networking options
[*] Network packet filtering framework (Netfilter)


Networking support
-> Networking options
-> Network packet filtering framework (Netfilter)
-> Core Netfilter Configuration
<*> Netfilter connection tracking support
[*] Connection tracking flow accounting
[*] Connection mark tracking support
[*] Connection tracking security mark support
[*] Connection tracking events
<M> DCCP protocol connection tracking support (EXPERIMENTAL)
<M> SCTP protocol connection tracking support (EXPERIMENTAL)
<M> UDP-Lite protocol connection tracking support
<M> Amanda backup protocol support
<M> FTP protocol support
<M> H.323 protocol support
<M> IRC protocol support
<M> NetBIOS name service protocol support
<M> PPtP protocol support
<M> SANE protocol support (EXPERIMENTAL)
<M> SIP protocol support
<M> TFTP protocol support
<M> Connection tracking netlink interface
<M> Transparent proxying support (EXPERIMENTAL)
:
:
:
{*} Netfilter Xtables support (required for ip_tables)
:
:
:
<M> "layer7" match support
[ ] Layer 7 debugging output
沒有需要不要選,否則 console 及 /var/log/messages 會一直出現訊息
:
:
:
<M> "u32" match support
最好把所有的項目都選起來



Networking support
-> Networking options
-> Network packet filtering framework (Netfilter)
-> IP: Netfilter Configuration
<M> IPv4 connection tracking support (required for NAT)
[*] proc/sysctl compatibility with old connection tracking



Networking support
-> Networking options
-> Network packet filtering framework (Netfilter)
-> IP: Netfilter Configuration
<M> IP tables support (required for filtering/masq/NAT)
:
:
:
<M> Full NAT
<M> MASQUERADE target support
<M> NETMAP target support
<M> REDIRECT target support
<M> Basic SNMP-ALG support
:
:
:
<M> Security table


最好把所有的項目都選起來






編譯與安裝
make
make modules_install
make install


修改開機選單
vi /boot/grub/grub.conf

default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.28.10 include l7-filter)
root (hd0,0)
kernel /boot/vmlinuz-2.6.28.10 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.28.10.img




重新開機
init 6

重新開機後出現:
insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists

原因是開機時重覆載入 dm-region-hash.ko 模組,並沒有影響,如果覺得礙眼,可以參考以下作法,將它修正:

解開 initrd-2.6.28.10.img
# cd /tmp
# mkdir initrd
# cd initrd
# cp /boot/initrd-2.6.28.10.img /tmp
# zcat ../initrd-2.6.28.10.img | cpio -i

編輯 init,找到重覆載入dm-region-hash.ko 的四行 script,並刪除其中的一組,只留下一組(二行)就好
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko

壓縮 initrd-2.6.28.10.img
# find . | cpio -c -o > /boot/initrd-2.6.28.10
# cd ..
# gzip -9 < nitrd-2.6.28.10 > initrd-2.6.28.10.img
# mv /boot/initrd-2.6.28.10.img /boot/initrd-2.6.28.10.img.bak
# mv initrd-2.6.28.10.img /boot
# chmod 600 /boot/initrd-2.6.28.10.img

再重新開機一次,看看訊息是否消失
# init 6





編譯 iptables

tar xjf iptables-1.4.6.tar.bz2
cp netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/* iptables-1.4.6/extensions/
cd iptables-1.4.6/

./configure --with-ksource=/usr/src/kernels/linux-2.6.28.10
make
make install
cd ../
rm -rf iptables-1.4.6/
/usr/local/sbin/iptables -V
確定編譯及安裝完成。


修改 iptables link,否則採 daemon 方式啟動時會失敗,因為 /etc/rc.d/init.d/iptables 這支script 的路徑設定因素,使用到原來的 iptable 版本 :
mv /sbin/iptables /sbin/iptables.orig
ln -s /usr/local/sbin/iptables /sbin/iptables

mv /sbin/iptables-restore /sbin/iptables-restore.orig
ln -s /usr/local/sbin/iptables-restore /sbin/iptables-restore

mv /sbin/iptables-save /sbin/iptables-save.orig
ln -s /usr/local/sbin/iptables-save /sbin/iptables-save

mv /sbin/ip6tables /sbin/ip6tables.orig
ln -s /usr/local/sbin/iptables /sbin/iptables

mv /sbin/ip6tables-restore /sbin/ip6tables-restore.orig
ln -s /usr/local/sbin/ip6tables-restore /sbin/ip6tables-restore


mv /sbin/ip6tables-save /sbin/ip6tables-save.orig
ln -s /usr/local/sbin/ip6tables-save /sbin/ip6tables-save


iptables -V
確定修改完成。







安裝分析規則庫

tar xzf l7-protocols-2009-05-28.tar.gz
cd l7-protocols-2009-05-28/
make install
cd ../
rm -rf l7-protocols-2009-05-28/


測試
iptables -t mangle -A PREROUTING -m layer7 --l7proto http -j DROP