nf_conntrack之解決方案

来源:http://www.cnblogs.com/tongxiaoda/archive/2017/08/23/7418699.html
-Advertisement-
Play Games

本文介紹nf_conntrack故障導致的一些問題時,我們應該如何處理。 ...


1.現象

在/var/log/message中出現以下信息

Dec  8 11:22:29 product08 kernel: nf_conntrack: table full, dropping packet.
Dec  8 11:22:29 product08 kernel: nf_conntrack: table full, dropping packet.

2.nf_conntrack是什麼?

nf_conntrack(在老版本的 Linux 內核中叫 ip_conntrack)是一個內核模塊,用於跟蹤一個連接的狀態的。連接狀態跟蹤可以供其他模塊使用,最常見的兩個使用場景是 iptables 的 nat 的 state 模塊。
iptables 的 nat 通過規則來修改目的/源地址,但光修改地址不行,我們還需要能讓回來的包能路由到最初的來源主機。這就需要藉助 nf_conntrack 來找到原來那個連接的記錄才行。
而 state 模塊則是直接使用 nf_conntrack 里記錄的連接的狀態來匹配用戶定義的相關規則。例如下麵這條 INPUT 規則用於放行 80 埠上的狀態為 NEW 的連接上的包。

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

3.解決方案

(1)先關掉iptables

/etc/init.d/iptables stop

(2)查看當前的連接數:

# grep nf_conntrack /proc/slabinfo

(3)查出目前 nf_conntrack 的排名:

$ cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

(4)優化參數

狀態跟蹤表的最大行數的設定,理論最大值 CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32)
以64G的64位操作系統為例,CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152

即時生效請執行:
sysctl –w net.netfilter.nf_conntrack_max = 524288 (16G)

其哈希表大小通常為總表的1/8,最大為1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8
同樣64G的64位操作系統,哈希最佳範圍是 262144 ~ 1048576 。

運行狀態中通過 sysctl net.netfilter.nf_conntrack_buckets 進行查看,通過文件 /sys/module/nf_conntrack/parameters/hashsize 進行設置
或者新建 /etc/modprobe.d/iptables.conf ,重新載入模塊才生效:
options nf_conntrack hashsize = 262144

還有些相關的系統參數`sysctl -a | grep nf_conntrack`可以調優(/etc/sysctl.conf ):
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.ip_conntrack_tcp_timeout_established = 3600
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

(5)iptables放行

iptables -t raw -A PREROUTING -p tcp -m multiport --dports 80,15000 -j NOTRACK
iptables -t raw -A PREROUTING -p tcp -m multiport --sports 80,15000 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m multiport --dports 80,15000 -j NOTRACK
iptables -t raw -A OUTPUT -p tcp -m multiport --sports 80,15000 -j NOTRACK

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 同時滿足多個關鍵字 grep "word1" file_name | grep "word2" | grep "word3" 2. 滿足任意關鍵字 grep -e "word1" -e "word2" -e "word3" file_name 3. 排除關鍵字 grep -v "word" f ...
  • 一、環境及安裝版本: centos6.5、Nginx1.4.7、keepalived1.3.2 虛擬IP 真是IP Nginx埠 主從分配 10.0.90.215 10.0.90.217 80 MASTER 10.0.90.215 10.0.90.218 80 BACKUP 二、Nginx安裝 分 ...
  • 運維之Linux基礎(二) 1. file 命令基期用法 2. 文件系統 Linux的文件系統結構是樹狀結構,所有的文件都在/root跟目錄下 /boot:系統啟動相關的文件, 如:內核、initrd,以及grub(bootloadser) /dev:設備文件 塊設備:隨機訪問,按數據塊進行訪問的 ...
  • 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們獲得了OTU序列的進化分析、同時計算Alpha和Beta多樣性值。 本節是最後一節,我們對物種進行分類統計,篩選高豐度結果用於進化樹展示,和其它用於R統計分析的結果生成 19. 按物種分類級別分類彙總 OTU表中最重要的 ...
  • 因為CentOS升級到7之後,發現無法使用iptables控制Linuxs的埠,因為CentOS 7使用firewalld代替了原來的iptables。下麵記錄如何使用firewalld開放Linux埠: 1、查詢某埠是否開放 2、永久開啟某埠 firewall-cmd --zone=pub ...
  • 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們的OTU獲得了物種註釋,並學習OTU表的各種操作————添加信息,格式轉換,篩選信息。 接下來我們學習對OTU序列的進化分析、同時計算Alpha和Beta多樣性值。 16. 進化樹構建 進化樹是基於多序列比對的結果,可展 ...
  • 本節課程,需要先完成《擴增子分析解讀》系列之前的操作 1質控 實驗設計 雙端序列合併 2提取barcode 質控及樣品拆分 切除擴增引物 3格式轉換 去冗餘 聚類 4去嵌合體 非細菌序列 生成代表性序列和OTU表 分析前準備 # 進入工作目錄 cd example_PE250 上一節回顧:我們學習了 ...
  • 1.1 shell解析命令行 shell讀取和執行命令時的大致操作過程如下圖: 以執行以下命令為例: echo -e "some files:" ~/i* "\nThe date:$(date +%F)\n$name's age is $((a+4))" >/tmp/a.log 假設在執行該命令前, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...