iptables是Linux系統上用於配置網路包過濾規則的工具,它使用表(tables)和鏈(chains)來組織規則。以下是iptables中的五表五鏈及其對應的實例說明: 五表 filter表:預設表,用於過濾數據包,允許或拒絕數據包通過。它包含INPUT、OUTPUT和FORWARD三個鏈。 ...
iptables是Linux系統上用於配置網路包過濾規則的工具,它使用表(tables)和鏈(chains)來組織規則。以下是iptables中的五表五鏈及其對應的實例說明:
五表
- filter表:預設表,用於過濾數據包,允許或拒絕數據包通過。它包含INPUT、OUTPUT和FORWARD三個鏈。
- nat表:用於網路地址轉換(NAT),例如埠轉發和地址轉換。它包含PREROUTING、POSTROUTING和OUTPUT三個鏈。註意,雖然OUTPUT鏈在nat表中存在,但實際上在iptables中,OUTPUT鏈通常只用於filter表和mangle表。在nat表中,OUTPUT鏈很少使用,因為對於從本機發出的數據包,其源地址轉換通常在路由選擇之前就已經確定了。
- mangle表:用於修改數據包的各種屬性,例如TTL(Time To Live)或TOS(Type of Service)欄位。它也包含PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD五個鏈。
- raw表:用於處理數據包的連接追蹤,通常與mangle表結合使用來實現一些特殊功能。它包含PREROUTING和OUTPUT兩個鏈。
- security表:用於強制訪問控制(MAC)的網路安全策略(註:這實際上是IPsec功能的一部分,但在許多iptables實現中並不常用或並不直接支持)。security表並不常用,而且其具體的鏈和用法可能因不同的系統或iptables版本而有所不同。
五鏈
- INPUT鏈:處理進入本機的數據包。
- OUTPUT鏈:處理從本機發出的數據包。
- FORWARD鏈:處理需要本機轉發的數據包(即本機作為路由器時)。
- PREROUTING鏈:在進行路由選擇之前修改數據包,如DNAT(Destination NAT,目的網路地址轉換)。
- POSTROUTING鏈:在進行路由選擇之後修改數據包,如SNAT(Source NAT,源網路地址轉換)。
實例
filter表實例
# 允許來自任何地方的SSH連接
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 拒絕來自192.168.1.0/24網路的所有輸入流量
iptables -A INPUT -s 192.168.1.0/24 -j DROP
# 允許本地迴環地址的流量
iptables -A INPUT -i lo -j ACCEPT
# 設置預設策略為拒絕所有輸入流量
iptables -P INPUT DROP
nat表實例
# 將到達本機的80埠的流量轉發到內部伺服器192.168.1.100的8080埠
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080
# 修改從本機發出的流量的源地址為1.2.3.4(需要內核支持及路由設置)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 1.2.3.4
mangle表實例
# 修改TTL值為64
iptables -t mangle -A PREROUTING -p tcp --tcp-flags SYN SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN SYN -j TCPMSS --set-mss 1460
# 這是一個較為複雜的例子,實際中TCPMSS的用法可能會有所不同
raw表實例
# 關閉NAT表上的連接追蹤功能,加速某些特定類型的數據包(例如ICMP)
iptables -t raw -A PREROUTING -p icmp -j NOTRACK
請註意,以上命令應在具有相應許可權(通常是root)的情況下運行,並且需要根據具體的網路環境和需求進行調整。
關於security
表,由於其實際在iptables中的使用較少,且主要與IPsec和網路安全策略配置相關,這裡不提供具體的實例。如果需要對這部分進行深入瞭解,建議查閱專門的IPsec和網路安全文檔。
另外,這些規則預設不會永久保存,系統重啟後會丟失。若需永久保存iptables規則,可以使用iptables-save
和iptables-restore
命令,或者在某些發行版中使用特定的服務或腳本來處理規則的保存和載入。
本文來自博客園,作者:dashery,轉載請註明原文鏈接:https://www.cnblogs.com/ydswin/p/18062999