本篇文檔主要給大家介紹一下iptables的基礎(chǔ)概念,學(xué)習(xí)iptables之前我們必須要先熟悉基礎(chǔ)網(wǎng)絡(luò)知識(shí)
網(wǎng)絡(luò)基本概念
NAT(Network Address Translation)
參考文章
網(wǎng)絡(luò)交換協(xié)議,簡(jiǎn)單的來講就是替換IP報(bào)文頭部的地址信息。比如家里常用的路由器就提供NAT功能

SNAT 源地址轉(zhuǎn)換
內(nèi)部地址需要訪問公網(wǎng)服務(wù)使用源地址轉(zhuǎn)換。上圖中C要訪問A就需要通過B,此時(shí)B轉(zhuǎn)A時(shí)會(huì)將源IP改成自己的外網(wǎng)IP,后面A才能正確回包
DNAT 目標(biāo)地址轉(zhuǎn)換
內(nèi)部地址提供到外部服務(wù),也就是外部地址訪問內(nèi)部地址。上圖中A要訪問C,也是先訪問B也就是說A的請(qǐng)求報(bào)文中目標(biāo)IP是B的外網(wǎng)IP,B收到報(bào)文后會(huì)把目的地址改成C的IP地址并轉(zhuǎn)發(fā)給C。
Linux內(nèi)核對(duì)IP報(bào)文(從網(wǎng)卡開始)處理流程?
iptables
了解iptables時(shí)我們需要了解 netfilter ,簡(jiǎn)單的來講netfilter就是一個(gè)包處理框架,在處理包傳遞過程中,會(huì)按照一定的規(guī)則處理,也就是程序里常用的chain。而iptables就是可以寫這些chain rule的工具。
下圖顯示4表5鏈關(guān)系及相關(guān)鏈路:圖來源于:https://www.linuxidc.com/


以下列出資料文章
iptables基礎(chǔ)知識(shí)詳解
iptables相關(guān)概念
iptables設(shè)置參考文章
iptables設(shè)置說明
iptables命令語法
iptables -t 表名 <-A/I/D/R> 規(guī)則鏈名 [規(guī)則號(hào)] <-i/o 網(wǎng)卡名> -p 協(xié)議名 <-s 源IP> -- sport 源端口 <-d 目標(biāo)IP> -- dport 目標(biāo)端口 -j 動(dòng)作
- 表名(不加默認(rèn)filter):
raw->mangle->nat->filter -
-A追加規(guī)則 ,-I某行添加規(guī)則(不指定首行),-D[number]刪除某行,-R替換(一般不用) - 規(guī)則鏈名:
PREROUTING->INPUT->應(yīng)用進(jìn)程->OUTPUT->POSTROUTINGORPREROUTING->FORWARD->POSTROUTING -
-i: 進(jìn)網(wǎng)卡,-o出網(wǎng)卡 -
-p: 協(xié)議名,常用 TCP,UDP,ICMP -
-s: 原IP(也可以是域名),-d: 目標(biāo)端口(也可以是域名) -
-- sport portnum: 源端口,-- dport portnum: 目標(biāo)端口 -
-j: 執(zhí)行動(dòng)作
ACCEPPT:接受數(shù)據(jù)包。
DROP:直接丟棄數(shù)據(jù)包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址轉(zhuǎn)換 -j SATA --to-source 192.168.0.1
DNAT:目標(biāo)地址轉(zhuǎn)換 -j DATA --to-destination 192.168.0.
MASQUERADE:IP偽裝(NAT)。
LOG:日志記錄。在/var/log/messages文件中記錄日志信息。除了記錄對(duì)數(shù)據(jù)包不做任何動(dòng)作。
具體操作
如果需要forward功能需要開啟
echo 1 > /proc/sys/net/ipv4/ip_forward
查看配置信息
iptables -t filter -L -n --line-number
對(duì)filter表相關(guān)操作
-t 不寫默認(rèn)是filter表
1. 為filter表添加INPUT鏈路,拒絕源IP訪問
iptables -t filter -A INPUT -s 192.168.56.10 -d -j DROP
iptables -t filter -I INPUT -s 192.168.56.10 -d -j DROP
2. 刪除filter表INPUT鏈路 后面1是第1行
iptables -D INPUT 1