當前位置:首頁 » 操作系統 » linux連接限制

linux連接限制

發布時間: 2022-10-02 08:08:54

『壹』 linux下ssh連接限制的問題

問題1:如果你開通的ssh許可權是針對用戶而不是針對組開通的,那默認就是一個賬號一個人登陸啦!問題2:據我所知,ssh目前好像還沒有限速的功能,只是用於給用戶遠程操控的,安全方面可以通過服務本身和系統內部的定義來控制。限速度方面,一般都是用ftp來做的。

『貳』 Linux系統支持的最大TCP連接是多少

這個文件是一個綜合性的問題。首先就tcp鏈接來說吧,主要體現在tcp的socket鏈接數上面,65535 應該是足夠用了,但是tcp連接11種狀態,不同不同狀態有可能有會話保持什麼的。這些暫且不說,現在tcp連接的還有Linux下文件的最大打開數量,流量帶寬等等。
優化:
1.ulimit -a 查看最大文件打開數量,然後修改
2.減少tcp長連接,或其他狀態鏈接,可以改下會話保持時間,主動自動關閉(不建議),重復使用tcp等。這個是在tcp鏈接數來進行考慮。
3.增多IP,增多埠,一個IP是這么多,那可以在一台Linux上綁定多個IP來增加鏈接數。

『叄』 linux伺服器如何設置遠程連接的時間限制

#vim /etc/profile

exportTMOUT=300

若300秒內無輸入,則退出當前bash這個可以?

試了一下,遠程和本機bash均退出了(偶使用的是vmware虛擬機做的)。暫時定為這個勝出吧!

但是這個是在客戶端無發送請求包保持連接的情況下,若強制在伺服器斷開連接呢?得到這樣的答案:

寫個腳本到2個小時就kill掉

弄腳本 幹掉.....

#fuser-k/dev/pts/*

在屬性-連接-保持活動狀態中,將會話期間保持活動狀態前面框里,去掉這個勾選,就ok了!

『肆』 linux系統,如何設置最大網路連接數量

linux設置最大網路連接數量有很多中方法:
1、直接用ulimit命令
ulimit -n 8192

2、修改/proc/sys/net/ipv4/ip_conntrack_max為8192
或者是/etc/sysctl.conf中加入ip_conntrack_max=8192

3、請首先編輯/usr/include/bits/types.h 文件,改變__FD_SETSIZE 的值:
#define _ _FD_SETSIZE 8192

下一步,使用這個命令增加內核文件描述符的限制:
# echo 8192 > /proc/sys/fs/file-max

最後,增加進程文件描述符的限制,在即將編譯squid 的同一個shell 里執行:
sh# ulimit -Hn 8192

『伍』 linux如何禁止某個ip連接伺服器

/etc/hosts.allow和/etc/hosts.deny兩個文件是控制遠程訪問設置的,通過設置這個文件可以允許或者拒絕某個ip或者ip段的客戶訪問linux的某項服務。
如果請求訪問的主機名或IP不包含在/etc/hosts.allow中,那麼tcpd進程就檢查/etc/hosts.deny。看請求訪問的主機名或IP有沒有包含在hosts.deny文件中。如果包含,那麼訪問就被拒絕;如果既不包含在/etc/hosts.allow中,又不包含在/etc/hosts.deny中,那麼此訪問也被允許。

文件的格式為:<daemon list>:<client list>[:<option>:<option>:...]
daemon list:服務進程名列表,如telnet的服務進程名為in.telnetd
client list:訪問控制的客戶端列表,可以寫域名、主機名或網段,如.python.org或者192.168.1.
option:可選選項,這里可以是某些命令,也可以是指定的日誌文件

文件示例:hosts.deny文件
in.telnetd:.python.org
vsftpd:192.168.0.
sshd:192.168.0.0/255.255.255.0
第一行vpser.net表示,禁止python.org這個域里的主機允許訪問TELNET服務,注意前面的那個點(.)。
第二行表示,禁止192.168.0這個網段的用戶允許訪問FTP服務,注意0後面的點(.)。
第三行表示,禁止192.168.0這個網段的用戶允許訪問SSH服務,注意這里不能寫為192.168.0.0/24。在CISCO路由器種這兩中寫法是等同的。

『陸』 linux同一伺服器下會出現埠受限嗎

