linux網路 iptables與閘道器

2021-08-03 18:42:32 字數 2175 閱讀 4498

最近做關wifi家庭閘道器專案,接觸到很多新的知識,本文對linux的iptables、閘道器中的nat轉換、dmz、埠對映和埠觸發等概念進行總結

linux iptables是linux2.6核心以後使用的一套網路工具,對其進行合理的配置,可實現防火牆、nat轉換等閘道器功能

好,那麼iptables怎麼配置,這些配置是如何實現的呢

應用層的iptables是乙個可執行程式,iptabltes- h可看到命令幫助,這裡首先要說明一下iptables中的3個層次遞進的概念:表(table)、鏈(chain)和規則(target),iptables應用程式命令就是對某個表的某個鏈的某個規則操作

iptables預設有4張表,nat、filter、mangle和raw,專案中使用了nat和filter,所以這裡只說nat和filter

每個表都有幾條預設的鏈,nat預設有prerouting、input、output、postrouting4個鏈,filter預設有input、forward、output3個鏈,表不可增減,但是表中的鏈可自定義增加或刪除

命令格式 :iptables -t [table] -[opt] [chain] -j ...

命令的格式變化太多,且無需記住所有命令,關鍵是實際中如何使用,常用哪些,後續再說

這裡不會分析原始碼,只注重大局和框架,上圖最方便

上圖表示的是網路資料從網絡卡驅動接收程式中跳轉到協議層後,都經歷了哪些東東,這些過程屬於linux的net子系統,與裝置無關

所有報文都經過這個圖,從prerouting這裡,報文的mac已經被剝離,即從以後是三層處理,主要關注報文的ip位址,先拋開這些點是幹嘛的,理一理資料報的流向

prerouting點表示還未進行路由之前,經過路由後,報文的流向無非是兩個結果,要麼該報文是發往本機的,即上面一條路,要麼是發往其他裝置的,走下面一條路

如果是發往本機,則經過iuput點,到達localhost,即發往上層協議處理,處理之後,還會經過乙個路由,判斷發往**

如果是發往其他裝置,則經過forward點進行**

最後所有資料報都會經過postrouting點,出裝置

這些點和iptables中的表和鏈是什麼關係?此即彼

iptables在核心中的實現是通過netfilter完成的,本質上是在這些預先設定好的點上新增各種核心鉤子函式,當程式執行到這些點上時,按照iptables應用程式配置的規則進行處理,是接收、丟棄、**,還是nat轉換…,iptables和核心通訊通過netlink完成,當然出於某些特殊需求,你也可以自己新增鉤子函式,怎麼新增,看/linux-2.6-***/net/netfilter/下的幾個原始碼自然會了

nat轉換是幹嘛?轉換ip位址,為什麼要轉換?一是位址不夠了,二是保護內網

位址不夠的問題就要涉及到網路位址劃分了,不展開說,位址分為a、b、c、d、e五類,所有位址中選取一些位址作為私有位址,只用於內網,它們是

10.0.0.0 ~ 10.255.255.255

172.16.0.0 ~ 172.31.255.255

192.168.0.0 ~ 192.168.255.255

怎麼保護,外網不可訪問內網,內網可以訪問外網

iptables的表nat專門用於設定和處理nat轉換的規則,內網訪問外網資源時,將源ip位址轉換為乙個外網位址,該過程叫snat,iptables設定後,也可以讓外網訪問內網部分資源,將目的ip位址轉換為乙個內網位址,該過程叫dnat,說白了,核心在於對網路結構的理解,對iptables進行配置,以控制資料流的走向

dmz是幹嘛的,官話是位於外網和防火牆之間的乙個區域,可放置一些私人伺服器資源,供外網訪問,上圖來理解

上圖中,共有三個區域,外網、dmz和內網,一般使用者家中如果不放置私人伺服器等東東,沒有dmz

外網在閘道器左側,dmz和內網在閘道器右側,表明dmz和內網都是私有位址,內網包括使用者會使用的pc、手機等裝置,這些裝置必須與外網嚴格隔離,不可被外網入侵,dmz區域放置一些可以被外網訪問的伺服器

一般的規則是:外網可訪問dmz,不可訪問內網,dmz不可訪問外網和內網,內網可訪問外網和dmz

但是規則都是人定的,關鍵在於iptables的配置,怎麼玩都行其實

Linux虛擬網路基礎 iptables

iptables可以實現防火牆 nat等功能,不過這句話也對,也不對。說它對,我們確實是通過iptables相關命令列,實現了防火牆 nat的功能 說它不對,是因為iptables其實只是乙個執行在使用者空間的命令列工具,真正實現這些功能的是執行在核心空間的netfilter。它們之間的關係如下圖 ...

Linux中使用iptables記錄網路訪問日誌

iptables a input p tcp dport 22 m state state new m limit limit 4 min j log log prefix iptables ssh in log level 4 iptables a input p tcp dport 22 m s...

Linux防火牆iptables開放網路埠的方法

linux防火牆iptables開放網路埠的方法 a rh firewall 1 input m state state new m tcp p tcp dport 22 j accept a rh firewall 1 input m state state new m tcp p tcp dpo...