Linux中iptables的用法
iptables命令用於創建數據過濾與NAT規則,在iptables命令中設置數據過濾或處理數據包的策略叫做規則,將多個規則合成一個鏈。
1.1 iptables的控制類型
ACCEPT:允許通過
LOG:記錄日誌信息,然後傳給下一條規則繼續匹配。
REJECT:拒絕通過,必要時給出提示。
DROP:直接丟棄,不給出任何回應。
1.2 規則鏈
規則鏈依據處理數據包的位置不同而進行分類
PREROUTING:在進行路由選擇前處理數據包。
INPUT:處理入站的數據包。
OUTPUT:處理出站的數據包。
FORWARD:處理轉發的數據包。
POSTROUTING:在進行路由選擇後處理數據包。
規則鏈的先後順序:
入站順序:PREROUTINGàINPUT
出站順序:OUTPUTàPOSTROUTING
轉發順序:PREROUTINGàFORWARDàPOSTROUTING
1.3 規則表
iptables中的規則表是用於容納規則鏈,規則表默認是允許狀態的,那麽規則鏈就是設置被禁止的規則,而反之如果規則表是禁止狀態的,那麽規則鏈就是設置被允許的規則
raw表:確定是否對該數據包進行狀態跟蹤。
mangle表:為數據包設置標記。
nat表:修改數據包中的源、目的IP地址或端口。
filter表:此表是默認規則表,確定是否放行該數據包。
規則表的先後順序:rawàmangleànatàfilter
1.4 註意事項
1. 沒有指定規則表則默認指filter表。
2. 不指定規則鏈則指表內所有的規則鏈。
3. 在規則鏈中匹配規則時會依次檢查,匹配即停止(LOG規則除外),若沒有匹配項則按鏈的默認狀態處理。
1.5 iptables命令用法
1.5.1 添加規則
iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]
1.5.1.1 INPUT規則
# iptables -L -t filter #查看filter表,“-t filter”可省略,因為默認就是filter表
# iptables -L -t nat #查看nat表
#將INPUT鏈的默認策略設置為丟棄。(此時
# iptables -P INPUT DROP
#允許所有的ping操作,-I:insert在規則鏈頭部加入新規則 -p:protocol -j: jump指令
# iptables -I INPUT -p icmp -j ACCEPT
在INPUT鏈追加一條規則,允許所有未被其他規則匹配上的數據包通過,“-t filter”可省略,因為默認就是filter表
# iptables -t filter -A INPUT -j ACCEPT
僅允許來自於10.0.0.0/24網段的用戶連接本機的ssh服務
# iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j REJECT
不允許任何主機訪問本機的12345端口
# iptables -I INPUT -p tcp --dport 12345 -j REJECT
# iptables -I INPUT -p udp --dport 12345 -j REJECT
拒絕所有主機通過eth0網卡訪問本機的http服務
# iptables -I INPUT -i eth0 -p tcp --dport 80 -j REJECT
1.5.1.2 FORWARD規則
FORWARD規則相當於路由功能
禁止用戶訪問www.wangning.com
iptables -I FORWARD -d www.wangning.com -j REJECT
禁止IP為10.0.0.66的用戶上網
# iptables -I FORWARD -s 10.0.0.66 -j REJECT
1.5.2 刪除規則
#刪除filter表中INPUT規則的第一條
# iptables -D INPUT 1
1.6 保存iptables配置
# /etc/init.d/iptables save
Linux中iptables的用法