天天看點

iptables 詳細的使用指南

linux系統中,防火牆(firewall),網址轉換(nat),資料包(package)記錄,流量統計,這些功能是由netfilter子系統所提供的,而iptables是控制netfilter的工具。iptables将許多複雜的規則組織成成容易控制的方式,以便管理者可以進行分組測試,或關閉、啟動某組規則。

iptable能夠為unix、linux和bsd個人工作站建立一個防火牆,也可以為一個子網建立防火牆以保護其它的系統平台。iptable隻讀取資料標頭,不會給資訊流增加負擔,也無需進行驗證。

<a target="_blank"></a>

dnatdestination network address translation 目标網絡位址轉換。 dnat是一種改變資料包目的ip位址的技術,經常和snat聯用,以使多台伺服器能共享一個ip位址連入internet,并且繼續服務。通過對同一個 ip位址配置設定不同的端口,來決定資料的流向。snatsource network address translation源網絡位址轉換。這是一種改變資料包源ip位址的技術, 經常用來使多台計算機分享一個internet位址。這隻在ipv4中使用,因為ipv4的位址已快用完了,ipv6将解 決這個問題。

2.1. iptable的鍊和表結構

iptables 詳細的使用指南

ip_flow.png

如上圖可以看出,iptable總體結構.

iptables 詳細的使用指南

iptable_chain.png

prerouting在資料包進入防火牆之後、路由判斷之前對資料包進行修改input在資料包被路由到本地之後,但在使用者空間程式看到它之前對資料包進行修改output使用者空間程式處理資料包後,由本地發出,再次被路由之前更改資料包forward在最初的路由判斷之後、最後一次更改包的源位址之前對資料包進行修改postrouting在所有路由判斷之後,對資料包進行修改

注意: 鍊 是每個資料包流需要經過的不同環節,你可以在不同的環節根據需要設定不同的過濾政策,每個鍊的預設政策都是accept

mangle表這個表主要用來mangle包,你可以使用mangle比對來改變包的一些屬性,比如 tos(type of service),ttl (time to live),mark(後續流量控制tc等)nat表此表僅用于nat,也就是轉換包的源或目标位址。注意,就象我們前面說過的,隻有流的第一個 包會被這個鍊比對,其後的包會自動被做相同的處理(dnat,snat,masquerade)filter表此表用來過濾資料包,我們可以在任何時候比對包并過濾它們。 我們就是在這裡根據包的内容對包做drop或accept的.

iptalbe中,要用 -t 參數指定要操作哪個表,如果沒有 -t 參數,就預設對filter表操作.raw表優先級最高,設定raw時一般是為了不再讓iptables做資料包的連結跟蹤處理,提高性能

注意: 表 是規則的集合組,每個表中的規則條目是按順序比對的,你可以在資料包經過的不同環節設定規則,表的處理優先級:raw &gt; mangle &gt; nat &gt; filter

iptables 詳細的使用指南

packet_flow.png

從上圖可以看出,資料包流環節和表的配合使用方法

iptables 詳細的使用指南

iptable_example.gif

上圖是應用場景的簡單拓撲描述,下面的應用場景舉例,都以上圖為參考.

系統啟動的時候所有的預設政策都是accept,在下面的場景舉例中,我們都是在這種前提下設定iptable的。下面每個場景舉例都是獨立的,沒有相關聯性的。

目标 : 網關伺服器系統自生安全政策,隻對内網使用者開放22端口(sshd服務)

說明: 防火牆的政策順序一般都是 從 非信任 ==&gt; 信任,預設關閉所有通路權限,然後按照需要逐條開放通路權限.

目标:使區域網路的使用者都可以通路外網的伺服器

說明: snat 和 masquerade 差別

snat : 不管是幾個位址,必須明确的指定要snat的ip,适合網關伺服器有固定位址或者是固定位址範圍. masquerade : 是針對adsl動态撥号這種場景而設計,從伺服器的網絡接口上,自動擷取目前ip位址來做nat,這樣就實作了動态snat位址轉換

目标:使外網使用者可以通路到區域網路192.168.138.21這台http服務

目标: 使區域網路使用者,通路外網web服務時,自動使用squid作web透明代理伺服器。

原文釋出時間為:2013-07-18

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