开发者社区> 问答> 正文

Linux连接高端口提示“Cannot assign requested address”


问题描述: ssh 可以正常连接服务器,ping也正常。但是执行telnet 高端口被提示Cannot assign requested address。其他测试主机可以正常连接。





解决过程:


进入被连接端内部,执行ss  统计,显示27017端口连接数有28248





Linux对外的随机分配端口是由一定限制的,理论上单机对外的端口最大值为65535,除去一些保留端口和被占用端口外,也应该在6W左右,但实际上单机建立对外连接时,默认不超过28232个连接。


执行以下命令:


cat  /proc/sys/net/ipv4/ip_local_port_range



输出结果为:


32768   61000



这就是Linux随机分配端口的范围,如果在该范围内有被占用的端口,那么连接数肯定小于28232。
如果想更改这个范围,可以执行以下命令:


# echo "10000 65535" > /proc/sys/net/ipv4/ip_local_port_range



永久生效:


# vim /etc/sysctl.conf
net.ipv4.ip_local_ports_range= 10000 65535
sysctl -p




如果是想保留某个端口不被随机分配占用,最好的做法是将服务监听的端口以逗号分隔全部添加到ip_local_reserved_ports中,TCP/IP协议栈从ip_local_port_range中随机选取源端口时,会排除ip_local_reserved_ports中定义的端口:

$ cat /proc/sys/net/ipv4/ip_local_port_range
32000 61000
$ cat /proc/sys/net/ipv4/ip_local_reserved_ports
8080,9148



展开
收起
云栖徒骇 2016-03-21 10:47:30 22194 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载