優化 tcp/ip 設定 (kuann 版本)

vi /etc/sysctl.conf
#使用vi指令編輯sysctl文件設定檔
 
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
  
# Controls IP packet forwarding
#設定ip封包轉發
net.ipv4.ip_forward = 0
#打開核心的封包轉遞 (IP forward) 功能,0 代表沒有啟動, 1 代表啟動了
 
# Controls source route verification
#設定來源路由驗證
net.ipv4.conf.default.rp_filter = 1
#開啟ipv4反向路徑過濾
 
# Do not accept source routing
#不接受來源路由
net.ipv4.conf.default.accept_source_route = 0
#處理ipv4無來源路由的封包
 
# Controls the System Request debugging functionality of the kernel
#設定在kernl中的系統要求除錯功能
kernel.sysrq = 0
#使用 SysRq 組合鍵安全重啟 Linux 系統,透過 sysrq-trigger 觸發 SysRq 事件,以 SysRq 組合鍵取代 Ctrl + Alt + Backspace 重新啟動 X server
 
# Controls whether core dumps will append the PID to the core filename.
#設定核心dumps將會附加到核心檔案名稱中的程序ID(PID)
# Useful for debugging multi-threaded applications.
#有用的多執行緒功能除錯
kernel.core_uses_pid = 1
# core_uses_pid可以控制core文件的文件名中是否添加pid作為擴展。
#文件內容為1,表示添加pid作為擴展名,生成的core文件格式為core.xxxx;為0則表示生成的core文件同一命名為core。
 
# Controls the use of TCP syncookies
#設定使用TCP syncookies,SYN cookie 是一種用於阻止 SYN flood 攻擊的技術,允許伺服器當 SYN 隊列被填滿時避免丟棄連接。
#相反,伺服器會表現得像 SYN 隊列擴大了一樣。伺服器會返回適當的 SYN+ACK 響應,但會丟棄 SYN 隊列條目。
#如果伺服器接收到客戶端隨後的ACK響應,伺服器能夠使用編碼在 TCP 序號內的信息重構 SYN 隊列條目。
net.ipv4.tcp_syncookies = 1
#抵禦SYN攻擊
# Disable netfilter on bridges.
#關閉橋接上的網路過濾
net.bridge.bridge-nf-call-ip6tables = 0
#設定ipv6的iptables橋接的網路過濾
net.bridge.bridge-nf-call-iptables = 0
#設定iptables的橋接網路過濾
net.bridge.bridge-nf-call-arptables = 0
#設定過濾arp封包,防止別的機器對自己進行arp欺騙,又能防止本機病毒或錯誤程序向其他機器發起arp攻擊。
# Controls the default maxmimum size of a mesage queue
#設定預設最大的訊息佇列大小
kernel.msgmnb = 65536
#控制預設傳送訊息中的佇列大小,MSGMNB 會影響佇列的大小
# MSGMNB 應該增加至 65535
# Controls the maximum size of a message, in bytes
#設定最大的訊息值,以位元表示
kernel.msgmax = 65536
# MSGMAX 會影響佇列中可傳送之訊息的大小
# MSGMAX 應該變更為 64 KB (亦即 65535 個位元組)
# Controls the maximum shared segment size, in bytes
#設定最大的共享分段值,以位元表示
kernel.shmmax = 68719476736
#從 Shared Memory Limits 的第一個區段開始,SHMMAX 與 SHMALL 是需要查看的參數。
#SHMMAX 是 Linux 系統上共用記憶體區段的大小上限,而 SHMALL 是系統上共用記憶體頁面的配置上限。
#建議將 SHMMAX 值設為等於系統上的實體記憶體數量。
#然而,x86 系統的最低需求是 268435456 (256 MB),而在 64 位元的系統中,則為 1073741824 (1 GB)。
# Controls the maximum number of shared memory segments, in pages
#設定最大的共享記憶體分段在分頁上
kernel.shmall = 4294967296
# SHMALL 預設會設為 8 GB (8388608 KB = 8 GB)。
#如果您的實體記憶體數量大於此值,且將提供給 DB2 使用,則此參數增加至您電腦大約 90% 的實體記憶體。
#如果您的電腦系統上有 16 GB 的記憶體主要用於 DB2,則 SHMALL 應設為 3774873
#(16 GB 的 90% 是 14.4 GB;14.4 GB 再除以 4 KB,這是基本分頁大小)。
#ipcs 輸出已將 SHMALL 轉換成 KB。核心程式需要此值作為分頁數。
#如果您未使用預設 SHMALL 設定,則必須另外增加 SHMALL 設定 4 GB。
#快速通訊管理程式 (FCM) 的其他緩衝區或通道需要如此增加記憶體。
# Use TCP syncookies when needed
#使用tcp syncookies
net.ipv4.tcp_synack_retries=3
#降低ipv4的tcp synack重試次數
net.ipv4.tcp_syn_retries=3
#降低ipv4的tcp syn重試次數
net.ipv4.tcp_max_syn_backlog=2048
#設定ipv4的tcp 最大syn_backlog長度到2048
#虛擬檔案 tcp_synack_retries 顯示或設定 Linux 核心在回應 SYN 要求時會嘗試多少次重新發送初始 SYN,ACK 封包後才決定放棄。#這是所謂的三段交握 (threeway handshake) 的第二個步驟。即是說系統會嘗試多少次去建立由遠端啟始的 TCP 連線。
#tcp_synack_retries 的值必須為正整數,並不能超過 255。
#因為每一次重新發送封包都會耗費約 30 至 40 秒去等待才決定嘗試下一次重新發送或決定放棄。
#tcp_synack_retries 的預設值為 5,即每一個連線要在約 180 秒 (3 分鐘) 後才確定逾時。
# Enable TCP window scaling
net.ipv4.tcp_window_scaling = 1
#支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設置該數值為1
  
# Increase TCP max buffer size
#增加tcp 最大記憶體緩衝值
net.core.rmem_max = 16777216
#設定接收網路核心記憶體的最大值
net.core.wmem_max = 16777216
#設定發送網路核心記憶體的最大值
# Increase Linux autotuning TCP buffer limits
#增加linux 自動調諧tcp 記憶體緩衝限制
net.ipv4.tcp_rmem = 4096 87380 16777216
#設定TCP讀buffer記憶體,可參考的優化值: 32768  436600  873200
net.ipv4.tcp_wmem = 4096 65536 16777216
#設定TCP寫buffer記憶體,可參考的優化值: 8192  436600  873200
# Increase number of ports available
#增加可用的port數量
net.ipv4.tcp_fin_timeout = 30
#修改系統預設的 TIMEOUT 時間
net.ipv4.tcp_keepalive_time = 300
#這個參數表示當keepalive 啟用時,tcp 發送keepalive 消息的頻度,預設是2小時。
#如果把他設置的小一些,可以更快的清理不正確連接。
net.ipv4.tcp_tw_reuse = 1
#允許將 TIME-WAIT sockets 重新用於新的 TCP 連接,預設為 0,表示關閉 reuse 功能
net.ipv4.tcp_tw_recycle = 1
#表示開啟 TCP 連接中 TIME-WAIT sockets 的快速回收,預設為 0
net.ipv4.ip_local_port_range = 5000 65000
#系統連接伺服器時,會以 5000 和 65000 之間 (包括 5000 和 65000) 作為連線的源連接埠。

留言

這個網誌中的熱門文章

c語言-關於#define用法

PHP教學 - 資料型態(Data Type) - 上

CMD常用網管指令