firewalld:防火牆,其實就是一個隔離工具:工做於主機或者網絡的邊緣
對於進出本主機或者網絡的報文根據事先定義好的網絡規則作匹配檢測,
對於可以被規則所匹配的報文作出相應處理的組件(這個組件能夠是硬件,也能夠是軟件):網絡
filter:過濾,防火牆
nat:network address translation,網絡地址轉換
mangle:拆分報文,作出修改,在封裝起來
raw:關閉nat表上啓用的鏈接追蹤功能app
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTINGtcp
流入: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,OUTPUTpost
報文進入本機後:
判斷目標主機
報文發出以前:
判斷經由哪一個藉口送往下一跳日誌
(1)要實現什麼功能:判斷添加在哪張表上;
(2)報文流經的路徑:判斷添加在哪一個鏈上;code
策略應用優先級:raw, mangle, nat, filter
策略經常使用優先級:filter,nat,mangle,rawblog
-F: flush,清空規則鏈:省略鏈,表示清空指定表上的全部的鏈 -N: new, 建立新的自定義規則鏈: -X: drop, 刪除用戶自定義的空的規則鏈-P: Policy, 爲指定鏈這是默認策略,對filter表中的鏈而言,默認策略一般有ACCEPT,DROP,REJECT;接口
-A:append,將新規則追加於指定鏈的尾部 -I:insert,將新規則插入至指定鏈的指定位置 -D:delete,刪除指定鏈上的指定規則:ip
-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:地址假裝 .... 自定義鏈:由自定義鏈中的的規則進行匹配
例子
清空全部策略: 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
#源地址爲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
iptables工具:
-t:指定表 -L:查看規則 -n:以數字形式查看 -F:清空全部規則 -X:清除自定義鏈 -P:指定鏈的默認規則 -j:指定要執行的動做 ACCEPT:接受 DROP:丟棄 REJECT:拒絕 DNAT:目標地址轉換 SNAT:源地址轉換 -A:append追加策略 -s:source源ip(網段) -d:destination目標ip(網段) -I:insert插入策略 -p:protocol指定協議 --dport:指定目標端口 --sport:指定源端口 --line-num:顯示規則行號 -D:按照行號刪除某鏈中的規則 -i:指定網卡
防火牆修改內核參數: 臨時修改: echo 1 > /proc/sys/net/ipv4/ip_forward 永久修改: 修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 修改後能夠重啓系統來使修改生效,也能夠執行下面的命令來使修改生效: sysctl -p /etc/sysctl.conf