前言
net.ipv4.ip_local_port_range
这个参数网上好几种说法,有的说这个值决定了同一个客户端ip可以创建的连接数,也有的说客户端ip对同一个ip+port所创建的连接数,于是萌新决定自己测试一下。
下面是萌新测试环境的系统和内核版本
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
# uname -a
Linux VM-8-14-centos 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
准备工作
首先需要在/etc/sysctl.conf
文件中修改net.ipv4.ip_local_port_range
的值。
vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 60001 60002
然后还需要执行sysctl -p
命令使其立即生效
sysctl -p
然后我们得找个能访问的端口,可是萌新自己并没有多余的两台机器测试,那就只好白嫖一下了。
先用nslookup
命令查看www.baidu.com
的地址
可以看到www.baidu.com
有个别名叫www.a.shifen.com
,www.a.shifen.com
有两个A记录
- 110.242.68.3
- 110.242.68.4
我们就用这两个IP来测试吧。
nc ip port
可以连接到这个端口上,所以我们就用nc
命令来进行测试
telnet命令也有类似的功能,用telnet命令测试也可以
相同目标IP不同目标端口
可以看到当我们执行到第三次的时候,报了一个Cannot assign requested address. 错误,这其实就是已经没有端口可以创建新的连接了。
下面我们用ss
命令看一下tcp的连接状态
可以看到分别对110.242.68.3:22和110.242.68.3:22创建了2个连接。
多个目标IP相同端口
同样,在第三次也提示出了Cannot assign requested address.
再用ss
命令看看连接状态
发现确实也根据创建了4个连接。
多个目标IP不同端口
也提示了2次Cannot assign requested address.
并且也创建了4个连接
总结
经过我们的测试,确认net.ipv4.ip_local_port_range
确实是客户端ip对同一个ip+port可以创建的连接数。
net.ipv4.ip_local_port_range
的默认值为32768 61000
,也就是说可以对同一个服务器的ip+port创建28233个连接,如果觉得不够可以改大一些,萌新看了一下萌新公司运维配置的为10000 61000
,不过需要注意的是不要改的占用正常服务监听的端口范围。