导航:首页 > 网络设置 > linux修改内核网络参数设置

linux修改内核网络参数设置

发布时间:2023-01-27 02:18:48

‘壹’ linux 使用命令修改网络参数与同通过配置文件修改参数的特点和差异

◆执行网络配置命令修改:简单、快速、效率高,适合在调试网络过程中临时使用。但这种 方式通常是直接修改目前运行内核中的网络参数,由于内核是只读性质,因此修改的网络参数无 法保存,重启系统后将失效。 ◆直接修改网络配置文件:直接在各项网络参数所对应的配置文件中进行修改,更适合在配 置服务器主机时使用。修改网络配置文件后,一般需要重新加载网络服务或重启系统,所作的修 改才会生效。

‘贰’ Linux常用内核网络参数及修改方法

在修改内核参数前,需要注意以下几点:

本文提供以下两种修改Linux实例内核参数的方法。

/proc/sys/ 目录是Linux内核在启动后生成的伪目录,其目录下的 net 文件夹中存放了当前系统中开启的所有内核参数,目录树结构与参数的完整名称相关,如 net.ipv4.tcp_tw_recycle ,它对应的文件是 /proc/sys/net/ipv4/tcp_tw_recycle 文件,文件的内容就是参数值。方法一中修改的参数值仅在当前运行中生效,系统重启后会回滚到历史值,一般用于临时性验证修改的效果。若需要永久性修改,请参见方法二。

‘叁’ 如何用命令行设置linux内核参数

Linux设置内核参数的方法

1 内核参数的查看方法
使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。
所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。

2 内核参数的的设置方法

由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。
2.1 命令设置的方式

可以用两种方法实现。
1、使用“sysctl -w 参数名=值”的方式

假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。
2、修改内核参数对应的proc文件

内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。

同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1” > /proc/sys/net/ipv4/ip_forward”。

注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。

‘肆’ 如何修改 Linux 内核配置

由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。
首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是:
kernel.shmall
=
2097152
kernel.shmmax
=
4294967295
如果系统默认的配置比这里给出的值大,就不要修改原有配置。同时在/etc/sysctl.conf文件最后,添加以下内容:
fs.file-max
=
6553600
kernel.shmmni
=
4096
kernel.sem
=
250
32000
100
128
net.ipv4.ip_local_port_range
=
1024
65000
net.core.rmem_default
=
4194304
net.core.rmem_max
=
4194304
net.core.wmem_default
=
262144
net.core.wmem_max
=
262144
这里的“fs.file-max
=
6553600”其实是由“fs.file-max
=
512
*
PROCESSES”得到的,我们指定PROCESSES的值为12800,即为“fs.file-max
=512
*12800”。
sysctl.conf文件修改完毕后,接着执行“sysctl
-p”使设置生效。
[root@localhost
~]#
sysctl
-p
常用的内核参数的含义如下。
kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系,这里设定的为4GB,即“4294967295/1024/1024/1024=4G”。
kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit.
kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4kB,也就是4096字节。
fs.file-max:表示文件句柄的最大数量。文件句柄表示在Linux系统中可以打开的文件数量。
ip_local_port_range:表示端口的范围,为指定的内容。
kernel.sem:表示设置的信号量,这4个参数内容大小固定。
net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)。
net.core.rmem_max
:表示接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)。
net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)。

‘伍’ Linux配置网络参数之IP地址、子网掩码、网关地址,DNS

修改网卡命令规则 (eth0、eth1、eth2……)

打开grub内核引导程序,在……quiet 后面添加:

让网卡命名规则生效

nmcli命令删除错误网卡命名

nmcli命令添加网卡命名

解析: nmcli connection 添加 类型 以太网设备 网卡设备名为eth0 nmcli命令的命名为eth0

修改IP地址、子网掩码、网关地址、DNS

解析:nmcli connection 修改 网卡名 ipv4.方法 手工配置 ipv4.地址192.168.4.7/24 ipv4.网关 192.168.4.254 每次开机自动启用以上所有参数

查看网卡配置文件

查看网关地址信息

‘陆’ Linux如何在系统运行过程中修改内核参数

