本發明專利技術涉及日志系統技術領域,尤其涉及一種基于Linux的Nat日志記錄方法與裝置,所述方法包括:A.數據報文到達網卡,并進入內核防火墻;B.數據報文到達第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后執行步驟C,否則直接執行步驟C;C.數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后執行步驟D,否則直接執行步驟D;D.內核防火墻將數據報文通過Netlink發送到用戶層。本發明專利技術減少了數據的拷貝,以及系統調用的次數,提高了日志系統性能,使系統更加快速、準確,足夠處理大流量的Nat環境需求。
【技術實現步驟摘要】
一種基于Linux的Nat日志記錄方法與裝置
本專利技術涉及日志系統
,尤其涉及一種基于Linux的Nat日志記錄方法與裝置。
技術介紹
基于Linux的Nat服務器,一般使用Netfilter來實現其Nat功能,根據Netfilter的五個鉤子和三個表的工作模式,在Nat服務器下要記錄日志,一般會記錄一個數據報文經過Netfilter的Nat模塊作地址轉換前后的信息,并輸出到用戶層以使應用程序能接收并作特定用途。Nat日志系統的數據流如下:1.數據報文到達網卡;2.數據報文進入Netfilter;3.進行Nat前記錄一次信息;4.進行Nat后記錄一次信息;4.數據報文離開Netfilter;5.應用程序接收兩次信息并處理?,F有的基于Linux的Nat日志系統,一般使用iptables規則配合printk把數據包信息輸出到用戶層的應用程序。如圖1所示,工作流程如下(以SNat為例):1)在Netfilter的FORWARD鉤子的mangle表處設置一個規則,修改數據包的TOS屬性;2)在Netfilter的FORWARD鉤子的filter表處設置一個規則,記錄經過的數據包信息并輸出到用戶層;3)插入一個Netfilter處理模塊在POSTROUTING最后位置,判斷數據包的TOS屬性,如符合則記錄此數據包信息并輸出到用戶層;4)用戶層程序接收到一前一后的數據包信息,處理并發送到遠端syslog日志服務器?,F有的Nat日志系統是使用printk輸出信息到用戶層的,printk由于效率低下,性能欠佳,所以此系統會占用過多的CPU,處理不了大流量的Nat環境。
技術實現思路
本專利技術實施例提供一種基于Linux的Nat日志記錄,旨在解決現有技術中日志記錄數據拷貝多,數據流經路程長,系統占用過多CPU的問題。本專利技術實施例是這樣實現的,一種基于Linux的Nat日志記錄方法,所述方法包括:A.數據報文到達網卡,并進入內核防火墻;B.數據報文到達第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后執行步驟C,否則直接執行步驟C;C.數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后執行步驟D,否則直接執行步驟D;D.內核防火墻將數據報文通過Netlink發送到用戶層。本專利技術實施例還提供一種基于Linux的Nat日志記錄裝置,所述裝置包括:數據報文入口單元,用于數據報文到達網卡,并進入內核防火墻;DNat記錄判斷單元,用于數據報文到達第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后發送執行指令到SNat記錄判斷單元,否則直接發送執行指令到SNat記錄判斷單元;SNat記錄判斷單元,用于數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后發送執行指令到數據報文發送單元,否則直接發送執行指令到數據報文發送單元;數據報文發送單元,用于內核防火墻將數據報文通過Netlink發送到用戶層。本專利技術在數據報文進入防火墻后,分別進行DNat記錄和SNat記錄,通過傳輸接口記錄數據報文,使用Netlink傳輸信息到用戶層,減少了數據的拷貝,以及系統調用的次數,縮短了數據流經的路程,提高了日志系統性能,使系統更加快速、準確,足夠處理大流量的Nat環境需求。附圖說明圖1表示本專利技術實施例提供的現有技術工作原理圖;圖2表示本專利技術實施例提供的一種基于Linux的Nat日志記錄方法流程圖;圖3表示本專利技術實施例提供的一種基于Linux的Nat日志記錄方法流程圖;圖4表示本專利技術實施例提供的一種基于Linux的Nat日志記錄方法流程圖;圖5表示本專利技術實施例提供的基于Linux的Nat日志系統的整體結構圖;圖6表示本專利技術實施例提供的一種基于Linux的Nat日志記錄裝置結構圖。具體實施方式為了使本專利技術的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本專利技術進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本專利技術,并不用于限定本專利技術。圖2示出了本專利技術實施例提供的一種基于Linux的Nat日志記錄方法流程圖,詳述如下:在步驟S101中,數據報文到達網卡,并進入內核防火墻;在步驟S102中,數據報文到達第一檢測點;在步驟S103中,判斷是否需要做DNat記錄,是則執行步驟S104,否則執行步驟S105;在步驟S104中,對數據報文做DNat記錄,并通過傳輸接口記錄,繼續執行步驟S105;在步驟S105中,數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則執行步驟S106,否則執行步驟S107;在步驟S106中,對數據報文做SNat記錄,并通過傳輸接口記錄,繼續執行步驟S107;在步驟S107中,內核防火墻將數據報文通過Netlink發送到用戶層。在本專利技術實施例中,Netfilter防火墻的五個鉤子分別為PREROUTING、LOCAL-IN、FORWARD、LOCAL-OUT、POSTROUTING,本例中的第一檢測點與第二檢測點分別為PREROUTING和POSTROUTING,分別實現Dnat(DestinationNetworkAddressTranslation,目的地址轉換)功能和Snat(sourcenetworkaddresstranslation,源地址目標轉換)功能,并且通過nf_log_packet接口記錄數據報文,最后通過Netfilter防火墻把兩次記錄的數據報文信息,通過Netlink發送到用戶層。使用Netlink傳輸數據報文不會經過任何中間環節,直接從內核傳輸到用戶的程序中。圖3示出了本專利技術實施例提供的一種基于Linux的Nat日志記錄方法流程圖,詳述如下:在步驟S201中,數據報文到達網卡,并進入內核防火墻;在步驟S202中,數據報文進入第一檢測點之前,判斷是否需要做DNat記錄,是則執行步驟S203,否則執行步驟S204;在步驟S203中,對數據報文做DNat記錄,并通過傳輸接口記錄,繼續步驟S204;在步驟S204中,數據報文進入第一檢測點;在步驟S205中,數據報文離開第一檢測點,判斷是否需要做DNat記錄,是則執行步驟S206,否則執行步驟S207;在步驟S206中,對數據報文做DNat記錄,并通過傳輸接口記錄,繼續步驟S207;在步驟S207中,數據報文進入第二檢測點之前,判斷是否需要做SNat記錄,是則執行步驟S208,否則執行步驟S209;在步驟S208中,對數據報文做SNat記錄,并通過傳輸接口記錄,繼續步驟S209;在步驟S209中,數據報文進入第二檢測點,繼續步驟S210;在步驟S210中,數據報文離開第二檢測點,判斷是否需要做SNat記錄,是則執行步驟S211,否則執行步驟S212;在步驟S211中,對數據報文做SNat記錄,并通過傳輸接口記錄,繼續步驟S212;在步驟S212中,內核防火墻將數據報文通過Netlink發送到用戶層。在本專利技術實施例中,一般的Nat服務器要么提供SNat服務,要么提供DNat服務,本實施例中,將Nat日志兩個配成一對,DNat前后組成本文檔來自技高網...

