Contents ...
udn網路城邦
linux下iptables命令選項、條件匹配及動作目錄
2015/07/07 20:56
瀏覽1,314
迴響0
推薦0
引用0
iptables命令選項
-A,--append                  在所選擇的鏈的最後添加一條規則     
-D,--delete                  從所選鏈中刪除規則
-R,--replace                 替換規則
-I,--insert                  向所選鏈中插入新規則
-L,--list                    顯示所選鏈的所有規則,如果沒有指定鏈,則顯示表中的所有鏈
-F,--flush                   清空所選的鏈,如果沒有指定鏈,則清空指定表中的所有鏈
-Z,--zero                    把指定鏈的所有計數器歸零
-N,--new-chain               建立自定義的鏈
-X,--delete-chain            刪除指定的用戶自定義鏈,這個鏈必須沒有被引用,如果被引用,在刪除之前必須刪除或者替換與之有關的規則
-P,policy                    為鏈設置默認策略
-E,--rename-chain            對自定義的鏈進行重命名
-v,--verbose                 顯示詳細信息
-x,--exact                   使--list輸出中的計數器顯示準確的數值,而不用K、M、G等估值
-n,--numeric                 使輸出中的IP地址和端口以數值的形式顯示
--line-numbers               顯示出每條規則在相應鏈中的序號
-c,--set-counters            在創建或更改規則時設置計數器
--modprobe                   讓iptables推測並裝載要使用的模塊
iptables條件匹配
-p,--protocol                 匹配指定的協議
-s,--src,--source             匹配數據包中的源IP地址
-d,--dst,--dstination         匹配數據包中的目的IP地址
-i,--in-interface             以數據包進入本地所使用的網絡接口進行匹配
-o,--out-interface            以數據包離開本地所使用的網絡接口進行匹配
-f,--fragment                 匹配一個被分片的包的第二片或及以後的部分
--sport,--source-port         匹配基於TCP協議數據包的源端口
--dport,--destination-port    匹配基於TCP協議數據包的目的端口
--tcp-flags                   匹配指定的TCP標記
--syn                         匹配那些SYN標記被設置而ACK和RST標記沒有設置的數據包
--tcp-option                  匹配TCP協議數據包的頭部信息
--icmp-type                   根據ICMP類型匹配數據包
--linit                       為linit match設置最大平均匹配速率,也就是單位時間內linit match可以匹配幾個包,這個匹配操作必須由-m limit明確指定才能使用
--mac-source                  基於數據包的MAC源地址進行匹配。這個匹配操作必須由-m mac明確指定才能使用
--mark                        以數據包被設置的mark值來匹配。這個匹配操作必須由-m mark明確指定才能使用
--uid-owner                   按生成數據包的用戶的ID(UID)來匹配外出的包。這個匹配操作必須由-m owner明確指定才能使用
--gid-owner                   按生成數據包的用戶所在組的ID(GID)來匹配外出的包。這個匹配操作必須由-m owner明確指定才能使用
--pid-owner                   按生成數據包的進程的ID(UID)來匹配外出的包。這個匹配操作必須由-m owner明確指定才能使用
--sid-owner                   按生成數據包的會話的ID(SID)來匹配外出的包。這個匹配操作必須由-m owner明確指定才能使用
--state                       指定要匹配數據包的狀態,一共有4種狀態可以使用:INVALID、ESTABLISHED、NEW和RELATED。這個匹配操作必須由-m state明確指定才能使用
--tos                         根據TOS字段匹配數據包,這個匹配操作必須由-m tos明確指定才能使用
--ttl                         根據TTL的值來匹配數據包,這個匹配操作必須由-m ttl明確指定才能使用
iptables動作/目標
ACCEPT                        允許符合條件的數據包通過
DROP                          拒絕符合條件的數據包通過
LOG                           用來記錄與數據包相關的信息
MARK                          設置mark值,這個值是一個無符號的整數
MASQUERADE                    和SNAT的作用相同,區別在於它不需要指定--to-source
SNAT                          源網絡地址轉換
DNAT                          目的網絡地址轉換
REDIRECT                      轉發數據包一另一個端口
REJECT                        REJECT和DROP都會將數據包丟棄,區別在於REJECT除了丟棄數據包外,還向發送者返回錯誤信息
RETURN                        使數據包返回上一層
TOS                           用來設置IP頭部中的Type Of Service字段
TTL                           用於修改IP頭部中Time To Live字段的值
ULOG                          ULOG可以在用戶空間記錄被匹配的包的信息,這些信息和整個包都會通過netlink socket被多播
QUEUE                         為用戶空間的程序或應用軟件管理包隊列
MIRROR                        顛倒IP頭部中的源目地址,然後再轉發包

