欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹

 更新時間:2024年02月22日 14:57:08   作者:可以交個朋友  
這篇文章主要介紹了linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹,需要的朋友可以參考下

iptables規(guī)則

下圖為數(shù)據(jù)包到達linux主機網(wǎng)卡后,內(nèi)核如何處理數(shù)據(jù)包的大致流程
image.png

什么是規(guī)則

規(guī)則是管理員對數(shù)據(jù)包制定的一種觸發(fā)機制,即當數(shù)據(jù)包達到某種條件,就執(zhí)行指定的動作
條件:可以是數(shù)據(jù)包源地址、目的地址、協(xié)議等
動作:可以是拒絕、接受、丟棄等;詳細介紹見下表

動作說明
ACCEPT將封包放行,進行完此處理動作后,將不再比對其它規(guī)則,直接跳往下一個規(guī)則鏈(nat:postrouting)
REJECT攔阻該封包,并傳送封包通知對方,可以傳送的封包有幾個選擇:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(這個封包會要求對方關閉聯(lián)機),進行完此處理動作后,將不再比對其它規(guī)則,直接 中斷過濾程序。
DROP丟棄封包不予處理,進行完此處理動作后,將不再比對其它規(guī)則,直接中斷過濾程序。
MASQUERADE改寫封包來源 IP 為防火墻 NIC IP,可以指定 port 對應的范圍,進行完此處理動作后,直接跳往下一個規(guī)則煉(mangle:postrouting)。這個功能與 SNAT 略有不同,當進行 IP 偽裝時,不需指定要偽裝成哪個 IP,IP 會從網(wǎng)卡直接讀取,當使用撥接連線時,IP 通常是由 ISP 公司的 DHCP 服務器指派的,這個時候 MASQUERADE 特別有用。
SNAT改寫封包來源 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應的范圍,進行完此處理動作后,將直接跳往下一個規(guī)則煉(mangle:postrouting)。
DNAT改寫封包目的地 IP 為某特定 IP 或 IP 范圍,可以指定 port 對應的范圍,進行完此處理動作后,將會直接跳往下一個規(guī)則煉(filter:input 或 filter:forward)。
MARK將封包標上某個代號,以便提供作為后續(xù)過濾的條件判斷依據(jù),進行完此處理動作后,將會繼續(xù)比對其它規(guī)則。
RETURN結(jié)束在目前規(guī)則煉中的過濾程序,返回主規(guī)則煉繼續(xù)過濾,如果把自訂規(guī)則煉看成是一個子程序,那么這個動作,就相當于提早結(jié)束子程序并返回到主程序中。

使用iptables命令寫入規(guī)則示例:

iptables -t filter -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 -m multiport --dports 443,80 -j ACCEPT
#-t:操作那個表
#-A:在表末追加規(guī)則;-I為表首插入規(guī)則、-D為刪除規(guī)則
#INPUT:鏈名稱;該規(guī)則在那條鏈上生效
#-j:數(shù)據(jù)包處理動作;比如接受、拒絕等

整條命令解釋:允許經(jīng)過本機網(wǎng)卡eth0,訪問協(xié)議是TCP,源地址是192.168.1.0/24 段的數(shù)據(jù)包訪問本地端口是80和443的服務

什么是表

表主要用來存放具體的防火墻規(guī)則,而規(guī)則具有功能性,比如修改數(shù)據(jù)包源/目的ip、拒絕來自某個網(wǎng)段的數(shù)據(jù)包訪問本機等;所以我們可以對規(guī)則進行分類,不同的功能存入不同的表

  • raw表:主要用于決定數(shù)據(jù)包是否被狀態(tài)跟蹤機制處理
  • mangle表:主要用于拆解報文修改數(shù)據(jù)包的 IP 頭信息
  • nat表:主要用于修改數(shù)據(jù)包的源地址和目的地址、端口號等信息(實現(xiàn)網(wǎng)絡地址轉(zhuǎn)換,如SNAT、DNAT、MASQUERADE、REDIRECT)。
  • filter表:主要用于對過濾流入和流出的數(shù)據(jù)包,根據(jù)具體的規(guī)則決定是否放行該數(shù)據(jù)包
  • security 表:最不常用的表,用在 SELinux 上;用于強制訪問控制(MAC)網(wǎng)絡規(guī)則,由Linux安全模塊(如SELinux)實現(xiàn)
    其中nat表和filter表最常用

