Openwrt開發日誌 iptables的各個表

2021-08-04 15:57:02 字數 2302 閱讀 2246

mission 5

——iptable的控制

tool:

xshell; winscp; openwrt;newifi

reference:

《智慧型路由器開發指南》

procedure:

學完了uci api,其實我也不知道問什麼要學。這時候先總結一下之前的內容。

我已經掌握的了,或者說可以做到的事情,是在web頁面上建立乙個額外的介面,然後這些介面上的選項可以基於我得選擇自己設計,並且每個選項都能對應到乙個uci配置檔案中,修改配置檔案裡的值。

那下面如何實現在openwrt的介面上增加乙個新增黑名單的功能,允許使用者新增特定的ip位址清單,然後過濾掉來自和去向這個清單中的報文。

這個功能就要用到iptable這個自帶功能,所以開始學習書的12和13章,iptable防火牆和uci防火牆。

12.1 防火牆概述

firewall在計算機網路中,是在兩個或多個網路之間用於設定安全策略的乙個或多個系統的組合。防火牆起到隔離異常訪問的作用,僅允許可靠的流量通過,從而保護了家庭和企業內部網路資訊的安全。

linux防火牆通常包含iptable和netfilter兩部分。iptable是linux管理防火牆規則的命令列工具,處於使用者空間。netfilter執行報文過濾,處於linux核心空間。有時候也會用iptable來統稱linux防火牆。

iptables是乙個報文狀態檢測防火牆,這意味著防火牆內部儲存每乙個連線的資訊,並且可以將每乙個報文關聯到它所屬的連線。這個資訊非常有用,它用於自動開啟相應報文的傳輸路徑,因此在建立防火牆規則時,通常沒有必要建立相反方向的防火牆規則,防火牆將自動計算出這個規則。

12.2 iptables中的表

iptables是用c語言實現的,以gnu許可發布。它實際上包含兩部分,即netfilter和iptables。管理員通過iptables工具集和核心打通,將防火牆規則寫入核心中。核心netfilter執行報文過濾規則。iptables根據功能劃分不同的表來處理不同的邏輯功能,當前包含五個表,分別為filter、nat、mangle、raw和security。這裡先介紹了幾個表的功能,隨後將

12.2.1 filter(過濾表)

filter是iptables的預設表,主要用於過濾報文,在這裡根據報文的內容對報文進行丟棄或者接收。它包含有3個內建鏈。

n  input輸入鏈,處理目標位址為本機ip位址的報文。

n  output輸出鏈,處理本機ip地指產生的報文。

n  forward**鏈,處理經過本機路由的報文。

這樣每乙個ip報文只經過3個內建鏈中的乙個,便於進行資料報文匹配和處理。這裡是真正實現防火牆處理的地方。注意:

n  經過本機**的報文是forward鏈,不經過input和output鏈。

n  本機產生的報文經過output鏈不經過其他的。

n  去往主機的報文經過該主機的input鏈,其他的鏈不經過。

12.2.2 nat(網路位址轉換表)

nat用來完成源/目的位址和埠的轉換,當乙個報文在建立乙個新的連線時進入該錶。它也有3個內建規則鏈。

n  output:用於修改本機產生的並且在路由處理之前的報文。

n  postrouting:用於修改準備出去的報文的地方。

通過目的位址轉換,你可以將伺服器放在防火牆後面,並使用私有ip位址。一些協議通過nat轉換有困難(例如ftp或sip),連線跟蹤將開啟這些協議的資料/**流路徑。nat表不能用於報文過濾和報文修改,因為每乙個連線流僅有一次機會進入該表中的規則鏈。

網路位址轉換在路由功能前後都可能發生,源位址轉換是在資料報通過路由之後在postrouting規則鏈進行位址轉換。目的位址轉換是在路由之前,在prerouting規則鏈進行位址轉換。

12.2.3 mangle(修改表)

這個表主要用來進行報文修改,有5個內建規則鏈。

n  prerouting:針對到來的報文,在路由之前修改的地方。

n  forward:針對通過閘道器路由**的報文。

n  postrouting:將要傳送出去的報文的地方。

n  output:本機產生報文在路由之前修改的地方。

通常使用該錶進行報文修改,以便進行qos和策略路由(即解決網路擁堵反方案)。通常每乙個報文都進入該錶,但不使用它來過濾報文。

12.2.4 raw(原始表)

n  prerouting:到達本機的報文。

n  output:本機程序產生的報文。

這裡是能夠在連線跟蹤生效之前處理報文的地方,你可以標記符合某種條件的報文不被連線跟蹤處理。一般很少使用。此外,還有security表, 這個表用於安全linux的防火牆規則,是iptables最近的新增表,在實際專案中還很少用到。(2015)

OpenWrt 系統日誌之logread

剛開始接觸openwrt的時候,根本不知道如何除錯各個程序,我之前從事ip camera開發可能也侷限了我的知識面,認為系統就改是那個樣子。其實不然,就像linux發行版那樣,他們都有各自都管理系統,同乙個的訊息通知系統,dbus和ubus這些。系統除錯也是一樣dmesg,現在還接觸到了logrea...

Openwrt開發資料收集

1.openwrt 如何編譯openwrt make menuconfig 介面結構解析 2.openwrt ubuntu 12.04搭建openwrt編譯環境 3.完全新手教程 編譯openwrt全過程 4.bbb的openwrt例子 5.openwrt開發 am335x 新手開始 6.環境搭建問...

centos 搭建Openwrt開發環境

openwrt的原始碼實施了版本控制,可以使用git 或者 svn進行轉殖 git git clone git svn svn co svn yum install git 然後可以切換到原始碼目錄 make menuconfig 此時會報一大堆的 需要解決的依賴,乙個個解決就ok 了,此處簡單介紹...