RedHat向管理员提供了非常好的方法,使我们可以在系统运行时更改内核参数,而不需要重新引导系统。这是通过/PRoc虚拟文件系统实现的。/proc/sys目录下存放着大多数的内核参数,并且设计成可以在系统运行的同时进行更改。下面我们以打开内核的 ip转发功能为例说明在系统运行时修改内核参数的两种方法。IP转发是指允许系统对来源和目的地都不是本机的数据包通过网络,RedHat默认屏蔽此功能,在 需要用本机作为路由器、NAT等情况下需要开启此功能。 方法一:修改/proc下内核参数文件内容 直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件内容: # cat /proc/sys/net/ipv4/ip_forward 该文件默认值0是禁止ip转发,修改为1即开启ip转发功能。修改命令如下: # echo 1 >/proc/sys/net/ipv4/ip_forward 修改过后就马上生效,即内核已经打开ip转发功能。但如果系统重启后则又恢复为默认值0,如果想永久打开需要通过修改/etc/sysctl.conf文件的内容来实现。 方法二.修改/etc/sysctl.conf文件 默认sysctl.conf文件中有一个变量是 net.ipv4.ip_forward = 0 将后面值改为1,然后保存文件。因为每次系统启动时初始化脚本/etc/rc.d/rc.sysinit会读取/etc/sysctl.conf文件的内容,所以修改后每次系统启动时都会开启ip转发功能。但只是修改sysctl文件不会马上生效,如果想使修改马上生效可以执行下面的命令: # sysctl –p 在修改其他内核参数时可以向/etc/sysctl.conf文件中添加相应变量即可,下面介绍/proc/sys下内核文件与配置文件 sysctl.conf中变量的对应关系,由于可以修改的内核参数都在/proc/sys目录下,所以sysctl.conf的变量名省略了目录的前面部 分(/proc/sys)。 将/proc/sys中的文件转换成sysctl中的变量依据下面两个简单的规则: 1.去掉前面部分/proc/sys 2.将文件名中的斜杠变为点 这两条规则可以将/proc/sys中的任一文件名转换成sysctl中的变量名。 例如: /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward /proc/sys/kernel/hostname =》 kernel.hostname 可以使用下面命令查询所有可修改的变量名 # sysctl –a 下面例举几个简单的内核参数: 1./proc/sys/kernel/shmmax 该文件指定内核所允许的最大共享内存段的大小。 2./proc/sys/kernel/threads-max 该文件指定内核所能使用的线程的最大数目。 3./proc/sys/kernel/hostname 该文件允许您配置网络主机名。

‘柒’ RedHatLinux修改内核参数,不是很懂,求指点,谢谢

/proc 里面的文件都不是真的,他是一个特殊的文件系统。
修改这些设置我记得是在 /etc/ 里面有一个配置,设置好后用一个软件来刷新这个内核配置。
如果自己直接修改的话,最好是 echo xxxxx > /proc/xxx/xxx/xxx 的方式修改。

‘捌’ 一般优化linux的内核,需要优化什么参数

首先要知道一点所有的TCP/IP的参数修改是临时的,因为它们都位于/PROC/SYS/NET目录下,如果想使参数长期保存,可以通过编辑/ETC/SYSCTL.CONF文件来实现,这里不做详细说明,只针对Linux的TCPIP内核参数优化列举相关参数:

1、为自动调优定义socket使用的内存

2、默认的TCP数据接收窗口大小(字节)

3、最大的TCP数据接收窗口

4、默认的TCP发送窗口大小

5、最大的TCP数据发送窗口

6、在每个网络接口接收数据包的速率比内核处理这些包速率快时,允许送到队列的数据包最大数目

7、定义了系统中每一个端口最大的监听队列长度

8、探测消息未获得相应时,重发该消息的间隔时间

9、在认定tcp连接失效之前,最多发送多少个keepalive探测消息等。

‘玖’ linux 内核参数优化

一、Sysctl命令用来配置与显示在/proc/sys目录中的内核参数.如果想使参数长期保存,可以通过编辑/etc/sysctl.conf文件来实现。

命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] –a