什么是鏈

上文提到表主要存放具體的規(guī)則,但是規(guī)則什么時候生效呢?比如客戶端訪問VIP,數(shù)據(jù)包到達本機后必須先用DNAT(網(wǎng)絡地址轉(zhuǎn)換)將vip轉(zhuǎn)換成實際的后端實例ip,然后才能路由判斷,因為后端實例可能有多個且分布在不同主機,直接用vip進行路由判斷肯定是不行的。所以規(guī)則有生效時機,根據(jù)生效時機可以分為:

  • PREROUTING:在數(shù)據(jù)包到達防火墻時,進行路由判斷之前執(zhí)行的規(guī)則
  • INPUT:路由判斷之后確定數(shù)據(jù)包流入本機,應用其規(guī)則
  • FORWARD:路由判斷之后確定數(shù)據(jù)包要轉(zhuǎn)發(fā)給其他主機,應用其規(guī)則;linux主機需要開啟ip_forward功能才支持轉(zhuǎn)發(fā),在/etc/sysctl.conf文件中配置參數(shù)net.ipv4.ip_forward=1
  • OUTPUT:本機應用向外發(fā)出數(shù)據(jù)包時,應用其規(guī)則
  • POSTROUTING:在數(shù)據(jù)包離開防火墻時進行路由判斷之后執(zhí)行的規(guī)則
    在每條鏈中,規(guī)則按照從上到下的順序進行匹配,當一個數(shù)據(jù)包與某個規(guī)則匹配成功后,就會按照該規(guī)則的動作進行處理,并且后續(xù)的規(guī)則將不再被考慮。

表、鏈、規(guī)則三者的關系是什么

表是區(qū)分相同鏈的上下順序,規(guī)則在每條鏈中的上下順序確定規(guī)則執(zhí)行順序:

  • 如果規(guī)則來自不同表,通過表的優(yōu)先級確定鏈的優(yōu)先級: 比如完整的PREROUTING鏈中有來自raw表、mangle表、nat標的PREROUTING鏈規(guī)則,通過表優(yōu)先級 (raw>mangle>nat>filter>security) 區(qū)分優(yōu)先級。所以一個報文發(fā)送到某臺虛擬機后,被虛擬機網(wǎng)卡接收,會進入的虛擬機網(wǎng)絡協(xié)議棧處理,先經(jīng)過PREROUTING鏈處理,具體來說先走raw表的PREROUTING規(guī)則、再走mangle表、最后在走nat表PREROUTING規(guī)則。
  • 如果規(guī)則來自同一個表,則按規(guī)則插入表的順序自上而下。