會的。理論上,linux和windows可用的埠個數為65535個Linux和windows動態埠的數量都存在限制,linux系統(如red hat)的動態埠限制為1024-4999,windows 2003 SOCKET 埠數量默認5000,正常情況下,這些埠數量是夠用的,但是如果伺服器是用來提供web服務或者用來對其他伺服器加壓,這時候,伺服器會產生大量的TCP連接,由於每個TCP客戶端連接都要佔用一個唯一的本地埠號,如果現有的TCP客戶端連接已將所有的本地埠號占滿,則此時就無法為新的TCP客戶端連接分配一個本地埠號了,因此系統會在這種情況下在connect()調用中返回失敗,並提示錯誤消息:"Can't。

『柒』 Linux支持最大的SOCKET連接數量是多少

基本無限制,百萬級是小事,千萬也可以。看你內存了
在Linux下Epoll模式默認只支持1024個連接,所以我們要修改一下Linux系統可打開的最大描述符限制。

最簡單的修改方法你 可以用ulimit -n 3000 把允許最大開打的描述符修改為3000,但是怎麼做,只對當前命令終端打開的應用程序有效。
要一勞永逸的,還是得修改/etc/security/limits.conf配置文件。
vim /etc/security/limits.conf
在文件中增加
* soft nofile 3000
* hard nofile 20000
保存,重啟系統,就生效了。
解釋一下上面的命令: * 表示該配置對所有用戶均有效
soft 表示 可以超過後面的配置數
hard 表示 最大不能超過後面的配置數
nofile表示 我們這個配置是對描述符的配置

『捌』 linux下tcp通信怎麼限制客戶端的連接數量

listen的backlog參數指定的是已經三次握手完成,達到了established狀態但是等待accept的隊列的容量。當這個容量超過上限的時候伺服器端便不處理客戶端的三次握手了。這個隊列的容量當然不是樓主所說的並發連接數。
但是lisen的再後一道程序便是accept了。如果你想要的是在tcp並發連接數量超過上限的時候伺服器不再處理了三次握手那麼只有兩種辦法:
1.關閉listen的socket
2.自己修改tcp協議棧的實現,當然這個就比較麻煩了。

用iptables防火牆來限制tcp連接,
如下,限制用戶的tcp連接數為50

iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT

『玖』 linux下共享內存允許的連接數有限制嗎

對於64位進程,同一進程可連接最多268435456個共享內存段;
對於32位進程,同一進程可連接最多11個共享內存段,除非使用擴展的shmat;
上述限制對於64位應用不會帶來麻煩,因為可供連接的數量已經足夠大了;但對於32位應用,卻很容易帶來意外的問題,因為最大的連接數量只有11個。
下面的常式test02.c演示了這個問題,為了精簡代碼,它反復連接的是同一個共享內存對象;實際上,無論所連接的共享內存對象是否相同,該限制制約的是連接次數:
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define MAX_ATTACH_NUM 15
void main(int argc, char* argv[])
{
key_t mem_key;
long mem_id;
void* mem_addr[MAX_ATTACH_NUM];
int i;
if ( ( mem_key = ftok("/tmp/mykeyfile", 1) ) == (key_t)(-1) ) {
printf("Failed to generate shared memory access key, ERRNO=%d\n",
errno);
goto MOD_EXIT;
}
if ( ( mem_id = shmget(mem_key, 256, IPC_CREAT) ) == (-1) ) {
printf("Failed to obtain shared memory ID, ERRNO=%d\n", errno);
goto MOD_EXIT;
}
for ( i=1; i<=MAX_ATTACH_NUM; i++ ) {
if ( ( mem_addr[i] = (void *)shmat(mem_id, 0, 0) ) == (void *)(-1) )
printf("Failed to attach shared memory, times [%02d], errno:%d\n", i,
errno);
else
printf("Successfully attached shared memory, times [%02d]\n", i);
}
MOD_EXIT:
shmctl(mem_id, IPC_RMID, NULL);
}

『拾』 請問linux怎麼增大socket連接上限

1、修改用戶進程可打開文件數限制
在Linux平台上,無論編寫客戶端程序還是服務端程序,在進行高並發TCP連接處理時,
最高的並發數量都要受到系統對用戶單一進程同時可打開文件數量的限制(這是因為系統
為每個TCP連接都要創建一個socket句柄,每個socket句柄同時也是一個文件句柄)。
可使用ulimit命令查看系統允許當前用戶進程打開的文件數限制:
[speng@as4 ~]$ ulimit -n
1024
這表示當前用戶的每個進程最多允許同時打開1024個文件,這1024個文件中還得除去
每個進程必然打開的標准輸入,標准輸出,標准錯誤,伺服器監聽 socket,
進程間通訊的unix域socket等文件,那麼剩下的可用於客戶端socket連接的文件數就
只有大概1024-10=1014個左右。也就是說預設情況下,基於Linux的通訊程序最多允許
同時1014個TCP並發連接。
對於想支持更高數量的TCP並發連接的通訊處理程序,就必須修改Linux對當前用戶的
進程同時打開的文件數量的軟限制(soft limit)和硬限制(hardlimit)。其中軟限制
是指Linux在當前系統能夠承受的范圍內進一步限制用戶同時打開的文件數;硬限制
則是根據系統硬體資源狀況(主要是系統內存)計算出來的系統最多可同時打開的文件數量。
通常軟限制小於或等於硬限制。

修改上述限制的最簡單的辦法就是使用ulimit命令:
[speng@as4 ~]$ ulimit -n
上述命令中,在中指定要設置的單一進程允許打開的最大文件數。如果系統回顯
類似於「Operation notpermitted」之類的話,說明上述限制修改失敗,實際上是
因為在中指定的數值超過了Linux系統對該用戶打開文件數的軟限制或硬限制。
因此,就需要修改Linux系統對用戶的關於打開文件數的軟限制和硬限制。

第一步,修改/etc/security/limits.conf文件,在文件中添加如下行:
speng soft nofile 10240
speng hard nofile 10240
其中speng指定了要修改哪個用戶的打開文件數限制,可用』*'號表示修改所有用戶的限制;
soft或hard指定要修改軟限制還是硬限制;10240則指定了想要修改的新的限制值,
即最大打開文件數(請注意軟限制值要小於或等於硬限制)。修改完後保存文件。

第二步,修改/etc/pam.d/login文件,在文件中添加如下行:
session required /lib/security/pam_limits.so
這是告訴Linux在用戶完成系統登錄後,應該調用pam_limits.so模塊來設置系統對
該用戶可使用的各種資源數量的最大限制(包括用戶可打開的最大文件數限制),
而pam_limits.so模塊就會從/etc/security/limits.conf文件中讀取配置來設置這些限制值。
修改完後保存此文件。

第三步,查看Linux系統級的最大打開文件數限制,使用如下命令:
[speng@as4 ~]$ cat /proc/sys/fs/file-max
12158
這表明這台Linux系統最多允許同時打開(即包含所有用戶打開文件數總和)12158個文件,
是Linux系統級硬限制,所有用戶級的打開文件數限制都不應超過這個數值。通常這個系統級
硬限制是Linux系統在啟動時根據系統硬體資源狀況計算出來的最佳的最大同時打開文件數限制,
如果沒有特殊需要,不應該修改此限制,除非想為用戶級打開文件數限制設置超過此限制的值。

修改此硬限制的方法是修改/etc/rc.local腳本,在腳本中添加如下行:
echo 22158 > /proc/sys/fs/file-max
這是讓Linux在啟動完成後強行將系統級打開文件數硬限制設置為22158。修改完後保存此文件。

完成上述步驟後重啟系統,一般情況下就可以將Linux系統對指定用戶的單一進程允許同時
打開的最大文件數限制設為指定的數值。如果重啟後用 ulimit-n命令查看用戶可打開文件數限制
仍然低於上述步驟中設置的最大值,這可能是因為在用戶登錄腳本/etc/profile中使用ulimit -n命令
已經將用戶可同時打開的文件數做了限制。由於通過ulimit-n修改系統對用戶可同時打開文件的
最大數限制時,新修改的值只能小於或等於上次 ulimit-n設置的值,因此想用此命令增大這個
限制值是不可能的。
所以,如果有上述問題存在,就只能去打開/etc/profile腳本文件,
在文件中查找是否使用了ulimit-n限制了用戶可同時打開的最大文件數量,如果找到,
則刪除這行命令,或者將其設置的值改為合適的值,然後保存文件,用戶退出並重新登錄系統即可。
通過上述步驟,就為支持高並發TCP連接處理的通訊處理程序解除關於打開文件數量方面的系統限制。
2、修改網路內核對TCP連接的有關限制
在Linux上編寫支持高並發TCP連接的客戶端通訊處理程序時,有時會發現盡管已經解除了系統
對用戶同時打開文件數的限制,但仍會出現並發TCP連接數增加到一定數量時,再也無法成功
建立新的TCP連接的現象。出現這種現在的原因有多種。

第一種原因可能是因為Linux網路內核對本地埠號范圍有限制。此時,進一步分析為什麼無法
建立TCP連接,會發現問題出在connect()調用返回失敗,查看系統錯誤提示消息是「Can』t assign requestedaddress」。同時,如果在此時用tcpmp工具監視網路,會發現根本沒有TCP連接時客戶端
發SYN包的網路流量。這些情況說明問題在於本地Linux系統內核中有限制。
其實,問題的根本原因
在於Linux內核的TCP/IP協議實現模塊對系統中所有的客戶端TCP連接對應的本地埠號的范圍
進行了限制(例如,內核限制本地埠號的范圍為1024~32768之間)。當系統中某一時刻同時
存在太多的TCP客戶端連接時,由於每個TCP客戶端連接都要佔用一個唯一的本地埠號
(此埠號在系統的本地埠號范圍限制中),如果現有的TCP客戶端連接已將所有的本地埠號占滿,
則此時就無法為新的TCP客戶端連接分配一個本地埠號了,因此系統會在這種情況下在connect()
調用中返回失敗,並將錯誤提示消息設為「Can』t assignrequested address」。
有關這些控制
邏輯可以查看Linux內核源代碼,以linux2.6內核為例,可以查看tcp_ipv4.c文件中如下函數:
static int tcp_v4_hash_connect(struct sock *sk)
請注意上述函數中對變數sysctl_local_port_range的訪問控制。變數sysctl_local_port_range
的初始化則是在tcp.c文件中的如下函數中設置:
void __init tcp_init(void)
內核編譯時默認設置的本地埠號范圍可能太小,因此需要修改此本地埠范圍限制。
第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:
net.ipv4.ip_local_port_range = 1024 65000
這表明將系統對本地埠范圍限制設置為1024~65000之間。請注意,本地埠范圍的最小值
必須大於或等於1024;而埠范圍的最大值則應小於或等於65535。修改完後保存此文件。
第二步,執行sysctl命令:
[speng@as4 ~]$ sysctl -p
如果系統沒有錯誤提示,就表明新的本地埠范圍設置成功。如果按上述埠范圍進行設置,
則理論上單獨一個進程最多可以同時建立60000多個TCP客戶端連接。

第二種無法建立TCP連接的原因可能是因為Linux網路內核的IP_TABLE防火牆對最大跟蹤的TCP
連接數有限制。此時程序會表現為在 connect()調用中阻塞,如同死機,如果用tcpmp工具監視網路,
也會發現根本沒有TCP連接時客戶端發SYN包的網路流量。由於 IP_TABLE防火牆在內核中會對
每個TCP連接的狀態進行跟蹤,跟蹤信息將會放在位於內核內存中的conntrackdatabase中,
這個資料庫的大小有限,當系統中存在過多的TCP連接時,資料庫容量不足,IP_TABLE無法為
新的TCP連接建立跟蹤信息,於是表現為在connect()調用中阻塞。此時就必須修改內核對最大跟蹤
的TCP連接數的限制,方法同修改內核對本地埠號范圍的限制是類似的:

第一步,修改/etc/sysctl.conf文件,在文件中添加如下行:
net.ipv4.ip_conntrack_max = 10240
這表明將系統對最大跟蹤的TCP連接數限制設置為10240。請注意,此限制值要盡量小,
以節省對內核內存的佔用。

第二步,執行sysctl命令:
[speng@as4 ~]$ sysctl -p
如果系統沒有錯誤提示,就表明系統對新的最大跟蹤的TCP連接數限制修改成功。
如果按上述參數進行設置,則理論上單獨一個進程最多可以同時建立10000多個TCP客戶端連接。

