iptables(linux package filter firewall (network layer))是linux核心內建的ip資訊包過濾系統,該系統有利于在linux系統上更好地控制ip資訊包過濾和防火牆配置。防火牆在做資訊包過濾決定時,有一套規則,這些規則存儲在專用的資訊包過濾表中,而這些表內建在linux核心中。在資訊包過濾表中,規則被分組放在我們所謂的鍊(chain)中。而netfilter/iptables ip資訊包過濾系統是一款功能強大的工具,可用于添加、編輯和移除規則。雖然netfilter/iptables ip資訊包過濾系統被稱為單個實體,但它實際上由兩個元件netfilter和iptables組成。
netfilter元件:也稱為核心空間(kernelspace),是核心的一部分,由一些資訊包過濾表組成,這些表包含核心用來控制資訊包過濾處理的規則集。
iptables 元件:是一種工具,也稱為使用者空間(userspace),它使插入、修改和除去資訊包過濾表中的規則變得容易。除非您正在使用red hat linux 7.1或更高版本,否則需要下載下傳該工具并安裝使用它。
表内有若幹條鍊,鍊内有若幹條規則。
表的作用:容納各種規則鍊
表的劃分依據:防火牆規則的作用
4個規則表:
nat表:修改資料包中的源、目标ip位址或端口(網絡位址轉換)
filter表:确定是否修改資料包(過濾)解決放同行的資料包
raw表:确定是否對該資料包進行狀态跟蹤
mangle表:為資料包設定标記
表内通路鍊的順序:
nat表:prerouting->postrouting->output
filter表:input->forward->output
規則的作用:對資料包進行處理和過濾
鍊的作用:容納各種防火牆規則
5種規則鍊:
input:處理入站資料包
output:處理出戰資料包
forward(forward轉發):處理轉發資料包
postrouting(post routing路由選擇後):在進行路由選擇後處理資料包 post 之後
prerouting(pre routing路由選擇前):在進行路由選擇錢處理資料包 pre 之前
attention:資料包處理流程
資料包入站:
nat:prerouting->路由選擇->filter:input->本地應用程式
資料包轉發:
nat: prerouting->路由選擇->filter:forward->nat:postrouting->轉發走
資料包出站:
nat: 本地應用程式->路由選擇->filter:output->nat:postrouting->出站
iptables command use:
1
2
3
注意:
a. 不指定表,預設是filter表
b. 不指定鍊名,預設是指表的所有鍊
c. 除非設定了鍊的預設政策,否則必須指定比對條件
常見的控制類型: -j
1. accept:允許通過
2. drop:直接丢棄,不給予回應
3. reject:拒絕通過,給予回應
4. log:記錄日志的資訊
選項:
4
5
檢視iptables規則一般使用:
條件比對:
6
7
8
9
10
11
12
13
14
15
16
17
18
load module:
source network transform:私網内主機ip都共享一個公網ip,實作私網内主機使用同一個公網ip上網。
attention:一定是路由轉發後轉換ip,且隻有一個 -o(出站網卡)
example:
外網位址非固定時的共享動态ip位址上網:
masquerade –> 位址僞裝 –> 撥号
destination network transform:将使用私網ip的伺服器釋出到公網上,使得公網上的主機可以通路此伺服器
原理:目标位址轉換
目标位址轉換
轉換目标端口
導出規則:
備份:
還原:
将filter table 中的input 鍊的預設規則設為drop
iptables server可以ping到任何人,任何人不可以ping到iptables server
host2可以通過防火牆通路host1的各種服務,host2的dns要指向host1
snat 私網iphost可以通路公網iphost,轉換源ip位址
用iptables防火牆釋出于内網的host2上的各種服務,是host1可以通過域名通路host2上的各種服務
dnat 将私網中的伺服器釋出出去,讓公網上的host可以通路,轉換公網ip 主機的目的位址。
host1通路遠端管防火牆
當host1通路iptables外網的2222端口時,會轉發到host2的主機中(dnat的端口轉發)
轉載:http://blog.csdn.net/jmilk/article/details/50376054