數(shù)據(jù)報文進/出節(jié)點經(jīng)過哪些規(guī)則

  • 對于客戶端來說,發(fā)送報文過程
    先進入OUTPUT鏈處理(raw、mangle、nat、filter、security表對應的PREROUTING規(guī)則依次匹配),如果沒有被攔截則根據(jù)路由選擇出網(wǎng)口,再進入POSTROUTING鏈處理(mangle、nat表對應的POSTROUTING規(guī)則依次匹配),最后從網(wǎng)卡出去

  • 對于服務端來說,發(fā)送報文過程
    先進入PREROUTING鏈處理(raw、mangle、nat表對應的PREROUTING規(guī)則依次匹配),根據(jù)路由判斷數(shù)據(jù)報文發(fā)給本機,報文進入INPUT鏈處理(mangle、nat、filter、security表對應的INPUT規(guī)則依次匹配),如果沒有被攔截則報文被應用程序處理

  • 對于轉(zhuǎn)發(fā)場景,發(fā)送報文過程
    先進入PREROUTING鏈處理(raw、mangle、nat表對應的PREROUTING規(guī)則依次匹配),根據(jù)路由判斷數(shù)據(jù)報文不是發(fā)給本機,報文進入FORWARD鏈處理(mangle、filter、security表對應的FORWARD規(guī)則依次匹配),如果沒有被攔截則進入POSTROUTING鏈處理(mangle、nat表對應的POSTROUTING規(guī)則依次匹配),最后從網(wǎng)卡出去

    *補充:轉(zhuǎn)發(fā)場景需要Linux開啟轉(zhuǎn)發(fā)功能,否則數(shù)據(jù)報文進入FORWARD鏈直接丟棄;臨時開啟執(zhí)行命令sysctl net.ipv4.ip_forward=1或者echo "1" >/proc/sys/net/ipv4/ip_forward;永久生效需要修改/etc/sysctl.conf,增加內(nèi)容net.ipv4.ip_forward = 1保存,再執(zhí)行命令:sysctl -p

NAT(網(wǎng)絡地址轉(zhuǎn)換)介紹

NAT應用最廣的場景就是解決局域網(wǎng)內(nèi)設備訪問互聯(lián)網(wǎng)的問題。
SNAT(源地址轉(zhuǎn)換) 主要用于修改數(shù)據(jù)包的源IP和源端口,一般在nat表的PREROUTING鏈中增加規(guī)則:局域網(wǎng)內(nèi)所有設備要上外網(wǎng),如果每個設備都分配一個公網(wǎng)ip成本太大,可以在路由器出口分配一個公網(wǎng)ip,局域網(wǎng)內(nèi)的設備訪問外網(wǎng)時統(tǒng)一走路由器出口,路由器此時需要做兩件事:

  • 數(shù)據(jù)包從出口出去之前,將數(shù)據(jù)包的源地址和源端口改成公網(wǎng)ip和隨機端口
  • 同時將轉(zhuǎn)換關系記錄保存,響應數(shù)據(jù)包返回時根據(jù)記錄轉(zhuǎn)發(fā)給局域網(wǎng)內(nèi)的設備

SNAT示例:

iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 88 -j SNAT --to-source 122.9.3.47:88
# -j:值為SNAT需要靜態(tài)指定修改后的值,值為MASQUERADE表示動態(tài)修改源地址為出口網(wǎng)卡地址
# --to-source:將數(shù)據(jù)包的源地址轉(zhuǎn)換成指定值
# 整條命令解釋:將發(fā)給192.168.1.11:88的數(shù)據(jù)包,其源地址改為122.9.3.47

DNAT(目的地址轉(zhuǎn)換) 主要用于修改數(shù)據(jù)包目的地址和端口路由器,一般在nat表中的PREROUTING鏈中增加規(guī)則:接收到數(shù)據(jù)包后,將目的地址和目的端口根據(jù)轉(zhuǎn)換規(guī)則修改為實際的內(nèi)網(wǎng)地址,規(guī)則需要提前在路由器上手動添加,如下圖:將訪問公網(wǎng)ip 100...155:10022的數(shù)據(jù)包轉(zhuǎn)發(fā)給內(nèi)網(wǎng)設備172.30.100.136:22
image.png
DNAT示例:

iptables -t nat -A PREROUTING -d 202.12.10.100 -p tcp --dport 20022 -j DNAT --to-destination 192.168.10.11:22
# --to-destination:修改數(shù)據(jù)包的目的地址
# 整條命令解釋:將發(fā)給202.12.10.100:20022的數(shù)據(jù)包,其目的地址改為192.168.10.11:22

