前言
在早期的 Linux 系統中,默認使用的是 iptables
配置防火牆。儘管新型
的 firewalld
防火牆已經被投入使用多年,但是大量的企業在生產環境中依然出於各種原因而繼續使用 iptables。考慮到 iptables 在當前生產環境中還具有頑強的生命力,我覺得還是有必要再好好地講解一下這項技術。
iptables 簡介
1、什麼是iptables?
iptables 是 Linux 防火牆工作在用戶空間的管理工具,是 netfilter/iptables
IP 信息包過濾系統是一部分,用來設置、維護和檢查 Linux 內核的 IP 數據包過濾規則。
2、iptables特點
iptables 是基於內核的防火牆,功能非常強大;iptables
內置了filter
,nat
和mangle
三張表。所有規則配置後,立即生效,不需要重啓服務。
iptables 組成
iptables的結構是由表(tables)組成,而tables是由鏈組成,鏈又是由具體的規則組成。因此我們在編寫iptables規則時,要先指定表,再指定鏈。tables的作用是區分不同功能的規則,並且存儲這些規則。
注意:
raw表
:用於處理異常,包括的規則鏈有:prerouting,output; 一般使用不到。
總體說來,iptables是由“三表五鏈
”組成。
1、三張表介紹:
filter
負責過濾數據包,包括的規則鏈有:input
,output
和forward
nat
用於網絡地址轉換(IP、端口),包括的規則鏈有:prerouting
,postrouting
和 output
mangle
主要應用在修改數據包、流量整形、給數據包打標識,默認的規則鏈有:INPUT
,OUTPUT
、 forward
,POSTROUTING
,PREROUTING
優先級:mangle > nat > filter
2、五條鏈:
input
匹配目標IP是本機的數據包
output
出口數據包 , 一般不在此鏈上做配置
forward
匹配流經本機的數據包
prerouting
修改目的地址,用來做 DNAT 。如:把內網中的 80 端口映射到互聯網端口
postrouting
修改源地址,用來做 SNAT。 如:局域網共享一個公網IP接入Internet。
iptables 處理數據包流程:
-
當一個數據包進入網卡時,它首先進入
PREROUTING
鏈,內核根據數據包目的 IP 判斷是否需要轉送出去。 -
如果數據包就是進入本機的,它就會沿着圖向下移動,到達
INPUT
鏈。數據包到了 INPUT 鏈後,任何進程都會收到它。 -
本機上運行的程序可以發送數據包,這些數據包會經過
OUTPUT
鏈,然後到達POSTROUTING
鏈輸出。 - 如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示向右移動,經過
FORWARD
鏈,然後到達POSTROUTING
鏈輸出。
總結: 整體數據包分兩類: 1、發給防火牆本身的數據包 ;2、需要經過防火牆的數據包
iptables 安裝
1、關閉 firewall
systemctl stop firewalld //關閉firewalld服務
systemctl disable firewalld //禁止firewalld開機自啓動
2、安裝 iptables
yum -y install iptables-services
3、啓動服務
systemctl start iptables //啓動iptables
systemctl start iptables //設置iptables開機自啓動
4、配置文件位置
[root@LB-01 ~]# ll /etc/sysconfig/iptables
-rw------- 1 root root 1027 May 12 18:40 /etc/sysconfig/iptables
最後給大家看下iptables配置實例:
小朋友你是否有很多問號
今天只是 iptables 入門篇,下個章節再爲大家詳細介紹iptables語法規則及企業實戰案例。相信看完明天教程,多加練習後您不僅能看懂上面的配置實例,還可以利用iptables打造出銅牆鐵壁級服務器~
結語
公衆號『開源Linux
』,專注分享Linux/Unix相關內容,包括Linux運維、Linux系統開發、網絡編程、以及虛擬化和雲計算等技術乾貨。後臺回覆『學習
』,送你一套學習Linux的系列書籍,期待與你相遇。