將此packet在底層複製一份送往兩個不同的destination
而不是收上application layer在複製(會太慢)
我試著根據這項需求去找linux下有沒有這種功能
最後在iptables的extension中發現了一個可能解決這個問題的東西
patch-o-matic這個東西包含了netfilter的許多patch模組
其中的ROUTE option似乎可以讓你做一些route的特別改變
ROUTE target options: | |
--oif ifname | Send the packet out using `ifname' network interface. |
--iif ifname | Change the packet's incoming interface to `ifname'. |
--gw ip | Route the packet via this gateway. |
--continue | Route the packet and continue traversing the rules. |
--tee | Route a copy of the packet, but continue traversing the rules with the original packet, undisturbed. |
上面的--tee這個option更是有可能符合我的需要
不幸的 要安裝patch-o-matic的各項模組 都必須要重編kernel
以下列一下我的安裝過程 也當作是備忘錄 :P
1.下載kernel source與處理
我是用fedora core 5灌的 所以先去下載他的kernel source
- wget ftp://ftp.isu.edu.tw/pub/Linux/Fedora/linux/core/5/source/SRPMS/kernel-2.6.15-1.2054_FC5.src.rpm
- rpm -ivh kernel-2.6.15-1.2054_FC5.src.rpm
- cd /usr/src
- tar -jxf ./redhat/SOURCES/linux-2.6.15.tar.bz2
- ln -s linux-2.6.15 linux
2.下載iptables source rpm
自行去找srpm fedora core 5上的是1.3.5版
3.下載patch-o-matic
- cd /usr/local/src/
- wget ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20070313.tar.bz2
- tar -jxf patch-o-matic-ng-20070313.tar.bz2
4.patch kernel source & iptables source:
- cd patch-o-matic-ng-20070313
- KERNEL_DIR=/usr/src/linux IPTABLES_DIR=/usr/local/src/iptables-1.3.5 ./runme route
這邊因為我只需要裝route模組 所以只在./runme後面接route
也可以接base,extra等大項 詳細就要去patch-o-matic的網頁查看你要什麼
5.重編、安裝kernel
這個步驟要很久 先去睡個覺吧..Orz
- cd /usr/src/linux
- make oldconfig或make menuconfig 其中要把剛剛新增的ROUTE module設為(m)
- make
- make modules_install
- make install
6.重新編譯、安裝 iptables:
- cd /usr/local/src/iptables-1.3.5/
- chmod 777 ./extensions/.*
- make KERNEL_DIR=/usr/src/linux
- make install KERNEL_DIR=/usr/src/linux
- make install-devel
7.放上新iptables執行檔and重開機
- cd /sbin
- mv iptables iptables.old
- ln -s /usr/local/sbin/iptables iptables
- chkconfig iptables on
- vi /boot/grub/menu.lst
- reboot
以上是我的安裝步驟 其實我實驗了好幾次 每次步驟都差不多
但是前幾次都失敗 在執行ROUTE module的時候會有error訊息
所以我也還不太懂為什麼 哀哀
還要加油
參考資料
Jamyy's Weblog-Netfilter Extensions: Patch-O-Matic
Jamyy's Weblog-L7-filter 安裝實錄
恩 在/usr/src/linux/net/ipv6/netfilters/ip6t_ROUTE.c
回覆刪除裡面的273行少一個 ","
會造成make kernel失敗喔
若有include ROUTE module後
重編kernel失敗 要注意一下這個