首页 > 系统相关 >【网络调优】Linux网络端口随机分配问题

【网络调优】Linux网络端口随机分配问题

时间:2024-06-20 17:55:45浏览次数:13  
标签:addr 端口 网络 调优 随机 Linux local port

1.Linux端口基础

1.端口号0不使用

2.端口号1-1023,系统默认只给root使用

3.端口号1024-4999由客户端程序自由分配

4.端口号5000-65535由服务器程序自由分配

2.Linux默认随机端口范围

一般Linux的默认随机端口范围是:32768 - 60999 (可以通过查看配置文件的方式来获取)

当客户端port设置为0时,Linux会为和客户端在随机范围内分配一个随机的端口号,客户端分配随机端口号实例代码:

int main initTcpSocketClient() {
    int sock_fd;
    struct sockaddr_in addr;
    socklen_t socklen;

    sock_fd = socket(AF_INET, SOCK_STREAM, 0);

    addr.sin_family = AF_INET;
    addr.sin_port = 0; // 绑定随机端口
    addr.sin_addr.s_addr = INADDR_ANY;

    socklen = sizeof(addr);
    if (bind(sock_fd, (struct sockaddr *)&addr, socklen)) {
        perror("bind error");
        return -1;
    }

    // 获取系统随机分配的端口号
    getsockname(sock_fd, (sockaddr*)&addr, &socklen);
    MONITORLOGE("initTcpSocketClient%u\n", ntohs(addr.sin_port));
    return 0;
}

2.1 修改Linux内核有关修改参数

2.1.1.通过修改配置文件的方式修改

设置端口参数的配置文件:/etc/sysctl.conf

设置Linux端口的随机范围:net.ipv4.ip_local_port_range = 60000 65535

echo "net.ipv4.ip_local_port_range = 60000 65535" >> /etc/sysctl.conf

设置Linux保留端口范围(内部服务固定的监听端口):net.ipv4.ip_local_reserved_ports = 8014,60011-60014

执行后生效配置:sysctl -p /etc/sysctl.conf

如果没有生效则reboot一下系统,即可生效

2.1.2 直接修改内存中的配置项

直接修改内存配置项的方法无需reboot系统,但是一旦reboot后当前配置即失效

1.获取当前系统的Linux端口随机范围:

cat /proc/sys/net/ipv4/ip_local_port_range

2.修改当前系统Linux端口的随机范围:

echo 13400 60800 > /proc/sys/net/ipv4/ip_local_port_range

修改完后可以再cat出来确认一下

3.获取当前系统的保留端口:

cat /proc/sys/net/ipv4/ip_local_reserved_ports

4.修改当前系统的保留端口:

echo 46555,12345 > /proc/sys/net/ipv4/ip_local_reserved_ports

3.Linux端口资源情况获取命令

1.获取当前系统中所有正在使用的server端口

netstat -tunlp

2.查看当前白名单端口情况

iptables --list

3.获取当前占用端口的进程pid号

netstat -tulnp | grep 12345 | awk '{print $7}' | cut -d'/' -f1 

4.问题经验

最近开发中遇到一个问题,在板子升级完成并重启后偶现(极低概率)系统中的一个服务的socket,bind faild的情况,因后续没有再次复现,所以通过已有的log分析,可能是因为某些client随机分配port导致正好挤占了服务所用到的port资源上,导致服务bind失败,如果是此种情况,可以考虑将目前用到的所有port口都加入到ip_local_reserved_ports中,防止后续出现port资源被Linux随机分配挤占的情况。













参考文章:https://www.cnblogs.com/levinyinyc/p/15774273.html#:~:text=设置Linux随机端口范围: net.ipv4.ip_local_port_range %3D 60000,65535 设置Linux保留端口范围(内部服务固定的监听端口): net.ipv4.ip_local_reserved_ports %3D 8014%2C60011-60014

标签:addr,端口,网络,调优,随机,Linux,local,port
From: https://www.cnblogs.com/Wangzx000/p/18259030

相关文章

  • linux重启后SSH无法启动,报/var/empty/sshd must be owned by root and not group or w
    问题:Linux上的SSH无法启动,执行/usr/sbin/sshd报 /var/empty/sshdmustbeownedbyrootandnotgrouporworld-writable。解决办法:查看发现这个目录的属主不是root,所以启动ssh报错#ls-ld/var/empty/sshd/  d——x——x——x2meifuroot1024Feb192024/var/emp......
  • Linux kernel版本升级实例
    内核版本漏洞           内核离线升级     https://elrepo.org/linux/kernel/el7/x86_64/RPMS/    1.下载内核相关的rpm包            2.安装内核源        rpm-ihvkernel*--nodeps--force  ......
  • linux可视化监控:Grafana+Prometheus+node_exporter
    原理node_exporter:它的作用主要是收集性能测试的数据,如cpu、内存磁盘网络等信息,然后将数据保存到prometheus,相当于将数据存入到数据库中;想要监控不同的内容,就使用不同的exporter,比如mysqld_exporterPrometheus:虽然说是监控平台,但是实际上是一套数据库,用于做数据存储,不能做展......
  • Linux学习笔记(一)(以Ubuntu为例)
    Linux操作命令的笔记(一)(Ubuntu)其实Linux不同发行版的基础命令区别不大。Linux命令基础格式命令通用格式:command[-options][parameter][]表示可选的意思command:命令本身-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter:[可选,非必填]命令......
  • k8s网络
     servicecidr,podcidr和配置文件之间的关系  kubeadminit--apiserver-advertise-address=10.111.40.111--image-repositoryregistry.aliyuncs.com/google_containers--kubernetes-versionv1.28.0--service-cidr=10.123.0.0/19--pod-network-cidr=10.124.0.0/19-......
  • 网络舆情引导的方法都有哪些?
    网络舆情​​​​​​​引导是一项复杂而重要的任务,它涉及到多个层面和策略。以下是一些常用的网络舆情引导方法:1.官方发布与权威解读:通过官方渠道,如新闻发布会、公告或社交媒体平台,发布准确、权威的信息,对公众关注的事件或问题进行解释和说明。这有助于消除误解,稳定公众情绪......
  • 第二篇 使用Prometheus对网络进行监控
    1、Prometheus简介        Prometheus是一款开源系统监控和报警工具,最初由SoundCloud开发,现为CNCF(CloudNativeComputingFoundation)的项目。        主要特点:                   (1)多维数据模型:Prometheus使用带有时间戳的度量数据......
  • 上下界网络流
    上下界网络流概念每条边有个流量限制\([l,r]\),要求该边流量\(f\)满足\(l\ler\ler\)无源汇上下界可行流可以强行每条边先流\(l_i\),再将将边设为\(r_i-l_i\),但是我们发现每个点的流量不平衡,于是设\(w\)为入流流量-出流流量\(w>0\)时,让\(s'\)向\(i\)连流量为......
  • 构建网络图 (JavaScript)
    前序:在工作中难免有一些千奇百怪的需求,如果你遇到构建网络图,或者学习应对未来,请看这边文章,本文以代码为主。网络图是数据可视化中实用而有效的工具,特别适用于说明复杂系统内的关系和连接。这些图表有助于理解各种背景下的结构,从社交网络到企业层级。在本教程中,我们将深入研究......
  • linux修改shell导致无法登录
    linux修改shell导致无法登录我之前在切换shell的时候执行了chsh-sbashroot结果后面就无法登录系统了,当时不知道怎么一回事,只能先放到一边了。今天没什么事,突然福至心灵,为什么不试试进到单用户模式里面修改shell呢?然后我就得到了这样的提示:chsh:PAM:Authenticationfailure......