常用参数的意义:
-w 临时改变某个指定参数的值,如
# sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p从指定的文件加载系统参数,默认从/etc/sysctl.conf 文件中加载,如:

以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了
# service network restart
命令,所设置的值即会丢失,如果想永久保留配置,可以修改/etc/sysctl.conf文件,将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1

二、linux内核参数调整:linux 内核参数调整有两种方式

方法一:修改/proc下内核参数文件内容,不能使用编辑器来修改内核参数文件,理由是由于内核随时可能更改这些文件中的任意一个,另外,这些内核参数文件都是虚拟文件,实际中不存在,因此不能使用编辑器进行编辑,而是使用echo命令,然后从命令行将输出重定向至 /proc 下所选定的文件中。如:将 timeout_timewait 参数设置为30秒:

参数修改后立即生效,但是重启系统后,该参数又恢复成默认值。因此,想永久更改内核参数,需要修改/etc/sysctl.conf文件

方法二.修改/etc/sysctl.conf文件。检查sysctl.conf文件,如果已经包含需要修改的参数,则修改该参数的值,如果没有需要修改的参数,在sysctl.conf文件中添加参数。如:
net.ipv4.tcp_fin_timeout=30
保存退出后,可以重启机器使参数生效,如果想使参数马上生效,也可以执行如下命令:

三、sysctl.conf 文件中参数设置及说明
proc/sys/net/core/wmem_max
最大socket写buffer,可参考的优化值:873200

/proc/sys/net/core/rmem_max
最大socket读buffer,可参考的优化值:873200
/proc/sys/net/ipv4/tcp_wmem
TCP写buffer,可参考的优化值: 8192 436600 873200

/proc/sys/net/ipv4/tcp_rmem
TCP读buffer,可参考的优化值: 32768 436600 873200

/proc/sys/net/ipv4/tcp_mem
同样有3个值,意思是:
net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力.
net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段.
net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket.
上述内存单位是页,而不是字节.可参考的优化值是:786432 1048576 1572864

/proc/sys/net/core/netdev_max_backlog
进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000

/proc/sys/net/core/somaxconn
listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256.

/proc/sys/net/core/optmem_max
socket buffer的最大初始化值,默认10K

/proc/sys/net/ipv4/tcp_max_syn_backlog
进入SYN包的最大请求队列.默认1024.对重负载服务器,可调整到2048

/proc/sys/net/ipv4/tcp_retries2
TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,尽早释放内核资源.

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
这3个参数与TCP KeepAlive有关.默认值是:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大. 可调整到:
/proc/sys/net/ipv4/tcp_keepalive_time 1800
/proc/sys/net/ipv4/tcp_keepalive_intvl 30
/proc/sys/net/ipv4/tcp_keepalive_probes 3

/proc/sys/net/ipv4/ip_local_port_range
指定端口范围的一个配置,默认是32768 61000,已够大.
net.ipv4.tcp_syncookies = 1
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_keepalive_time = 1200
表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

net.ipv4.ip_local_port_range = 1024 65000
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

net.ipv4.tcp_max_syn_backlog = 8192
表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets = 5000
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为 180000,改为 5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

Linux上的NAT与iptables
谈起Linux上的NAT,大多数人会跟你提到iptables。原因是因为iptables是目前在linux上实现NAT的一个非常好的接口。它通过和内核级直接操作网络包,效率和稳定性都非常高。这里简单列举一些NAT相关的iptables实例命令,可能对于大多数实现有多帮助。
这里说明一下,为了节省篇幅,这里把准备工作的命令略去了,仅仅列出核心步骤命令,所以如果你单单执行这些没有实现功能的话,很可能由于准备工作没有做好。如果你对整个命令细节感兴趣的话,可以直接访问我的《如何让你的Linux网关更强大》系列文章,其中对于各个脚本有详细的说明和描述。

EXTERNAL="eth0"
INTERNAL="eth1"

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE

LOCAL_EX_IP=11.22.33.44 #设定网关的外网卡ip,对于多ip情况,参考《如何让你的Linux网关更强大》系列文章
LOCAL_IN_IP=192.168.1.1 #设定网关的内网卡ip
INTERNAL="eth1" #设定内网卡

echo 1 > /proc/sys/net/ipv4/ip_forward

modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

iptables -t nat -A PREROUTING -d $LOCAL_EX_IP -p tcp --dport 80 -j DNAT --to 192.168.1.10

iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to $LOCAL_IN_IP

iptables -A FORWARD -o $INTERNAL -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT

iptables -t nat -A OUTPUT -d $LOCAL_EX_IP -p tcp --dport 80 -j DNAT --to 192.168.1.10
获取系统中的NAT信息和诊断错误
了解/proc目录的意义
在Linux系统中,/proc是一个特殊的目录,proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它包含当前系统的一些参数(variables)和状态(status)情况。它以文件系统的方式为访问系统内核数据的操作提供接口
通过/proc可以了解到系统当前的一些重要信息,包括磁盘使用情况,内存使用状况,硬件信息,网络使用情况等等,很多系统监控工具(如HotSaNIC)都通过/proc目录获取系统数据。
另一方面通过直接操作/proc中的参数可以实现系统内核参数的调节,比如是否允许ip转发,syn-cookie是否打开,tcp超时时间等。
获得参数的方式:
第一种:cat /proc/xxx/xxx,如 cat /proc/sys/net/ipv4/conf/all/rp_filter
第二种:sysctl xxx.xxx.xxx,如 sysctl net.ipv4.conf.all.rp_filter
改变参数的方式:
第一种:echo value > /proc/xxx/xxx,如 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
第二种:sysctl [-w] variable=value,如 sysctl [-w] net.ipv4.conf.all.rp_filter=1
以上设定系统参数的方式只对当前系统有效,重起系统就没了,想要保存下来,需要写入/etc/sysctl.conf文件中
通过执行 man 5 proc可以获得一些关于proc目录的介绍
查看系统中的NAT情况
和NAT相关的系统变量
/proc/slabinfo:内核缓存使用情况统计信息(Kernel slab allocator statistics)
/proc/sys/net/ipv4/ip_conntrack_max:系统支持的最大ipv4连接数,默认65536(事实上这也是理论最大值)
/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 已建立的tcp连接的超时时间,默认432000,也就是5天
和NAT相关的状态值
/proc/net/ip_conntrack:当前的前被跟踪的连接状况,nat翻译表就在这里体现(对于一个网关为主要功能的Linux主机,里面大部分信息是NAT翻译表)
/proc/sys/net/ipv4/ip_local_port_range:本地开放端口范围,这个范围同样会间接限制NAT表规模

cat /proc/sys/net/ipv4/ip_conntrack_max

cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

cat /proc/net/ip_conntrack

cat /proc/sys/net/ipv4/ip_local_port_range

wc -l /proc/net/ip_conntrack

grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print 2;}'

grep ip_conntrack /proc/slabinfo | grep -v expect | awk '{print 3;}'

cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

cat /proc/net/ip_conntrack | perl -pe s/^(.*?)src/src/g | cut -d ' ' -f1 | cut -d '=' -f2 | sort | uniq -c | sort -nr | head -n 10

阅读全文

与linux修改内核网络参数设置相关的资料

热点内容
网络共享中心没有网卡 浏览:513
电脑无法检测到网络代理 浏览:1364
笔记本电脑一天会用多少流量 浏览:550
苹果电脑整机转移新机 浏览:1368
突然无法连接工作网络 浏览:1032
联通网络怎么设置才好 浏览:1213
小区网络电脑怎么连接路由器 浏览:1008
p1108打印机网络共享 浏览:1203
怎么调节台式电脑护眼 浏览:669
深圳天虹苹果电脑 浏览:908
网络总是异常断开 浏览:603
中级配置台式电脑 浏览:965
中国网络安全的战士 浏览:623
同志网站在哪里 浏览:1404
版观看完整完结免费手机在线 浏览:1449
怎样切换默认数据网络设置 浏览:1099
肯德基无线网无法访问网络 浏览:1275
光纤猫怎么连接不上网络 浏览:1447
神武3手游网络连接 浏览:956
局网打印机网络共享 浏览:991