目录
3.11 TCP连接保活(Keepalive)和本地端口范围
1、/proc目录
/proc
目录是一个特殊的虚拟文件系统,它不包含常规的文件,而是包含当前运行中的内核和进程信息- 这个目录允许用户和程序访问系统内核的很多信息,比如CPU、内存、进程等。在
/proc
目录下,每个数字命名的子目录代表一个正在运行的进程,其中包含了该进程的相关信息,比如进程ID、状态、内存使用情况等 - 此外,
/proc
还提供了一些用于配置内核参数的接口,允许用户动态地修改内核的某些行为
2、sysctl命令
sysctl
命令用于在运行时动态地修改内核参数,而无需重新启动系统。这个命令允许用户检索、设置和修改内核的运行时参数。通过sysctl
,可以查看当前系统的各种内核参数设置,并且可以进行修改
相关配置文件 | 说明 |
---|---|
/etc/sysctl.conf |
默认配置文件 |
/run/sysctl.d/*.conf |
这个目录包含了在系统引导过程中自动生成的临时文件,通常用于覆盖其他位置的配置 |
/etc/sysctl.d/*.conf |
在这个目录下,用户可以创建自定义的配置文件,每个文件包含一个或多个对内核参数的设置。这些设置会在系统启动时被加载 |
/usr/local/lib/sysctl.d/*.conf |
该目录用于存放本地安装的软件所提供的sysctl 配置文件 |
/usr/lib/sysctl.d/*.conf |
这个目录包含由软件包提供的sysctl 配置文件 |
/lib/sysctl.d/*.conf |
这个目录包含由操作系统提供的sysctl 配置文件,通常由发行版的维护者管理 |
sysctl命令用法:
(1)查看参数
sysctl -a #列出所有的内核参数及其当前值
[root@localhost ~]#sysctl -a | grep ip_forward
(2)查看特定参数
sysctl kernel.parameter_name #查看特定参数的值
[root@localhost ~]#sysctl net.ipv4.ip_forward
(3)临时修改参数值
sysctl -w parameter_name=new_value #临时修改参数的值,但重启后会恢复为默认值
(4)永久修改参数值:
通过修改/etc/sysctl.conf文件来实现永久修改参数的值,然后使用sysctl -p命令使更改生效
(5)刷新配置文件
sysctl -p #刷新配置文件
3、常见的内核参数优化
3.1 控制源路由验证
#Controls source route verification 控制源路由验证
net.ipv4.conf.default.rp_filter = 1
#这个参数设置的是反向路径过滤(Reverse Path Filtering,RPFilter)的策略。当rp_filter为1时,Linux内核会检查入站数据包的源IP地址是否与到达接口的路由表条目相匹配。如果源IP地址无法通过到达接口回溯到发送端,则数据包会被丢弃。启用此选项有助于防止IP地址欺骗攻击。
net.ipv4.ip_nonlocal_bind = 1
#这个参数允许或禁止非本地地址绑定到套接字。当ip_nonlocal_bind设置为1时,任何用户都可以将一个非本地IP地址(即不在本机接口上的IP地址)绑定到一个socket上。在某些场景下,例如负载均衡器或者需要绑定任意IP的代理服务器,可能需要开启这个选项。
net.ipv4.ip_forward = 1
#这个参数控制系统的IP转发功能。当ip_forward设置为1时,Linux内核将允许数据包在网络接口之间进行转发,这使得该主机可以作为路由器使用,允许其他设备通过它来传输数据包。这对于构建NAT环境、路由器和代理服务器等应用场景是必要的。关闭此选项则意味着主机仅处理发送给自身的数据包,不允许其成为网络中其他设备之间的通信桥梁。
#Do not accept source routing 不接受源路由
net.ipv4.conf.default.accept_source_route = 0
#这个设置禁止了IPv4协议栈接受源路由数据包。源路由允许数据包指定其在网络中传输的具体路径。由于这可能导致安全风险ÿ