溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中iptables常用方法有哪些

發布時間:2022-02-19 09:25:24 來源:億速云 閱讀:247 作者:小新 欄目:開發技術
# Linux中iptables常用方法有哪些

## 一、iptables基礎概念

### 1.1 什么是iptables
iptables是Linux系統內置的防火墻工具,用于配置、維護和檢查IPv4數據包過濾規則表。它通過內核中的netfilter框架實現對網絡數據包的控制,能夠執行包過濾、網絡地址轉換(NAT)和數據包修改等操作。

### 1.2 iptables與netfilter的關系
- **netfilter**:Linux內核中的框架,實際執行過濾功能
- **iptables**:用戶空間工具,用于配置netfilter規則

### 1.3 四表五鏈結構
#### 四個表(table):
1. **filter表**:默認表,用于包過濾
2. **nat表**:網絡地址轉換
3. **mangle表**:修改數據包內容
4. **raw表**:決定數據包是否被狀態跟蹤

#### 五個鏈(chain):
1. **INPUT**:處理進入本機的數據包
2. **OUTPUT**:處理本機發出的數據包
3. **FORWARD**:處理轉發數據包
4. **PREROUTING**:路由前處理
5. **POSTROUTING**:路由后處理

## 二、iptables基本語法

### 2.1 命令格式
```bash
iptables [-t 表名] 命令選項 [鏈名] [規則匹配條件] [-j 目標動作]

2.2 常用命令選項

選項 說明
-A 追加規則到鏈尾
-I 插入規則到指定位置
-D 刪除指定規則
-R 替換指定規則
-L 列出規則
-F 清空鏈中規則
-N 新建用戶自定義鏈
-X 刪除用戶自定義鏈
-P 設置鏈的默認策略
-Z 計數器清零

三、常用規則配置方法

3.1 基本過濾規則

# 允許來自192.168.1.0/24的SSH連接
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

# 拒絕所有ICMP請求
iptables -A INPUT -p icmp -j DROP

# 允許本地回環接口
iptables -A INPUT -i lo -j ACCEPT

3.2 狀態檢測規則

# 允許已建立的連接和相關的連接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允許新的HTTP連接
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

3.3 端口轉發

# 將80端口轉發到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

3.4 NAT配置

# 源地址NAT(SNAT)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# 目標地址NAT(DNAT)
iptables -t nat -A PREROUTING -p tcp -d 203.0.113.1 --dport 80 -j DNAT --to-destination 192.168.1.100:80

四、實用配置案例

4.1 基本防火墻配置

# 設置默認策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允許已建立的連接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允許SSH訪問
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允許HTTP/HTTPS訪問
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允許PING
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

4.2 防止DDoS攻擊

# 限制單個IP的連接數
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j REJECT

# 限制SYN洪水攻擊
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 限制ICMP洪水
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

4.3 端口轉發服務器

# 啟用IP轉發
echo 1 > /proc/sys/net/ipv4/ip_forward

# 設置NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 轉發SSH到內部服務器
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT

五、iptables管理與維護

5.1 規則保存與恢復

# 保存規則(Ubuntu/Debian)
iptables-save > /etc/iptables.rules

# 恢復規則
iptables-restore < /etc/iptables.rules

# CentOS/RHEL保存規則
service iptables save

5.2 規則查看與調試

# 查看所有規則(帶行號)
iptables -L -n -v --line-numbers

# 查看NAT表規則
iptables -t nat -L -n -v

# 查看規則匹配統計
iptables -L -n -v

# 重置計數器
iptables -Z

5.3 日志記錄

# 創建日志鏈
iptables -N LOGGING
iptables -A INPUT -j LOGGING

# 記錄被拒絕的包
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP

六、常見問題解決

6.1 規則不生效排查步驟

  1. 檢查規則順序是否正確
  2. 確認沒有其他規則覆蓋
  3. 檢查默認策略設置
  4. 確認內核模塊已加載
  5. 檢查網絡接口名稱是否正確

6.2 連接被拒絕但規則已設置

# 檢查是否啟用了連接跟蹤
lsmod | grep conntrack

# 檢查是否有其他防火墻工具(如firewalld)沖突
systemctl status firewalld

6.3 NAT無法正常工作

# 確認IP轉發已啟用
cat /proc/sys/net/ipv4/ip_forward

# 臨時啟用IP轉發
echo 1 > /proc/sys/net/ipv4/ip_forward

# 永久啟用(在/etc/sysctl.conf中)
net.ipv4.ip_forward = 1
sysctl -p

七、進階技巧

7.1 使用自定義鏈

# 創建自定義鏈
iptables -N CUSTOM_CHN

# 將流量跳轉到自定義鏈
iptables -A INPUT -j CUSTOM_CHN

# 在自定義鏈中添加規則
iptables -A CUSTOM_CHN -s 192.168.1.100 -j DROP

7.2 基于時間的規則

# 只在工作時間(9-18點)允許SSH
iptables -A INPUT -p tcp --dport 22 -m time --timestart 09:00 --timestop 18:00 -j ACCEPT

7.3 基于MAC地址過濾

# 允許特定MAC地址訪問
iptables -A INPUT -m mac --mac-source 00:1A:2B:3C:4D:5E -j ACCEPT

八、替代方案與未來發展

8.1 nftables簡介

nftables是iptables的替代品,提供更簡潔的語法和更好的性能:

# 基本nftables規則示例
nft add table ip filter
nft add chain ip filter input { type filter hook input priority 0 \; }
nft add rule ip filter input tcp dport 22 accept

8.2 從iptables遷移到nftables

# 將iptables規則轉換為nftables
iptables-save > iptables.rules
iptables-restore-translate -f iptables.rules > nftables.rules
nft -f nftables.rules

8.3 firewalld簡介

firewalld是Red Hat開發的動態防火墻管理器,提供更高級的抽象:

# 基本firewalld命令
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

結語

iptables作為Linux系統中最強大的防火墻工具之一,雖然學習曲線較陡峭,但掌握其核心概念和常用方法后,能夠實現靈活高效的網絡流量控制。隨著nftables等新技術的出現,建議新系統可以考慮使用更現代的替代方案,但在現有環境中,iptables仍然是不可或缺的重要工具。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女