FB_Plugin

2007年3月20日 星期二

[工作]安裝iptables extension

這次的計畫會需要當收到packet時
將此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

2.下載iptables source rpm
自行去找srpm fedora core 5上的是1.3.5版

3.下載patch-o-matic

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 安裝實錄

1 則留言:

  1. 恩 在/usr/src/linux/net/ipv6/netfilters/ip6t_ROUTE.c
    裡面的273行少一個 ","
    會造成make kernel失敗喔
    若有include ROUTE module後
    重編kernel失敗 要注意一下這個

    回覆刪除