iptables -t nat -vnL是什麼命令?
用詳細方式列出 nat 表所有鏈的所有規則,只顯示 IP 地址和埠號
iptables -L
粗略列出 filter 表所有鏈及所有規則
iptables -t nat -vxnL PREROUTING
用詳細方式列出 nat 表 PREROUTING 鏈的所有規則以及詳細數字,不反解
iptables -t nat -F PREROUTING
-F: FLASH,清空規則鏈的(注意每個鏈的管理許可權)
PREROUTING (路由前)
-t nat:顯示所有的關卡的信息
iptables -t nat -F 清空nat表的所有鏈
iptables -t nat -F PREROUTING 清空nat表PREROUTING鏈
iptables -t nat -vnL | grep SNAT | awk -F : {'print $2'} 得到snat ip
iptables -t nat -D POSTROUTING -o eth1 -j SNAT --to ${snat_ip} 刪除所有源地址轉換表項
iptables -t nat -A PREROUTING -i %{G_HOST_IF0_0_0} -p tcp --dport %{G_TESTBED_SELENIUM_DPORT} -j DNAT --to %{G_PROD_IP_BR0_0_0}:80 添加源轉換表項
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to ${ip} 添加目的轉換表項
iptables -t nat -vnL 察看定義規則的詳細信息
./configure --host=arm-linux
arm-linux 代表你安裝的cross compiler名,取前半部分,如 arm-gnuabi-linux-gcc 你就舔 arm-gnuabi-linux
./configure 後還可以跟很多參數選項,用於包含和指定依賴庫的位置等等。你用 ./configure --help看看就行了。
Ⅲ 如何查看linux iptables dnat轉換表項
根據前面的hook函數掛載圖我們可以清晰的知道,對於那些需要被本機轉發的數據包,注冊在NF_IP_PRE_ROUTING點的ip_nat_in ()函數完成對其目的地址轉換的操作,注冊在NF_IP_POST_ROUTING點的ip_nat_out()函數完成源地址轉換任務。如果在編譯Linux內核源碼時打開了CONFIG_IP_NF_NAT_LOCAL選項,則注冊在NF_IP_LOCAL_OUT和NF_IP_LOCAL_IN點的hook函數就會工作,最常見的用法的是用NF_IP_LOCAL_OUT點的ip_nat_local_fn()函數來改變本機發出報文的目的地址。至於注冊在NF_IP_LOCAL_IN點的ip_nat_fn()函數一般不會起作用,只是當數據包到達該HOOK點後會例行被調用一下。因為,NAT的所有規則只可能被配置到nat表的PREROUTING、POSTROUTING和OUTPUT三個點
Ⅳ linux運維之iptables的一些操作(參考大神的)
1.安裝iptables管理命令
2.載入防火牆的內核模塊
3.查看已載入的模塊
4.啟動防火牆
首先停止firewalld
開啟iptables
1.查看防火牆規則
2.清除防火牆規則
3.添加防火牆規則
4.網路連接狀態
5.刪除某個規則
1.禁止某個埠訪問
2.規則解釋:
3.禁止除跳板機以外的IP訪問
4.匹配埠范圍
5. 匹配ICMP類型
6.一些操作
1、封掉10.0.0.7
2、讓10.0.0.7和SSH客戶端(10.0.0.1)伺服器可以Ping,其它的不能Ping
3、封掉3306埠
1.從上往下依次匹配
2.一但匹配上,就不在往下匹配了
3.默認規則,默認的情況,默認規則是放行所有
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables A INPUT -p tcp -m state --dport 22 -j DROP
禁止一個數據包:
tcp協議
訪問的埠是22
禁止源地址是10.0.0.7的主機訪問22埠
禁止源地址是10.0.0.7的主機訪問任何埠
禁止源地址是10.0.0.8的主機訪問80埠
禁止除了10.0.0.7以外的地址訪問80埠
2條規則沖突,會以誰先誰為准
禁止10.0.0.7訪問22和80埠
禁止10.0.0.7訪問22到100之間的所有埠
禁止所有主機ping
放行10.0.0.7可以ping
只允許10.0.0.7可以ping
等同於上一條,優化版,只要不是10.0.0.7就不允許ping
優先順序:
匹配頻次最高的條件放前面
Ⅳ 如何編譯linuxiptables
默認應該是安裝的啊 rpm -qa|grep iptables 察看一下 如果沒裝的話到安裝盤里找相應的rpm包安裝就是了
Ⅵ LInux iptables 屏蔽設置
1.修改SSH配置文件:/etc/ssh/sshd_config #找到Port 22,這里是標識默認使用22埠,修改為:
Port 22
Port 1234
/etc/init.d/sshd restart
#這樣SSH埠將同時工作在22、1234上
查看防火牆規則
1、iptables -nvL
2、more /etc/sysconfig/iptables
2.添加防火牆規則
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 1234 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/rc.d/init.d/iptables restart
然後使用SSH工具 測試 你所設置的埠是否能正常使用
如果能正常使用返回到第一步,刪除原來的22埠,以及修改防火牆配置文件
之所以先設置成兩個埠,測試成功後再關閉一個埠,是為了方式在修改的過程中,萬一出現掉線、斷網、誤操作等未知情況時候,還能通過另外一個埠連接上去調試以免發生連接不上的狀況。
開啟自動啟動:chkconfig iptables on
開啟不自動啟動:chkconfig iptables off
附錄:
設定預設規則,INPUT鏈默認拒絕,OUTPUT鏈默認接受,FORWARD鏈默認拒絕
iptables -F #清除預設表filter中的所有規則鏈的規則
iptables -X #清除預設表filter中使用者自定鏈中的規則
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -L -n --line #按行數顯示防火牆規則
iptables -D INPUT 1 #刪除INPUT表第一條
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #來源、目的為127.0.0.1都接受,這條放最後就可以了
1、安裝iptables防火牆
如果沒有安裝iptables需要先安裝,CentOS執行:
yum install iptables
Debian/Ubuntu執行:
apt-get install iptables
2、清除已有iptables規則
iptables -F
iptables -X
iptables -Z
3、開放指定的埠
#允許本地回環介面(即運行本機訪問本機)
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允許已建立的或相關連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允許所有本機向外的訪問
iptables -A OUTPUT -j ACCEPT
# 允許訪問22埠
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允許訪問80埠
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允許FTP服務的21和20埠
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他埠的話,規則也類似,稍微修改上述語句就行
#禁止其他未允許的規則訪問
iptables -A INPUT -j REJECT (注意:如果22埠未加入允許規則,SSH鏈接會直接斷開。)
iptables -A FORWARD -j REJECT
4、屏蔽IP
#如果只是想屏蔽IP的話「3、開放指定的埠」可以直接跳過。
#屏蔽單個IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整個段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即從123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
5、查看已添加的iptables規則
iptables -L -n
v:顯示詳細信息,包括每條規則的匹配包數量和匹配位元組數
x:在 v 的基礎上,禁止自動單位換算(K、M) vps偵探
n:只顯示IP地址和埠號,不將ip解析為域名
6、刪除已添加的iptables規則
將所有iptables以序號標記顯示,執行:
iptables -L -n --line-numbers
比如要刪除INPUT里序號為8的規則,執行:
iptables -D INPUT 8
7、iptables的開機啟動及規則保存
CentOS上可能會存在安裝好iptables後,iptables並不開機自啟動,可以執行一下:
chkconfig --level 345 iptables on
開啟自動啟動:chkconfig iptables on
開啟不自動啟動:chkconfig iptables off
將其加入開機啟動。
CentOS上可以執行:
service iptables save
/etc/rc.d/init.d/iptables save
/etc/rc.d/init.d/iptables restart
保存規則。
另外更需要注意的是Debian/Ubuntu上iptables是不會保存規則的。
需要按如下步驟進行,讓網卡關閉是保存iptables規則,啟動時載入iptables規則:
創建/etc/network/if-post-down.d/iptables 文件,添加如下內容:
#!/bin/bash
iptables-save > /etc/iptables.rules
執行:chmod +x /etc/network/if-post-down.d/iptables 添加執行許可權。
創建/etc/network/if-pre-up.d/iptables 文件,添加如下內容:
#!/bin/bash
iptables-restore < /etc/iptables.rules
執行:chmod +x /etc/network/if-pre-up.d/iptables 添加執行許可權。
關於更多的iptables的使用方法可以執行:iptables --help或網上搜索一下iptables參數的說明。
註:每次服務在停止之前會自動將現有的規則保存
在 /etc/sysconfig/iptables 這個文件中去.
Ⅶ iptables詳解
netfilter/iptables (簡稱為iptables)組成Linux平台下的包過濾防火牆,與大多數的Linux軟體一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網路地址轉換(NAT)等功能。
iptables和netfilter的關系:
這是第一個要說的地方,Iptables和netfilter的關系是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道 netfilter。其實iptables只是Linux防火牆的管理工具而已,位於/sbin/iptables。真正實現防火牆功能的是 netfilter,它是Linux內核中實現包過濾的內部結構。
規則 (rules)其實就是網路管理員預定義的條件,規則一般的定義為「如果數據包頭符合這樣的條件,就這樣處理這個數據包」。規則存儲在內核空間的信息包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的 主要工作就是添加、修改和刪除這些規則。
① 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去。
② 如果數據包就是進入本機的,它就會沿著圖向下移動,到達INPUT鏈。數據包到了INPUT鏈後,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包會經過OUTPUT鏈,然後到達POSTROUTING鏈輸出。
③ 如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示向右移動,經過FORWARD鏈,然後到達POSTROUTING鏈輸出。
過程圖如下:
Iptables採用「表」和「鏈」的分層結構。
表 (tables)提供特定的功能,iptables內置了4個表,即filter表、nat表、mangle表和raw表,分別用於實現包過濾,網路地址轉換、包重構(修改)和數據跟蹤處理。
(1)filter表——三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾數據包 內核模塊:iptables_filter.
(2)Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用於網路地址轉換(IP、埠) 內核模塊:iptable_nat
(3)Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改數據包的服務類型、TTL、並且可以配置路由實現QOS內核模塊:iptable_mangle(別看這個表這么麻煩,咱們設置策略時幾乎都不會用到它)
(4)Raw表——兩個鏈:OUTPUT、PREROUTING
作用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_raw
Raw——mangle——nat——filter
鏈 (chains)是數據包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一 條或數條規則。當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據 該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定 義的默認策略來處理數據包。
(1)INPUT——進來的數據包應用此規則鏈中的策略
(2)OUTPUT——外出的數據包應用此規則鏈中的策略
(3)FORWARD——轉發數據包時應用此規則鏈中的策略
(4)PREROUTING——對數據包作路由選擇前應用此鏈中的規則
(記住!所有的數據包進來的時侯都先由這個鏈處理)
(5)POSTROUTING——對數據包作路由選擇後應用此鏈中的規則(所有的數據包出來的時侯都先由這個鏈處理)
從外界到達防火牆的數據包,先被PREROUTING規則鏈處理(是否修改數據包地址等),之後會進行路由選擇(判斷該數據包應該發往何處),如果數據包 的目標主機是防火牆本機(比如說Internet用戶訪問防火牆主機中的web伺服器的數據包),那麼內核將其傳給INPUT鏈進行處理(決定是否允許通 過等),通過以後再交給系統上層的應用程序(比如Apache伺服器)進行響應。
來自外界的數據包到達防火牆後,首先被PREROUTING規則鏈處理,之後會進行路由選擇,如果數據包的目標地址是其它外部地址(比如區域網用戶通過網 關訪問QQ站點的數據包),則內核將其傳遞給FORWARD鏈進行處理(是否轉發或攔截),然後再交給POSTROUTING規則鏈(是否修改數據包的地 址等)進行處理。
防火牆本機向外部地址發送的數據包(比如在防火牆主機中測試公網DNS伺服器時),首先被OUTPUT規則鏈處理,之後進行路由選擇,然後傳遞給POSTROUTING規則鏈(是否修改數據包的地址等)進行處理。
iptables-save把規則保存到文件中,再由目錄rc.d下的腳本(/etc/rc.d/init.d/iptables)自動裝載
使用命令iptables-save來保存規則。一般用
iptables-save > /etc/sysconfig/iptables
生成保存規則的文件 /etc/sysconfig/iptables,
也可以用
service iptables save
它能把規則自動保存在/etc/sysconfig/iptables中。
當計算機啟動時,rc.d下的腳本將用命令iptables-restore調用這個文件,從而就自動恢復了規則。
刪除INPUT鏈的第一條規則:
1.拒絕進入防火牆的所有ICMP協議數據包
2.允許防火牆轉發除ICMP協議以外的所有數據包
說明:使用「!」可以將條件取反。
3.拒絕轉發來自192.168.1.10主機的數據,允許轉發來自192.168.0.0/24網段的數據
說明:注意要把拒絕的放在前面不然就不起作用了啊。
4.丟棄從外網介面(eth1)進入防火牆本機的源地址為私網地址的數據包
5.封堵網段(192.168.1.0/24),兩小時後解封。
說明:這個策略咱們藉助crond計劃任務來完成,就再好不過了。
[1] Stopped at now 2 hours
6.只允許管理員從202.13.0.0/16網段使用SSH遠程登錄防火牆主機。
說明:這個用法比較適合對設備進行遠程管理時使用,比如位於分公司中的SQL伺服器需要被總公司的管理員管理時。
7.允許本機開放從TCP埠20-1024提供的應用服務。
8.允許轉發來自192.168.0.0/24區域網段的DNS解析請求數據包。
9.禁止其他主機ping防火牆主機,但是允許從防火牆上ping其他主機
10.禁止轉發來自MAC地址為00:0C:29:27:55:3F的和主機的數據包
說明:iptables中使用「-m 模塊關鍵字」的形式調用顯示匹配。咱們這里用「-m mac –mac-source」來表示數據包的源MAC地址。
11.允許防火牆本機對外開放TCP埠20、21、25、110以及被動模式FTP埠1250-1280
說明:這里用「-m multiport –dport」來指定目的埠及范圍
12.禁止轉發源IP地址為192.168.1.20-192.168.1.99的TCP數據包。
說明:此處用「-m –iprange –src-range」指定IP范圍。
13.禁止轉發與正常TCP連接無關的非—syn請求數據包。
說明:「-m state」表示數據包的連接狀態,「NEW」表示與任何連接無關的,新的嘛!
14.拒絕訪問防火牆的新數據包,但允許響應連接或與已有連接相關的數據包
說明:「ESTABLISHED」表示已經響應請求或者已經建立連接的數據包,「RELATED」表示與已建立的連接有相關性的,比如FTP數據連接等。
15.只開放本機的web服務(80)、FTP(20、21、20450-20480),放行外部主機發住伺服器其它埠的應答數據包,將其他入站數據包均予以丟棄處理。
Ⅷ 淺談iptables
iptables是linux系統下用來做防火牆的二進制文件(linux上位於/sbin/iptables,android中位於/system/bin/iptables),底層依賴於內核的netfilter模塊,用來完成封包過濾、封包重定向和網路地址轉換(NAT)等功能(在android上需要root使用)。
舉個例子來簡單看看iptables命令的基本用法。
意思是在nat轉發表的OUTPUT輸出鏈中增加這樣一條規則:倘若OUTPUT輸出鏈攔到了tcp請求,則將其重定向到本地的8123埠。
可以看到iptables中有 表 、 鏈 和 規則 的概念,那麼先通過iptables傳輸數據包的過程來簡單了解下表和鏈是什麼以及他們之間的關系。
可以看到 鏈 就是對數據包傳輸路徑的一種抽象,一個數據包根據其具體場景以固定的順序依次經過PREROUTING、INPUT等各個鏈,在經過各個鏈時,又有不同的表在監聽這個鏈,而nat、filter等 表 中有包含一系列的 規則 ,當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則。
值得注意的是,
至此我們了解了表、鏈和規則是什麼以及他們之間的關系,下面來具體看下 iptables命令的基本用法 。
更多關於各command、parameter的具體含義以及用法可以參考 https://wangchujiang.com/linux-command/c/iptables.html
iptables對網路數據包做過濾或攔截時其維度只能局限於網路數據包收發的ip地址、埠號、網卡、tcp/udp協議,因此可以推測iptables最終是在ip層對網路數據包做的攔截。
那iptables基於netfilter具體是怎麼做到在各個鏈上對數據包做攔截的呢?
/net/ipv4/ip_output.c
/net/ipv4/ip_input.c
/net/ipv4/ip_forward.c
可以看到內核在每一個數據轉發的關鍵節點都調用了NF_HOOK這個宏,來看下NF_HOOK這個宏幹了啥
關於NF_HOOK相關具體邏輯可參見 https://sites.google.com/site/ibms/network-security-development/netfilter%E8%AE%BE%E8%AE%A1%E4%B8%8E%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90
Ⅸ linux下查看iptables開放了哪些埠的命令是什麼
打開指定埠:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT #80為指定埠
將更改進行保存:/etc/rc.d/init.d/iptables save
直接在/etc/sysconfig/iptables中增加一行:-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
關閉埠:iptables -A INPUT -p tcp --dport 111 -j DROP
開發不連續埠(包括單個):iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
Ⅹ 怎麼給3.4.11的linux內核 添加iptables string模塊
(一).處理內核源碼.
1. [root@kindgeorge src]# cd /usr/src/linux-2.4
2.
[root@kindgeorge linux-2.4]# vi Makefile,
VERSION = 2
PATCHLEVEL =
4
SUBLEVEL = 20
EXTRAVERSION = -8custom
將「EXTRAVERSION =
-8custom」改為「EXTRAVERSION = -8」
即:
VERSION = 2
PATCHLEVEL =
4
SUBLEVEL = 20
EXTRAVERSION = -8
為何要修改呢?因為不同版本的內容是不可以使用的,當不修改時,則變成這個版本(2.4.20-8custom)了,不同時是這樣出錯的:
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o:
kernel-mole version mismatch (版本錯誤)
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o was compiled for
kernel version 2.4.20-8custom
while this kernel is version
2.4.20-8.
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o:
insmod /lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o
failed
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod
ipt_iprange failed
3. [root@kindgeorge linux-2.4]# make mrproper
4.
[root@kindgeorge linux-2.4]# make oldconfig
'make oldconfig' - 採用以前的
.config 文件 (編譯時十分有用)
技巧:在make
menuconfig時,我們面對眾多的選項常常不知道該如何選擇,此時可以把安裝時的配置文件到/usr/src/linux-2.4中:cp
/boot/config-2.4.* /usr/src/linux-2.4/.config,再用make
menuconfig編譯,它會讀取.config中原來的配置信息.
(二).給netfilter打補丁
解開tar xjvf
patch-o-matic-ng-20050331.tar.bz2
包後,進入該目錄,就會發現有很多目錄,其實每個目錄對應一個模塊.
我們可以這樣來選擇,根據不同貯倉庫submitted|pending|base|extra,例如:
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base
.
或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1
./runme extra
執行後,會測試是否已經應用和提示你是否應用該模塊,但這樣會遍歷所有模塊,有很多是用不著的,並且可能和系統版本有沖突,如果不管三七二十一全部選擇的話,一般都會在編譯和使用時出錯.所以推薦用cat
/模塊目錄名/info 和cat /模塊目錄名/help 看過後,認為適合自己,才選擇.
我是針對在上面看過後,有目的的一個一個的應用的,這樣做:
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string
執行後,會測試是否已經應用和提示你是否應用該模塊,按"y"應用.然後繼續下一個
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme
comment
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1
./runme connlimit
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme
time
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1
./runme iprange
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme
geoip
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1
./runme nth
KERNEL_DIR=/usr/src/linux-2.4
IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme
ipp2p
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1
./runme quota
上面全部完成後,
cd /usr/src/linux-2.4
make menuconfig,確認
Prompt for development and/or incomplete code/drivers要選中
然後進入Networking
options
再進入IP:Netfilter
Configuration,會看到增加很多模塊,每個新增的後面都會出現"NEW",把其想要的選中為模塊"M"
保存、退出,至此,給netfilter打補丁工作完成
(三).編譯netfilter模塊
1.這里只需要編譯netfilter,不需要編譯整個內核和模塊.這里我只需要ipv4的,ipv6我還沒用到,所以不管了
cd
/usr/src/linux-2.4
make dep
make moles
SUBDIRS=net/ipv4/netfilter
2.建立一個新目錄備份原來模塊,以防萬一:
mkdir
/usr/src/netfilter
cp /lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/*.o
/usr/src/netfilter/
3.應用新的模塊
cp -f
/usr/src/linux-2.4/net/ipv4/netfilter/*.o
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/
4.更新你的moles.dep
depmod
-a
當出現這個時,可以不用理會,因為ipchains, ipfwadm模塊都沒用,也可以把出錯的刪除.
depmod: ***
Unresolved symbols in
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipchains_core.o
depmod: ***
Unresolved symbols in
/lib/moles/2.4.20-8/kernel/net/ipv4/netfilter/ipfwadm_core.o
(四).編譯安裝新的iptables
解壓後有目錄iptables-1.3.1
cd
/usr/src/iptables-1.3.1
export KERNEL_DIR=/usr/src/linux-2.4
export
IPTABLES_DIR=/usr/src/iptables-1.3.1
make BINDIR=/sbin LIBDIR=/lib
MANDIR=/usr/share/man install