iptables -A                  添加記錄
#iptables -A INPUT -p icmp -j DROP             添加一條輸入的ICMP的拒絕記錄
iptables -D                  刪除記錄
#iptables -D OUTPUT -p icmp -j DROP            刪除一條輸出的ICMP的拒絕記錄
iptables -F                  清除記錄
#iptables -F                 清除所有記錄
iptables -L                  列出記錄
#iptables -L                 列出所有記錄
iptables -I                  插入記錄
#iptables -I INPUT 3 --dport 80 -j DROP       在位置3的後面插入一條輸入的80端口的拒絕記錄
#iptables -P INPUT -j DROP                    將列表中所有INPUT的鏈默認策略定義為拒絕
#iptables -t net -P OUTPUT -j ACCEPT          將net表中所有OUTPUT的鏈默認策略定義為拒絕
#iptables -L FORWARD                          查看表中FORWARD鏈的規則記錄
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT                    向列表中添加一條允許訪問TCP協議的80端口記錄
#iptables -I INPUT -s 192.168.1.0/24 -j DROP                      向列表中插入一條拒絕源IP為192.168.1.0網段的數據包通過
#iptables -D INPUT 2                          刪除列表中輸入的第二條記錄
#iptables -F OUTPUT                           清除列表中所有OUTPUT記錄
#iptables -A FORWARD -d hi.baidu.com./ylinuxs -j DROP                     禁止客戶端訪問域名hi.baidu.com./ylinuxs的網站
#iptables -A FORWARD -d 202.16.28.6 -j DROP                         禁止客戶端訪問IP地址為202.16.28.6的網站
#iptables -I FORWARD -p tcp --dport 8000 -j DROP
#iptables -I FORWARD -p udp --dport 8000 -j DROP
#iptables -I FORWARD -d tcpconn.tencent.com -j DROP                 上面三行的意思為禁止用戶訪問qq(有可能不太全,可以在qq安裝目錄下有qq號碼的目錄下找到config.db文件,打開裏面有全部的qq服務器地址)
#iptables -A INPUT -p tcp --dport 80 -j LOG \ --log-level notice                   指定記錄日誌,並指定等級為notice
#iptables -A INPUT -p tcp --dport 80 -j LOG \ --log-level notice --log-prefix "iptables:"                 在已經記錄日誌信息之前加上指定的前綴
#iptables -A INPUT -p tcp -j LOG --log-tcp-sequence                              把數據包的TCP序列號和其它日誌信息一起記錄下來
#iptables -A FORWARD -p tcp -j LOG --log-tcp-options                             記錄TCP包頭中的字段大小不變的選項
#iptables -A FORWARD -p tcp -j LOG --log-ip-options                              記錄IP包頭中的字段大小不變的選項
#iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.1            將數據包的源地址改為公網地址
DNAT(網絡地址轉達換):
#iptables -t nat -A PREROUTING -i 網絡接品 -p 協議 --dport 端口 -j SNAT --to-destination IP地址
如:
#iptables -t nat -A PREROUTING -d 202.19.26.63 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1        使用DNAT將發送到202.19.26.63,並且端口為80的數據包轉發至192.168.1.1
#iptables -t nat -A PREROUTING -d 202.19.26.63 -p tcp --dport 80 -j DNAT --to 192.168.1.1-192.168.1.2        將公司內部的2臺服務器,全部響應為外部地址202.19.26.63
MASQUERADE(偽裝接口之間的數據):
#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE             將192.168.1.0/24的內部地址,轉換為ppp0的公網地址,並把數據偽裝
#iptables -A INPUT -i lo -j ACCEPT                  添加一條允許使用回環地址的記錄
#iptables -A FORWARD -p tcp --dport 80 -j ACCEPT          添加一條記錄是允許80端口轉發
#iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#iptables -A FORWARD -p tcp --dport 53 -j ACCEPT          上面兩條是添加記錄是允許53端口轉發
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT            允許客戶端訪問服務器的ssh
全站分類:知識學習 科學百科
自訂分類:不分類
上一則: 優化linux內核參數
下一則: Linux內存管理之mmap
你可能會有興趣的文章:

限會員,要發表迴響,請先登入