【技術保護點】
一種基于Linux的Nat日志記錄方法,其特征在于,所述方法包括:A.數據報文到達網卡,并進入內核防火墻;B.數據報文到達第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后執行步驟C,否則直接執行步驟C;C.數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后執行步驟D,否則直接執行步驟D;D.內核防火墻將數據報文通過Netlink發送到用戶層。
【技術特征摘要】
1.一種基于Linux的Nat日志記錄方法,其特征在于,所述方法包括:A.數據報文到達網卡,并進入內核防火墻;B.數據報文到達第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后執行步驟C,否則直接執行步驟C;C.數據報文進入第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后執行步驟D,否則直接執行步驟D;D.內核防火墻將數據報文通過Netlink發送到用戶層;其中,所述步驟B具體包括:數據報文進入第一檢測點之前,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后數據報文進入第一檢測點,否則數據報文直接進入第一檢測點;數據報文離開第一檢測點,判斷是否需要做DNat記錄,是則對所述數據報文做DNat記錄,并通過傳輸接口記錄后執行步驟C,否則直接執行步驟C;其中,所述步驟C具體包括:數據報文進入第二檢測點之前,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后數據報文進入第二檢測點,否則所述數據報文直接進入第二檢測點;數據報文離開第二檢測點,判斷是否需要做SNat記錄,是則對所述數據報文做SNat記錄,并通過傳輸接口記錄后執行步驟D,否則直接執行步驟D。2.如權利要求1所述的方法,其特征在于,所述步驟C之后還包括:用戶層日志記錄模塊收到數據報文之后,將所述數據報文放進Nat內存池;線程池從Nat內存池獲取所述數據報文,處理并發送到遠端日志服務器。3.一種基于Linux的Nat日志記錄裝置,其特征在于,所述裝置包括:數據報文入口單元,用于數據報文到達網卡,并進入內核防火墻;DNat記錄判斷單元,用于數據報文到達第一檢測點,判斷是否需要做DNat記錄,是...
【專利技術屬性】
技術研發人員:梁潤強,曾憲力,李坤祥,黃衍博,
申請(專利權)人:廣東睿江科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。