注意:linux內(nèi)核使用CONNTRACK表(連接跟蹤)記錄NAT轉(zhuǎn)換關系,一個連接僅在首次經(jīng)過iptables鏈條時會計算nat表,一旦conntrack記錄下這次的改寫關系,后續(xù)無論是去程包還是回程包都是依據(jù)conntrack表進行改寫關系的處理,不會再重復執(zhí)行nat表中的DNAT/SNAT規(guī)則

以上就是linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹的詳細內(nèi)容,更多關于linux網(wǎng)絡知識詳解:iptables 規(guī)則介紹的資料請關注腳本之家其它相關文章!

相關文章

  • Centos 6.5環(huán)境實現(xiàn)本地局域網(wǎng)搭建YUM的方法【基于HTTP】

    Centos 6.5環(huán)境實現(xiàn)本地局域網(wǎng)搭建YUM的方法【基于HTTP】

    這篇文章主要介紹了Centos 6.5環(huán)境實現(xiàn)本地局域網(wǎng)搭建YUM的方法,較為詳細的分析了CentOS6.5基于HTTP實現(xiàn)本地局域網(wǎng)搭建YUM的具體步驟、相關命令與操作注意事項,需要的朋友可以參考下
    2018-04-04
  • Linux 新的API signalfd、timerfd、eventfd使用說明

    Linux 新的API signalfd、timerfd、eventfd使用說明

    這篇文章主要介紹了Linux 新的API signalfd、timerfd、eventfd使用說明的相關資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • CentOS查詢軟件包的安裝位置

    CentOS查詢軟件包的安裝位置

    這篇文章主要介紹了在CentOS中使用yum -ql <軟件包名>的方式查詢軟件包的安裝位置,有需要的朋友可以參考下
    2014-09-09
  • linux expect 自動登錄交換機保存配置的方法

    linux expect 自動登錄交換機保存配置的方法

    今天小編就為大家分享一篇linux expect 自動登錄交換機保存配置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Linux性能監(jiān)控工具nmon安裝及使用教程解析

    Linux性能監(jiān)控工具nmon安裝及使用教程解析

    這篇文章主要介紹了Linux性能監(jiān)控工具nmon安裝及使用教程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Ubuntu設置國內(nèi)鏡像的全部流程

    Ubuntu設置國內(nèi)鏡像的全部流程

    Ubuntu作為廣泛使用的Linux發(fā)行版,其默認的鏡像源可能因為地理位置和網(wǎng)絡問題導致下載速度緩慢,本文將指導用戶如何根據(jù)自己所在的地理位置,選擇并設置最適合的國內(nèi)鏡像源,需要的朋友可以參考下
    2024-06-06
  • Linux下tar解壓錯誤:文件損壞與不完整問題的解決方案

    Linux下tar解壓錯誤:文件損壞與不完整問題的解決方案

    在日常的 Linux 系統(tǒng)管理中,我們經(jīng)常需要使用 tar 命令來壓縮和解壓文件,然而,有時在解壓過程中會遇到諸如“文件損壞”或“意外結(jié)束”等錯誤提示,本文將詳細分析這些問題的原因,并提供一套完整的解決方案,需要的朋友可以參考下
    2025-02-02
  • 一道題理解Linux中sort命令的多個參數(shù)

    一道題理解Linux中sort命令的多個參數(shù)

    今天小編就為大家分享一篇關于一道題理解Linux中sort命令的多個參數(shù),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Linux命令行快速技巧之定位一個文件的方法

    Linux命令行快速技巧之定位一個文件的方法

    Linux 命令行專門設計了很多非常有用的命令行工具在你的電腦上查找文件。下面我們看一下它們其中三個:ls、tree 和 find。 感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • Linux安裝Python3.8.1的教程詳解

    Linux安裝Python3.8.1的教程詳解

    這篇文章主要介紹了Linux安裝Python3.8.1的教程,本文以linux安裝python3.8版本為例給大家詳細說明,感興趣的朋友跟隨小編一起看看吧
    2020-02-02

最新評論