1. 程式人生 > >嵌入式 iptables靜態編譯與動態編譯

嵌入式 iptables靜態編譯與動態編譯

    Linux下支援netfilter機制的配置工具就是iptables,它也就相當與一個應用程式,可以對netfilter進行配置(包過濾規則,NAT等等)。所以要實現netfilter(iptables)就要從兩方面來著手:1)核心支援netfilter;2)使用者層的iptables配置命令。
1)        編譯核心,支援netfilter 
在宿主機上進入Linux核心目錄,配置所需的核心模組: 
cd /usr/src/linux 
make menuconfi 
iptables的移植 
Linux下支援netfilter機制的配置工具就是iptables,它也就相當與一個應用程式,可以對netfilter進行配置(包過濾規則,NAT等等)。所以要實現netfilter(iptables)就要從兩方面來著手:1)核心支援netfilter;2)使用者層的iptables配置命令。 

1)        編譯核心,支援netfilter 
在宿主機上進入Linux核心目錄,配置所需的核心模組: 
cd  /usr/src/linux 
make  menuconfig 
選中如下核心選項: 
General setup ---> 
[*] Sysctl support (在ROMFS檔案系統中/proc/sys/net/ipv4/出現ip_forward) 
Networking options ---> 
[*] Network packet filtering (replaces ipchains) 
IP: Netfilter Configuration --->(全部選擇即可) 
這樣在核心中就選擇支援了netfilter。接下來只需編譯並生成核心映像檔案並燒寫到嵌入式系統即可。如果燒寫後重起成功進入Linux,則說明新的支援netfiter的核心已經正常執行。(注意,這裡的核心選項只是一些支援netfilter/iptables的選項。這裡假設原有核心已支援嵌入式系統的相關硬體,並能在嵌入式平臺上執行)。 

2)        編譯生成iptables命令 
iptables工具包可以免費從網上獲得。下載iptables工具包後,進入下載目錄,進行編譯生成可執行檔案,編譯方法具體可以參考iptables目錄下的INSTALL檔案: 
cd /root/iptables 
make KERNEL_DIR = /usr/src/linux(指定核心目錄) 
make NO.SHARED_LIBS=1(靜態連結編譯生成可執行檔案) 
把生成的iptables可執行檔案copy到ramdisk再下載到嵌入式系統中就可以執行。 好了,重新啟動板子後,就可以用iptables這個命令了。
3)        動態編譯iptables 

如果覺得靜態編譯出來的iptables太大了(717K),可以採用動態庫編譯模式。 
        配置核心 
[*] Network packet filtering (replaces ipchains) 
IP: Netfilter Configuration --->(全部選為模組即可) 
編譯好核心後,製作核心映象,重啟裝置,載入新的核心。 
        模組載入 
編譯好核心後,我們需要的庫檔案在net/ipv4/netfilter裡面,包括: 
ip_tables.ko             
iptable_filter.ko         
ip_conntrack.ko         
iptable_nat.ko           
ipt_conntrack.ko         
iptable_raw.ko           
ipt_state.ko             
…. 
等等,很多的模組。使用者可以根據自己的需要來進行新增不同的功能模組。將需要的模組放到裝置上,載入後才能執行iptables。因為模組之間有一定的依賴關係,所以新增模組要有一定的順序,ip_tables.ko必須首先新增。 
        新增動態庫 
在新的核心的基礎上還有對iptables進行重新編譯,這次是將iptables編譯成動態庫的形式,所以不需要make NO.SHARED_LIBS = 1這個命令選項了,直接make就可以了。編譯成功後在iptables/extension 目錄下有很多動態庫檔案也是必須要放到嵌入式裝置上的。 
libipt_tcp.so 
libipt_SNAT.so 
libipt_DNAT.so 
libipt_standard.so 
        … 
等等。同樣使用者要根據自己的需要來將動態庫拷貝到嵌入式裝置上/usr/local/lib/iptables/下面,這個路徑是iptables 執行時查詢庫檔案的預設路徑。如果不覺得麻煩的話,就這樣使用。要是想改路徑,可以修改原始碼。

相關推薦

嵌入式 iptables靜態編譯動態編譯

    Linux下支援netfilter機制的配置工具就是iptables,它也就相當與一個應用程式,可以對netfilter進行配置(包過濾規則,NAT等等)。所以要實現netfilter(iptables)就要從兩方面來著手:1)核心支援netfilter;2)使用者層的iptables配置命令。1) 

編譯小結(7)Automake編譯靜態動態

  具體記錄下,如何用Automake編譯靜態庫(.a)與動態庫(.so)的流程.   步驟其實都是一樣的,只有configure.in 與 Makefile.am 有區別。 一。靜態庫(.a)

Android:JNINDK(二)交叉編譯動態庫,靜態

  歡迎關注公眾號,第一時間獲取最新文章:   本篇目錄 一、前言 本篇主要以window開發環境為背景介紹一下NDK開發中需要掌握的交叉編譯等基礎知識,選window系統主要是照顧大多數讀者,mac ,linux作業系統基本是同樣適用的。 交叉編譯就是在A平臺編譯出可

靜態編譯動態編譯(lib和dll)

