iptables命令及封IP


命令:

iptables [ -t 表名] 命令選項 [鏈名] [條件匹配] [-j 處理動作或跳轉]

ACCEPT: 允許數據包通過。
DROP    : 直接丟棄數據包,不給任何回應信息,這時候客戶端會感覺自己的請求泥牛入海了,過了超時時間才會有反應。
REJECT: 拒絕數據包通過,必要時會給數據發送端一個響應的信息,客戶端剛請求就會收到拒絕的信息。
SNAT     : 源地址轉換,解決內網用戶用同一個公網地址上網的問題。
MASQUERADE:是SNAT的一種特殊形式,適用於動態的、臨時會變的ip上。
DNAT    :  目標地址轉換。
REDIRECT:在本機做端口映射。
LOG:在/var/log/messages文件中記錄日志信息,然后將數據包傳遞給下一條規則,也就是說除了記錄以外不對數據包做任何其他操作,仍然讓下一條規則去匹配
一般不使用REJECT(拒絕)行為.REJECT會帶來安全隱患

規則表:
1. filter表——三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾數據包 內核模塊:iptables_filter.
1. nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用於網絡地址轉換(IP、端口) 內核模塊:iptable_nat
1. Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改數據包的服務類型、TTL、並且可以配置路由實現QOS內核模塊:iptable_mangle(別看這個表這么麻煩,咱們設置策略時幾乎都不會用到它)
1. Raw表——兩個鏈:OUTPUT、PREROUTING
作用:決定數據包是否被狀態跟蹤機制處理 內核模塊:iptable_raw
(這個是REHL4沒有的,不過不用怕,用的不多)

規則鏈:
1. INPUT——進來的數據包應用此規則鏈中的策略
1. OUTPUT——外出的數據包應用此規則鏈中的策略
1. FORWARD——轉發數據包時應用此規則鏈中的策略
1. PREROUTING——對數據包作路由選擇前應用此鏈中的規則
(記住!所有的數據包進來的時侯都先由這個鏈處理)
1. POSTROUTING——對數據包作路由選擇后應用此鏈中的規則
(所有的數據包出來的時侯都先由這個鏈處理)

一、封單個IP

1、封鎖單個ip:  iptables -I INPUT -s IP -j DROP       #-I 指插入表第一列

    [root@node1 ~]# iptables -I INPUT -s 192.168.1.11 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  192.168.1.11         anywhere

2、解封單個ip:iptables -D INPUT -s IP -d IP -j ACCEPT

    [root@node1 ~]# iptables -D INPUT -s 192.168.1.11 -j DROP  # 解封IP: 192.168.1.11   #-D  刪除
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination

二、封IP段

1、封IP段: 從123.0.0.1到123.255.255.254的命令

    [root@node1 ~]# iptables -I INPUT -s 123.0.0.0/8 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
     
    DROP       all  --  123.0.0.0/8          anywhere

2、封IP段: 從123.45.0.1到123.45.255.254的命令

    [root@node1 ~]# iptables -I INPUT -s 123.45.0.0/16 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  123.45.0.0/16        anywhere
    DROP       all  --  123.0.0.0/8          anywhere

3、封IP段:從123.45.6.1到123.45.6.254的命令是

    [root@node1 ~]# iptables -I INPUT -s 123.45.6.0/24 -j DROP
    [root@node1 ~]# iptables -L
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    DROP       all  --  123.45.6.0/24        anywhere
    DROP       all  --  123.45.0.0/16        anywhere
    DROP       all  --  123.0.0.0/8          anywhere

三、全部清理

[root@node1 ~]# iptables -F

四、查詢

    [root@node1 ~]# iptables -L INPUT
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination

target:代表進行的動作,ACCEPT 是放行,REJECT 是拒絕,DROP 則是丟棄數據包。
port:代表使用的協議,主要有 tcp、udp 和 icmp 三種。
opt:額外的選項說明。
source:規則針對的來源 IP。
destination:規則針對的目標 IP。

五、刪除某一條規則

[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
[root@localhost ~]# iptables -L OUTPUT
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
[root@localhost ~]# iptables -L OUTPUT -n --line-number
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68
2    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp spt:3306 state ESTABLISHED
[root@localhost ~]# iptables -D OUTPUT 3
[root@localhost ~]# iptables -L OUTPUT -n --line-number
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:68
2    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53

 六、端口映射

1、本機端口轉發

iptables -t nat -A PREROUTING -p tcp -d 192.21.131.81 --dport 80 -j DNAT --to-destination :8081
iptables -t nat -A POSTROUTING -j MASQUERADE
解釋一下以上命令:
-t nat :指定操作的表是 NAT 表。
-A PREROUTING :表示將規則添加到 PREROUTING 鏈中,即在數據包進入路由前執行。
-p tcp :指定數據包協議為 TCP。
-d 172.21.131.81 :指定目標 IP 地址為 172.21.131.81--dport 80 :指定目標端口為 80 端口。
-j DNAT :表示對符合條件的數據包進行目標地址轉換。
--to-destination :8081 :將目標 IP 地址轉換為本地的 8081 端口。
以上規則將在 PREROUTING 鏈中對源主機發送到 172.21.131.81 的所有流量進行轉發。

-t nat :指定操作的表是 NAT 表。
-A POSTROUTING :表示將規則添加到 POSTROUTING 鏈中,即在數據包離開路由后執行。
-j MASQUERADE :表示對數據包進行源地址轉換,實現 NAT 功能。
以上規則將在 POSTROUTING 鏈中進行源地址轉換,確保返回的數據包正確路由回源主機。

驗證端口轉發
完成以上配置后,源主機上的 192.21.131.81:80 端口的流量將被轉發到本地的 8081 端口。
將在 PREROUTING 鏈中對源主機發送到 172.21.131.81 的所有流量進行轉發,並在 POSTROUTING 鏈中進行源地址轉換,確保返回的數據包正確路由回源主機。

2、將192.21.131.81的80端口的所有流量轉發到192.21.131.99機器的80端口上

在源主機(172.21.131.81)上添加 iptables 規則
在源主機上執行以下命令,添加 iptables 規則進行端口轉發:

iptables -t nat -A PREROUTING -p tcp -d 192.21.131.81 --dport 80 -j DNAT --to-destination 192.21.131.99:80
iptables -t nat -A POSTROUTING -j MASQUERADE
以上規則將在 PREROUTING 鏈中對源主機發送到 192.21.131.81 的所有流量進行轉發,並在 POSTROUTING 鏈中進行源地址轉換,確保返回的數據包正確路由回源主機。

請注意,這些規則僅在源主機上設置即可完成端口轉發。目標主機不需要進行任何額外的設置。

 


  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM