OpenWrt开发:13---系统内核设置(/etc/sysctl.conf、sysctl)

前言:

  • OpenWrt 也是一个 Linux 操作系统,因此它和桌面操作系统 Ubuntu及Fedora 一样, 采用sysctl作为系统的内核配置工具。sysctl.conf 作为其内核配置文件在启动时进行加载

一、/etc/sysctl.conf配置文件

  • 文件介绍:这个文件是系统启动预加载的内核配置文件,通过sysctl命令读取和设置到系统当中
  • 这个文件在OpenWrt系统的/etc/目录下,在OpenWrt源码的package/base-files/files/etc/目录下

OpenWrt开发:13---系统内核设置(/etc/sysctl.conf、sysctl)_第1张图片

配置文件语法格式:

  • 以“#”和分号(;)开头的行均为注释行,并忽略空白行
  • 配置值以 key=value 形式进行设置
# comment
; comment
token = value

OpenWrt开发:13---系统内核设置(/etc/sysctl.conf、sysctl)_第2张图片

配置文件主要内容及含义

配 置 项 含 义 默 认 值
net.ipv4.ip_forward 是否打开、在接口之间转发报文,表示系统启用接口之间 报文转发,这是单机版桌面系统和路由器之间的最大的不 同。网卡将接收不属于自己 IP 的报文并根据路由表进行转 发。设置为 0 表示关闭转发,设置为 1 表示打开转发 1
net.ipv4.ip_default_ttl 用于发送报文的默认 TTL 值,介于 1 和 255 之间 64
net.ipv4.conf.all.send_redirects 如果为路由器,将发送重定向  
net.ipv4.icmp_echo_ignore_all 如果设置为非零值,内核将忽略所有发给自己的 ICMP ECHO 请求 0
net.ipv4.icmp_echo_ignore_ broadcasts 如果为非零值,内核将忽略所有发往广播或组播地址的 ICMP ECHO 请求 1
net.ipv4.icmp_ignore_bogus_ error_responses 对于广播地址的请求响应,记录在 log 里面。如果设置 为 1,不再给出警告 1
icmp_ratelimit 限制匹配 icmp_ratemask 的发送 ICMP 报文的最大速率, 0 表示不限制 1000
net.ipv4.tcp_keepalive_time TCP 流的保活时间 120秒
net.ipv4.conf.default.arp_ ignore

定义接收到解析本地目标 IP 地址的 ARP 请求时的不同 的发送响应模式。

0:回复配置在任何接口上的任何本地目标 IP 地址

1:仅回复目标 IP 配置在报文所进入的接口上的请求

2:仅回复目标 IP 是报文所进入的接口的请求,并且发 送请求者的 IP 地址和接口 IP 在同一子网

3:不回复本主机配置的 IP 地址的 ARP 查询

1
net.ipv4.conf.default.rp_filter 报文反向过滤技术,系统在接收到一个 IP 包后,检查该 IP 是不是合乎要求,不合要求的 IP 包会被系统丢弃。 在使用组播功能时,需要将该选项关闭 0

二、sysctl命令

  • sysctl 是用于修改运行中的内核参数的命令,运行sysctl需要procfs文件系统支持。可以用sysctl读取和修改内核参数数据
  • 参数:参数以“key= value”形式进行设置
  • 常用选项如下:
    • -n:查询时输出配置项的值,但不输出配置项
    • -e:当碰到不认识的配置项时,忽略错误
    • -w:使用这个选项来修改系统设置
    • -p:从指定的配置文件中加载配置,如果没有指定则使用默认的配置文件/etc/sysctl. conf
    • -a:显示当前所有可用的值

/proc/sys目录

  • 所有可用的内核参数均在/proc/sys目录下,我们用sysctl命令查询或修改的的信息就是这些目录及目录下的相关文件

OpenWrt开发:13---系统内核设置(/etc/sysctl.conf、sysctl)_第3张图片

  • 内核的参数配置在启动时由sysctl工具加载,默认加载/etc/sysctl.conf。启动之后均可在/proc/sys下查询,例如直接查询是否打开路由转发:
cat /proc/sys/net/ipv4/ip_forward

 

  • 内核参数也可以通过直接修改/proc/sys下的文件来生效。例如打开路由转发设置,可以执行以下命令:
echo "1" > /proc/sys/net/ipv4/ip_forward

演示案例

  • 显示所有的内核配置
/sbin/sysctl -a

OpenWrt开发:13---系统内核设置(/etc/sysctl.conf、sysctl)_第4张图片

  • 查询“kernel.hostname”的值
/sbin/sysctl -n kernel.hostname

  • 修改系统主机名称为dongshao
/sbin/sysctl -w kernel.hostname ="dongshao"
  • 加载配置
/sbin/sysctl -p /etc/sysctl.conf

 

你可能感兴趣的:(OpenWrt开发)