3、使用支持高並發網路I/O的編程技術
在Linux上編寫高並發TCP連接應用程序時,必須使用合適的網路I/O技術和I/O事件分派機制。
可用的I/O技術有同步I/O,非阻塞式同步I/O(也稱反應式I/O),以及非同步I/O。在高TCP並發的情形下,
如果使用同步I/O,這會嚴重阻塞程序的運轉,除非為每個TCP連接的I/O創建一個線程。

但是,過多的線程又會因系統對線程的調度造成巨大開銷。因此,在高TCP並發的情形下使用
同步 I/O是不可取的,這時可以考慮使用非阻塞式同步I/O或非同步I/O。非阻塞式同步I/O的技術包括使用select(),poll(),epoll等機制。非同步I/O的技術就是使用AIO。

從I/O事件分派機制來看,使用select()是不合適的,因為它所支持的並發連接數有限(通常在1024個以內)。
如果考慮性能,poll()也是不合適的,盡管它可以支持的較高的TCP並發數,但是由於其採用
「輪詢」機制,當並發數較高時,其運行效率相當低,並可能存在I/O事件分派不均,導致部分TCP
連接上的I/O出現「飢餓」現象。而如果使用epoll或AIO,則沒有上述問題(早期Linux內核的AIO技術
實現是通過在內核中為每個 I/O請求創建一個線程來實現的,這種實現機制在高並發TCP連接的情形下
使用其實也有嚴重的性能問題。但在最新的Linux內核中,AIO的實現已經得到改進)。

綜上所述,在開發支持高並發TCP連接的Linux應用程序時,應盡量使用epoll或AIO技術來實現並發的
TCP連接上的I/O控制,這將為提升程序對高並發TCP連接的支持提供有效的I/O保證。

內核參數sysctl.conf的優化

/etc/sysctl.conf 是用來控制linux網路的配置文件,對於依賴網路的程序(如web伺服器和cache伺服器)
非常重要,RHEL默認提供的最好調整。

推薦配置(把原/etc/sysctl.conf內容清掉,把下面內容復制進去):
net.ipv4.ip_local_port_range = 1024 65536
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save=1
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

這個配置參考於cache伺服器varnish的推薦配置和SunOne 伺服器系統優化的推薦配置。

varnish調優推薦配置的地址為:http://varnish.projects.linpro.no/wiki/Performance

不過varnish推薦的配置是有問題的,實際運行表明「net.ipv4.tcp_fin_timeout = 3」的配置
會導致頁面經常打不開;並且當網友使用的是IE6瀏覽器時,訪問網站一段時間後,所有網頁都會
打不開,重啟瀏覽器後正常。可能是國外的網速快吧,我們國情決定需要
調整「net.ipv4.tcp_fin_timeout = 10」,在10s的情況下,一切正常(實際運行結論)。

修改完畢後,執行:
/sbin/sysctl -p /etc/sysctl.conf
/sbin/sysctl -w net.ipv4.route.flush=1

命令生效。為了保險起見,也可以reboot系統。

調整文件數:
linux系統優化完網路必須調高系統允許打開的文件數才能支持大的並發,默認1024是遠遠不夠的。

執行命令:
Shell代碼
echo ulimit -HSn 65536 >> /etc/rc.local
echo ulimit -HSn 65536 >>/root/.bash_profile
ulimit -HSn 65536

熱點內容
美團商家新增的技術伺服器是什麼 發布:2024-04-27 12:12:35 瀏覽:342
得到腳本 發布:2024-04-27 12:06:25 瀏覽:935
三星手機鎖屏忘記密碼了怎麼辦 發布:2024-04-27 12:05:41 瀏覽:518
python基礎語言 發布:2024-04-27 11:54:40 瀏覽:83
ioshttp伺服器搭建 發布:2024-04-27 11:40:26 瀏覽:912
忘記密碼如何強制刷機vivo 發布:2024-04-27 11:28:40 瀏覽:384
c語言讀取指定行 發布:2024-04-27 11:28:30 瀏覽:51
c語言中a10什麼意思 發布:2024-04-27 10:45:43 瀏覽:58
物聯網中ftp是什麼意思 發布:2024-04-27 10:41:17 瀏覽:986
銀行密碼保護在哪裡 發布:2024-04-27 10:25:23 瀏覽:189