weibo docs p s 獎章 com 動態編譯 lan doc sin u2瓢剮JZP匪媳51http://www.docin.com/app/user/userinfo?userid=179185213 0宰9U拔7853E5噸渭3http://www.docin

(轉)靜態編譯動態編譯靜態連結庫,動態連結庫

1.定義 LIB檔案中包含函式程式碼本身,在編譯時直接將程式碼加入程式當中。稱為靜態連結庫static link library。 LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic link libr

Linux驅動靜態編譯動態編譯方法詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言靜態編譯動態編譯

文章目錄概述可執行檔案指令碼檔案編譯器初探庫檔案靜態編譯建立靜態庫動態編譯建立動態庫預處理編譯彙編連結結語 概述 在Linux系統中,應用程式表現為兩種檔案,一種是可執行檔案, 另一種是指令碼檔案。 可執行檔案 可執行檔案是計算機可以直接執行的程式,與windo

apache靜態編譯動態編譯

Apache擁有4層結構,從核心到外層的module。而外層的module可以用通過靜態和動態兩種方式與Apache共同工作。這也就引入下文的“動態”和“靜態”兩種編譯安裝方式: 靜態編譯:  編譯的時候,所有的模組自己編譯進 httpd 這個檔案中 ,啟動Apache的時

靜態編譯動態編譯區別

靜態函式庫 一般副檔名為(.a),這類的函式庫通常副檔名為libxxx.a 。 這類函式庫在編譯的時候會直接整合到程式中,所以利用靜態函式庫編譯成的檔案會比較大,這類函式庫最大的優點就是編譯成功的可執行檔案可以獨立執行,而不再需要向外部要求讀取函式哭的內容;但是從升級難易

靜態編譯動態編譯靜態連結庫,動態連結庫

1.定義 LIB檔案中包含函式程式碼本身,在編譯時直接將程式碼加入程式當中。稱為靜態連結庫static link library。 LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic li

Java靜態分派動態分派(二)

xiang oid main isp 準備 center 使用 name 編譯過程 方法調用並不等於方法執行,方法調用階段唯一的任務就是確定被調用方法的版本(即調用哪一個方法),暫時還不涉及方法內部的具體運行過程。 在程序運行時,進行方法調用是最普遍、最頻繁的操作,但是Cl

【深入Java虛擬機】之七:Javac編譯JIT編譯

p s ots 基本 關鍵字 目前 關註 script 和數 語言 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/18009455 編譯過程 不論是物理機還是虛擬機,大部分的程序代碼從開始編譯到最終轉化

Java靜態代理動態代理模式的實現

loader 兩個 如何 圖片 ide 相同 catch 規範 png 前言: 在現實生活中,考慮以下的場景:小王打算要去租房,他相中了一個房子,準備去找房東洽談相關事宜。但是房東他很忙,平時上班沒時間,總沒有時間見面,他也沒辦法。後來,房東想了一個辦法,他找到了一個

struts1——靜態ActionForm動態ActionForm

mpp fas yarn prop dsd nqa oar bnf npc 在struts1中,我們能夠使用ActionForm來獲取從client端提交上來的數據。並通過action配置中的name屬性。將某個ActionForm配置到某次請求應答的Act

靜態動態庫的簡單說明

外部程序 endif ldconfig 開始 director 有時 鏈接 現在 con   一.靜態庫和動態庫的簡單介紹   程序設計的模塊化是人們一直在追求的目標,因為當一個系統十分復雜的時候,將系統模塊化既可以並行開發,又可以增強程序的可用性,降低程序間的耦合度。在一

靜態分析動態分析

組織 整體 靜態分析 nbsp 驗證 分析 分開 關註 依靠 靜態分析關註系統的要素和組織(聯系);強調的是部分如何組成整體;著重於要素的局部聯系。 動態分析關於於系統的功能:前調的是要素與聯系如何組成鏈條,完成事務的處理。 動態分析依靠靜態分析支持; 靜態分析依靠動態

深入探討Linux靜態動態庫的詳解(轉)

share 分享 命名 one .com 過程 程序 簡單介紹 mage 2.生成動態庫並使用 linux下編譯時通過 -shared 參數可以生成動態庫(.so)文件,如下 庫從本質上來說是一種可執行代碼的二進制格式,可以被載入內存中執行。庫分靜態庫和動態庫兩種。

代理模式-靜態代理動態代理

應用 代碼 creat HR print tps 結果 inter OS 簡介 首先感謝沽泡學院 tom 老師 代理模式是一種結構型模式 代理模式就是代理對象幫被代理對象處理一些問題, 類似中介, 客戶只要結果, 中介怎麽搞是他的事兒, 他可能再處理過程中賺外快什麽的 代

Linux下靜態動態

Linux 靜態庫 動態庫 靜態庫 先說說我們為什麽需要庫?當有些代碼我們大量會在程序中使用比如(scanf,printf等)這些函數我們需要在程序中頻繁使用,於是我們就把這些代碼編譯為庫文件,在需要使用時我們直接鏈接即可。 定義: ?程序在編譯時把靜態庫的代碼鏈接到可執行程序中,在代碼運行時不再

靜態代理動態代理模式

png 代理 before ring program 直接 factor 設計模式 messaging 代理(Proxy)設計模式簡介: 提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操作,即擴展目標