Iptables 基本配置原理

2021-08-15 19:53:33 字數 3764 閱讀 4850

linux:網路防火牆

netfilter:frame 核心提供的框架

iptables:資料報文過濾:nat mangle等規則生成工具資料,過濾放在netfilter中frame才能生效。

ip header 32位  版本號4位,報文首部的長度4位(需要乘以4才是首部長度,首部為32位),

type of service 服務型別,total length 報文總長度,idetification (fragment id)段標識

不同裝置支援的傳送最大資料 進行分片

m f(more fragment)更多的分片 d f(dont fragment)不能分片 控制標記

fragment offset段偏移 報文的順序 報文的排列順序

idetification段標識一樣表示要將報文合併在一起,df是不能分片,報文在網際網路上傳送是不能分片,如果分片報錯。

time-to-live(ttl)生存時間,protocol 協議 ,icmp(三層半協議)網路控制協議,header  chercksum首部校驗和(存放首部的校驗碼),

source ip address 源ip位址,destination ip address 目的位址,options可變長度可選資料,tcp udp通過埠號區別是哪個程序,0-1023只能管理員使用。

tcp報文首部 傳輸控制協議 有三次握手 有重傳機子

source port number 源埠號 destination 目標埠號  

sequence number 序列號(傳送方告訴接收方第乙個是隨機值後面依次加一) acknowledgement nunber 確認號 (確認好加一)每一次確認加一   urg緊急指標0無效 1有效 用來說明確認號是否有效 

rst 重置 抖動時重置 

urgent pointer

windows size滑動視窗用來接收和傳送方的緩衝區大小

tcp checksum 校驗和 

網路能夠傳送的資料格式:文字 二進位制

被動開啟 listen

請求主動開啟 sent

主動傳送報文 syn=1 ack =0第一次 syn_sent

伺服器回包   syn=1 ack =1  syn_recv

第二次發包    syn=1 ack=2 syn_established

伺服器回包   syn=1 ack=3 syn_established

四次揮手     客戶端狀態 傳送 fin fin_wait1  

伺服器端 close_wait     ack      time_wait1

客戶端等待伺服器伺服器資料傳送完成 

伺服器 fin 資料傳送完成

客戶端不能立即close

2*msl

closing狀態 

客戶端  ack  斷開連線  last_ack

伺服器立即(closed)斷開   

上面為tcp的狀態轉移

tcp的有限狀態機實現tcp的狀態轉移。

網路:ip報文首部,tcp協議

防火牆:硬體,軟體

規則:標準 

將資料報文按照處理資料,如果資料符合規則,就處理。

framework:

預設規則:

開放(堵非法)

關閉(通認證)

規則:匹配標準

ip:源ip,目標ip

tcp:sport,dsport syn=1,fin=0,rst=0,ack=0,syn=1,fin=0,rst=0,ack=1

syn=1,fin=0,rst=0,ack=2(establish)  

icmp:icmp-type 使用報文型別

資料報文過濾:

/proc/sys/net/ipv4/ip_forward是否允許**

路由決策:進入本機網絡卡到tcpip協議棧然後進行決策**。

hook:鉤子函式。工作在tcpip上的三個鉤子。規則就是鉤子。

nat轉換使用了5個鉤子。

hook function:鉤子函式

preouting

input

output

forward

prestrouting

規則:prerouting

input

porward

output

postrouting

filter(過濾):表

input

output

forward

prerouting

output

postrouting

mangle(拆開、修改、封裝):表

prerouting

input

forward

output

postrouting

raw(原始格式):表

prerouting

output

iptables:raw :prerouting 

mangle:preouting

nat :preouting

路由選擇:

1 、本機應用:mangle:input

filter:input

1.1路由選擇

raw:output

mangle:output

nat:output

filter:output

2、資料**:

mangle:forrouting

fliter:forward 

出棧資料:

mangle:postrouting

nat:postrouting

500條規則

能否使用自定義規則?

可以使用自定義鏈,但只在被呼叫才能發揮作用,而且如果沒有自定義鏈中的任何規則匹配,應該還有返回機制:

用可以刪除自定義的空鏈

預設鏈無法刪除

每個規則都有兩個,內建的計數器:

被匹配的報文個數

被匹配的報文大小之和

規則:匹配標準、處理動作

匹配標準:

通用匹配

iptables  [-t table] command chain [num]匹配標準 -j 處理辦法

擴充套件匹配

-s ,--src 指定原位址

-d,--dst 指定目標位址

-p 指定四層協議

-i  inte***ce:指定資料報文流入的介面

可用於定義標準的鏈:prerouting,input,forward

-o inte***ce:指定資料報文流出的介面

可用於標準定義的鏈:output,postrouting,forward

-j target跳轉

accept

drop 丟棄

reject拒絕

隱含擴充套件:不用特別指明那個模組進行的擴充套件時使用-p

顯示擴充套件:必須指明由那個模組進行擴充套件,在ipatles中使用-m選項完成此動作

iptables -t filter -a input -s 192.16.0.0/16  -d 192.16.100.7  -j drop

iptables基本原理和規則配置

mangle 打個標記,更改ttl值,更改檢視tos nat 做dnat snat和埠對映 filter 通過五元組控制資料報 conntrack 跳過連線跟蹤以及加速資料報到達本地或出去 路由判決 查路由看是 還是找自己的 優先順序順序 raw mangle nat fiter 格式 iptabl...

iptables 配置例項

iptables f iptables x iptables f t mangle iptables t mangle x iptables f t nat iptables t nat x 首先,把三個表清空,把自建的規則清空。iptables p input drop iptables p ou...

iptables配置例項

bin bash export iptables sbin iptables export eth0 enp3s0 清除所有規則 iptables f iptables x 設定規則 iptables p input drop 不在此規則裡的資料報丟棄 iptables p output accep...