firewalld:防火牆,其實就是一個隔離工具:工做於主機或者網絡的邊緣
對於進出本主機或者網絡的報文根據事先定義好的網絡規則作匹配檢測,
對於可以被規則所匹配的報文作出相應處理的組件(這個組件能夠是硬件,也能夠是軟件):網絡
filter:過濾,防火牆
nat:network address translation,網絡地址轉換
mangle:拆分報文,作出修改,在封裝起來
raw:關閉nat表上啓用的鏈接追蹤功能
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
流入:PREROUTING --> INPUT 流出:OUTPUT --> POSTROUTING 轉發:PREROUTING --> FORWARD --> POSTROUTING
filter: INPUT,FORWARD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,INPUT,POSTROUTING(SNAT)
mangle: PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT
報文進入本機後:
判斷目標主機
報文發出以前:
判斷經由哪一個藉口送往下一跳
(1)要實現什麼功能:判斷添加在哪張表上; (2)報文流經的路徑:判斷添加在哪一個鏈上;
策略應用優先級:raw, mangle, nat, filter
策略經常使用優先級:filter,nat,mangle,raw
-F: flush,清空規則鏈:省略鏈,表示清空指定表上的全部的鏈 -N: new, 建立新的自定義規則鏈: -X: drop, 刪除用戶自定義的空的規則鏈-P: Policy, 爲指定鏈這是默認策略,對filter表中的鏈而言,默認策略一般有ACCEPT,DROP,REJECT;
-A:append,將新規則追加於指定鏈的尾部 -I:insert,將新規則插入至指定鏈的指定位置 -D:delete,刪除指定鏈上的指定規則:
-L:list, 列出指定鏈上的全部規則: -n:number,以數字格式顯示地址和端口號 -v:verbose,顯示詳細信息 -vv,-vvv --line-numbers:顯示規則編號:
-s, source:檢查報文中源ip地址是否符合此處指定的地址範圍 -d, destination:檢查報文中ip地址是否符合此處指定的地址範圍 -p, protocol(udp|tcp|icmp):檢查報文中的協議 -i, input-interface:數據報文的流入接口:僅能用於PREROUTING,INPUT,FORWARD鏈上 -o, out-interface:數據報文的流出接口:僅能用於POSTROUTING,OUTPUT,FORWARD鏈上
-j target:jump至指定的target
ACCEPT:接受
DROP:丟棄
REJECT:拒絕
RETURN:返回調用鏈
REDIRECT:端口重定向
LOG:記錄日誌
MARK:作防火牆標記
DNAT:目標地址轉換
SNAT:源地址轉換
MASQUERADE:地址假裝
....
自定義鏈:由自定義鏈中的的規則進行匹配app
filter表:tcp
清空全部策略: iptables -F 清空自定義鏈: iptables -X 自定義一個鏈 iptables -N old_forward 修改自定義鏈的名字 iptables -E old_forward new_forward 把filter中forward鏈的默認策略打成drop iptables -P FORWARD DROP 查看filter表中的策略而且顯示行數: iptables -L -n --line-number 刪除filter表中forward鏈中的第9條策略: iptables -t filter -D FORWARD 9 限制全部主機(0.0.0.0)拒絕ping本主機 iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT 顯示全部主機(0.0.0.0)拒絕經過ens33網卡ping本主機 iptables -t filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT
nat表:工具
#源地址爲192.168.250.0網段的ip地址通過防火牆都轉換成192.168.31.100這個ip地址(SNAT:源地址轉換) iptables -t nat -A POSTROUTING -s 192.168.250.0/24 ! -d 192.168.250.0/24 -j SNAT --to-source 192.168.31.100 #訪問目標地址爲192.168.31.200這個機器而且是tcp協議80號端口的都轉發給192.168.250.1(DNAT目標地址轉換) iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.1:80 #訪問目標地址爲192.168.31.200這個機器而且是tcp協議80號端口的都轉發給192.168.31.100的9999號端口(DNAT目標端口地址轉換) iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.31.100:9999