iptables簡單介紹

iptables簡單介紹



什麼是防火牆?

防火牆是工做在主機或網絡邊緣,可以對其所匹配到的報文根據事先定義好的規則做出相應處理的組件,能夠是軟件,也能夠是硬件,還能軟硬結合實現。服務器

UNIX/Linux中對防火牆的實現

早期在openBSD中經過內核中的ipfw實現簡單的數據報過濾功能、後來在Linux 2.2內核中使用ipchains來取代,意爲鏈、後來在Linux 2.4內核中被iptables所取代,意爲表。網絡

netfilter/iptables原理

事實上Linux 2.6實現防火牆是經過內核中的netfilter框架完成的,iptables其實不止指的是一個在用戶空間的應用程序,其實仍是內核中的一個存放特定規則的模塊,因此iptables的全稱應該爲netfilter/iptables架構

netfilter的鉤子函數

網絡防火牆通常都設置在整個網絡的邊緣,才能對全部出入的數據報進行分析和進行相應的處理,做爲一個主機防火牆應該在數據報文出入主機時在TCP/IP協議棧的特定位置對數據報文進行攔截並執行對應動做,那麼在netfilter架構中分別有五個位置能夠做爲防火牆的攔截點,咱們稱它們爲hook function(鉤子函數)。併發

數據流通過netfilter大體路程圖

下載.png

四表五鏈

五鏈

PREROUTING

數據報文進入TCP/IP協議棧路由選擇前會被PREROUTING「鉤」住,分析其數據包對其相應操做,注意PREROUTING鏈不能對數據包進行過濾,PREROUTING鏈是整個netfilter框架中的第一關框架

INPUT

經過PREROUTING後進行路由選擇若是數據包是進入本機內部,則轉發到INPUT鏈,INPUT鏈可以經過實現定義好的規則對數據包進行篩選若是被匹配則執行相應動做,INPUT鏈能夠對數據包進行過濾,INPUT鏈是數據報文進入用戶空間的必經之路ide

FORWARD

經過PREROUTING後進行路由選擇若是數據包只是經過本機進行轉發,則轉發到FORWARD鏈,FORWARD鏈可以經過事先定義好的規則對數據包進行匹配檢查並執行相應動做,INPUT鏈能夠對數據包進行過濾,正是有了FORWARDiptables纔可以做爲一個網絡防火牆運行在網絡邊緣對進出網絡的數據報文進行過濾函數

OUTPUT

數據包從用戶空間的進程經過路由選擇特定的網卡接口後轉到OUTPUT鏈,OUTPUT鏈可以經過實現定義好的規則對數據報文進行匹配檢查並執行相應動做,OUTPUT鏈能夠對數據包進行過濾高併發

POSTROUTING

數據包從OUTPUTFORWARD轉發而來,到達netfilter框架中的最後一關,分析數據包並執行對應動做,和POSTROUTING同樣不能對數據包進行過濾spa

四表

iptables之因此被稱爲iptables是其過濾數據包的規則是經過四張表的來定義code

filter

整個iptables最關鍵的表,實現數據包的過濾,能夠由INPUT,FORWARD,OUTPUT這三個可以實現過濾功能的鏈組成

nat

學過網絡的同窗應該都知道NAT(Network Address Translation)網絡地址轉換,正是應爲有了這項技術才使得咱們現今還可以有IPv4可使用,在iptables中也能夠實現NAT的相關功能, 例如SNAT, DNAT, MASQUERADE等功能,nat表能夠由PREROUTING, FORWARD, POSTROUTING組成

mangle

mangle能夠對匹配到的報文的數據報進行拆解,作出修改,從新封裝等操做,通常咱們用的不多,五個鏈都能實現mangle的功能

raw

raw關閉NAT的鏈接追蹤機制,防止在高併發的訪問下服務器的內存溢出致使故障,可由PREROUTING,OUTPUT實現

定義規則的」潛規則」

添加規則時的考量點

  1. 實現哪些功能: 判斷添加在哪張表上

  2. 報文的流經路徑: 判斷添加在哪一個鏈上

鏈上規則的次序

1.同類規則(訪問同一程序),匹配範圍小的放在上面 
2.不一樣類的規則(訪問不一樣應用), 匹配到報文頻率高的放上面 
3.將那些可由一條規則描述的多個規則合併成一個 
4.設置默認策略

總結

本文只對iptables進行原理方面的簡單介紹,做者水平不高,若是發現錯誤還望海涵並及時通知我,在這裏不勝感激。 做者:AnyISalIn 感謝:MageEdu

相關文章
相關標籤/搜索