日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux-iptables命令

發布時間:2025/3/21 linux 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux-iptables命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

Linux-iptables命令

Linux-SNAT和DNAT


netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數的Linux軟件一樣,這個包過濾防火墻是免費的,它可以代替昂貴的商業防火墻解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。

規則(rules)其實就是網絡管理員預定義的條件,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理這個數據包”。

規則存儲在內核空間的信息包過濾表中,這些規則分別指定了源地址、目的地址、傳輸協議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。

當數據包與規則匹配時,iptables就根據規則所定義的方法來處理這些數據包,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火墻的主要工作就是添加、修改和刪除這些規則。

鏈(chains)是數據包傳播的路徑,每一條鏈其實就是眾多規則中的一個檢查清單,每一條鏈中可以有一條或數條規則。

當一個數據包到達一個鏈時,iptables就會從鏈中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。

如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鏈中任一條規則,iptables就會根據該鏈預先定義的默認策略來處理數據包。

語法

iptables(選項)(參數)

選項

-t<表>:指定要操縱的表;
-A:向規則鏈中添加條目;
-D:從規則鏈中刪除條目;
-i:向規則鏈中插入條目;
-R:替換規則鏈中的條目;
-L:顯示規則鏈中已有的條目;
-F:清除規則鏈中已有的條目;
-Z:清空規則鏈中的數據包計算器和字節計數器;
-N:創建新的用戶自定義規則鏈;
-P:定義規則鏈中的默認目標;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型;
-s:指定要匹配的數據包源ip地址;
-j<目標>:指定要跳轉的目標;
-i<網絡接口>:指定數據包進入本機的網絡接口;
-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。

iptables命令選項輸入順序

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-sIP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動作

四張表

raw:高級功能,如:網址過濾。
mangle:數據包修改(QOS),用于實現服務質量。
nat:地址轉換,用于網關路由器。
filter:包過濾,用于防火墻規則。

我們現在用的比較多個功能有3個:
1.filter 定義允許或者不允許的
2.nat 定義地址轉換的
3.mangle功能:修改報文原數據

五條鏈

INPUT鏈:處理輸入數據包。
OUTPUT鏈:處理輸出數據包。
PORWARD鏈:處理轉發數據包。
PREROUTING鏈:用于目標地址轉換(DNAT)。
POSTOUTING鏈:用于源地址轉換(SNAT)。

這是NetFilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。

  • 對于filter來講一般只能做在3個鏈上:INPUT ,FORWARD ,OUTPUT
  • 對于nat來講一般也只能做在3個鏈上:PREROUTING ,OUTPUT ,POSTROUTING
  • 而mangle則是5個鏈都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

動作

accept:接收數據包。

DROP:丟棄數據包。

REDIRECT:重定向、映射、透明代理。 與DROP基本一樣,區別在于它除了阻塞包之外, 還向發送者返回錯誤信息。

SNAT:源地址轉換,即改變數據包的源地址

DNAT:目標地址轉換,即改變數據包的目的地址

MASQUERADE:IP偽裝(NAT),用于ADSL。即是常說的NAT技術,MASQUERADE只能用于ADSL等撥號上網的IP偽裝,也就是主機的IP是由ISP分配動態的;如果主機的IP地址是靜態固定的,就要使用SNAT

LOG:日志記錄,將符合規則的數據包的相關信息記錄在日志中,以便管理員的分析和排錯

iptables命令格式

iptables過濾條件

iptables傳輸數據包的過程

① 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去。
② 如果數據包就是進入本機的,它就會沿著圖向下移動,到達INPUT鏈。數據包到了INPUT鏈后,任何進程都會收到它。本機上運行的程序可以發送數據包,這些數據包會經過OUTPUT鏈,然后到達POSTROUTING鏈輸出。
③ 如果數據包是要轉發出去的,且內核允許轉發,數據包就會如圖所示向右移動,經過FORWARD鏈,然后到達POSTROUTING鏈輸出。

實例

清除已有iptables規則

iptables -F iptables -X iptables -Z

開放指定的端口

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允許本地回環接口(即運行本機訪問本機) iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允許已建立的或相關連的通行 iptables -A OUTPUT -j ACCEPT #允許所有本機向外的訪問 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允許訪問22端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允許訪問80端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允許ftp服務的21端口 iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允許FTP服務的20端口 iptables -A INPUT -j reject #禁止其他未允許的規則訪問 iptables -A FORWARD -j REJECT #禁止其他未允許的規則訪問

屏蔽IP

iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽單個IP的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整個段即從123.0.0.1到123.255.255.254的命令 iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即從123.45.0.1到123.45.255.254的命令 iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即從123.45.6.1到123.45.6.254的命令

項目實操

使用xshell或者secucreCRT等外部訪問 10.45.7.198的2121端口,實際是訪問容器192.168.123.221的22端口,可簡單的理解為從外訪問里。

iptables -t nat -A PREROUTING -p tcp -d 10.45.7.198 --dport 2121-j DNAT --to-destination 192.168.123.221:22

容器的地址為172.25.243.103, 和 10.45.7.198的地址不通,但是172.25.243.103和10.45.7.197是通的,10.45.7.197和10.45.7.198是通的, 所以如果172.25.243.103想訪問10.45.7.198可以加以下規則,可簡單的理解為從里面訪問外面

iptables -t nat -A POSTROUTING -s 172.25.243.103 -o eth0 -j SNAT --to 10.45.7.197

刪除的話,將A換成D 即可,其余保持不變。


查看已添加的iptables規則

iptables -L -n -v

這好像查不到我在nat表增加的規則呢…..坑逼

iptables -t nat -nL

iptables -L命令還可以查看nat表和mangle表的內容哦

iptables -L -t nat cat /proc/net/ip_conntrack | less iptables -F -t nat (清除NAT表) iptables --list 查看過濾表 (沒查到nat表中的...

刪除已添加的iptables規則

將所有iptables以序號標記顯示,執行:

iptables -L -n --line-numbers

比如要刪除INPUT里序號為8的規則,執行:

iptables -D INPUT 8

查看 nat表的規則

[root@entel1 ~]# iptables -t nat -L -n --line-numbers Chain PREROUTING (policy ACCEPT) num target prot opt source destination 1 DNAT tcp -- 0.0.0.0/0 10.45.7.197 tcp dpt:22013 to:172.25.243.13:22 2 DNAT tcp -- 0.0.0.0/0 10.45.7.197 tcp dpt:22023 to:172.25.243.23:22 3 DNAT tcp -- 0.0.0.0/0 10.45.7.197 tcp dpt:22033 to:172.25.243.33:22 4 DNAT tcp -- 0.0.0.0/0 10.45.7.197 tcp dpt:22043 to:172.25.243.43:22 ...........Chain INPUT (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain POSTROUTING (policy ACCEPT) num target prot opt source destination Chain DOCKER (0 references) num target prot opt source destination

詳細介紹請看:
http://www.linuxso.com/linuxpeixun/10332.html

總結

以上是生活随笔為你收集整理的Linux-iptables命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。