前言
在早期的 Linux 系統(tǒng)中宽气,默認(rèn)使用的是?iptables?配置防火墻随常。盡管新型 的?firewalld?防火墻已經(jīng)被投入使用多年潜沦,但是大量的企業(yè)在生產(chǎn)環(huán)境中依然出于各種原因而繼續(xù)使用 iptables⌒鞣眨考慮到 iptables 在當(dāng)前生產(chǎn)環(huán)境中還具有頑強(qiáng)的生命力唆鸡,我覺得還是有必要再好好地講解一下這項(xiàng)技術(shù)。
iptables 簡(jiǎn)介
1枣察、什么是iptables争占?
iptables 是 Linux 防火墻工作在用戶空間的管理工具,是?netfilter/iptablesIP 信息包過濾系統(tǒng)是一部分询件,用來設(shè)置、維護(hù)和檢查 Linux 內(nèi)核的 IP 數(shù)據(jù)包過濾規(guī)則唆樊。
2宛琅、iptables特點(diǎn)
iptables 是基于內(nèi)核的防火墻,功能非常強(qiáng)大逗旁;iptables 內(nèi)置了filter嘿辟,nat和mangle三張表。所有規(guī)則配置后片效,立即生效红伦,不需要重啟服務(wù)。
iptables 組成
iptables的結(jié)構(gòu)是由表(tables)組成淀衣,而tables是由鏈組成昙读,鏈又是由具體的規(guī)則組成。因此我們?cè)诰帉慽ptables規(guī)則時(shí)膨桥,要先指定表蛮浑,再指定鏈。tables的作用是區(qū)分不同功能的規(guī)則只嚣,并且存儲(chǔ)這些規(guī)則沮稚。
注意:raw表:用于處理異常,包括的規(guī)則鏈有:prerouting册舞,output蕴掏;一般使用不到。
總體說來调鲸,iptables是由“三表五鏈”組成盛杰。
1、三張表介紹:
filter
負(fù)責(zé)過濾數(shù)據(jù)包藐石,包括的規(guī)則鏈有:input饶唤,output和forward
nat
用于網(wǎng)絡(luò)地址轉(zhuǎn)換(IP、端口)贯钩,包括的規(guī)則鏈有:prerouting募狂,postrouting?和?output
mangle
主要應(yīng)用在修改數(shù)據(jù)包办素、流量整形、給數(shù)據(jù)包打標(biāo)識(shí)祸穷,默認(rèn)的規(guī)則鏈有:INPUT性穿,OUTPUT、?forward雷滚,POSTROUTING需曾,PREROUTING
優(yōu)先級(jí):mangle > nat > filter
2、五條鏈:
input
匹配目標(biāo)IP是本機(jī)的數(shù)據(jù)包
output
出口數(shù)據(jù)包 祈远, 一般不在此鏈上做配置
forward
匹配流經(jīng)本機(jī)的數(shù)據(jù)包
prerouting
修改目的地址呆万,用來做 DNAT 。如:把內(nèi)網(wǎng)中的 80 端口映射到互聯(lián)網(wǎng)端口
postrouting
修改源地址车份,用來做 SNAT谋减。如:局域網(wǎng)共享一個(gè)公網(wǎng)IP接入Internet。
iptables 處理數(shù)據(jù)包流程:
當(dāng)一個(gè)數(shù)據(jù)包進(jìn)入網(wǎng)卡時(shí)扫沼,它首先進(jìn)入?PREROUTING?鏈出爹,內(nèi)核根據(jù)數(shù)據(jù)包目的 IP 判斷是否需要轉(zhuǎn)送出去。
如果數(shù)據(jù)包就是進(jìn)入本機(jī)的缎除,它就會(huì)沿著圖向下移動(dòng)严就,到達(dá)?INPUT?鏈。數(shù)據(jù)包到了 INPUT 鏈后器罐,任何進(jìn)程都會(huì)收到它梢为。
本機(jī)上運(yùn)行的程序可以發(fā)送數(shù)據(jù)包,這些數(shù)據(jù)包會(huì)經(jīng)過?OUTPUT?鏈轰坊,然后到達(dá)POSTROUTING?鏈輸出抖誉。
如果數(shù)據(jù)包是要轉(zhuǎn)發(fā)出去的,且內(nèi)核允許轉(zhuǎn)發(fā)衰倦,數(shù)據(jù)包就會(huì)如圖所示向右移動(dòng)袒炉,經(jīng)過?FORWARD?鏈,然后到達(dá)?POSTROUTING?鏈輸出樊零。
總結(jié):整體數(shù)據(jù)包分兩類:1我磁、發(fā)給防火墻本身的數(shù)據(jù)包 ;2驻襟、需要經(jīng)過防火墻的數(shù)據(jù)包
iptables 安裝
1夺艰、關(guān)閉 firewall
systemctl stop firewalld //關(guān)閉firewalld服務(wù)
systemctl disable firewalld //禁止firewalld開機(jī)自啟動(dòng)
2、安裝 iptables
yum -y install iptables-services
3沉衣、啟動(dòng)服務(wù)
systemctl start iptables //啟動(dòng)iptables
systemctl start iptables //設(shè)置iptables開機(jī)自啟動(dòng)
4郁副、配置文件位置
[root@LB-01 ~]# ll /etc/sysconfig/iptables
-rw------- 1 root root 1027 May 12 18:40 /etc/sysconfig/iptables
最后給大家看下iptables配置實(shí)例:
小朋友你是否有很多問號(hào)
今天只是 iptables 入門篇,下個(gè)章節(jié)再為大家詳細(xì)介紹iptables語法規(guī)則及企業(yè)實(shí)戰(zhàn)案例豌习。相信看完明天教程存谎,多加練習(xí)后您不僅能看懂上面的配置實(shí)例拔疚,還可以利用iptables打造出銅墻鐵壁級(jí)服務(wù)器~
結(jié)語
公眾號(hào)『開源Linux』,專注分享Linux/Unix相關(guān)內(nèi)容既荚,包括Linux運(yùn)維稚失、Linux系統(tǒng)開發(fā)、網(wǎng)絡(luò)編程恰聘、以及虛擬化和云計(jì)算等技術(shù)干貨句各。后臺(tái)回復(fù)『學(xué)習(xí)』,送你一套學(xué)習(xí)Linux的系列書籍晴叨,期待與你相遇凿宾。