一文打尽OpenWrt系统内核设置(/etc/sysctl.conf)、非UCI系统配置(/etc/rc.local、/etc/profile等)

2023-11-08

一、前言
系统内核设置:OpenWrt也是一个 Linux 操作系统,因此它和桌面操作系统 Ubuntu及Fedora 一样, 采用sysctl作为系统的内核配置工具。sysctl.conf作为其内核配置文件在启动时进行加载。
非UCI系统配置:OpenWrt还有一些配置并不是通过UCI配置来实现的,这部分是大多数 Linux 系统都有的配置,并且用户很少修改,因此并不提供接口给用户修改。
Title    配置
系统内核设置    /etc/sysctl.conf、sysctl
非UCI系统配置    /etc/rc.local、/etc/profile、/etc/shells、/etc/fstab、/etc/services、/etc/proto
二、/etc/sysctl.conf配置文件
文件介绍:这个文件是系统启动预加载的内核配置文件,通过sysctl命令读取和设置到系统当中。
这个文件在OpenWrt系统的/etc/目录下,在OpenWrt源码的package/base-files/files/etc/目录下。


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


配置文件主要内容及含义
配 置 项    含 义    默 认 值
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命令查询或修改的的信息就是这些目录及目录下的相关文件。


内核的参数配置在启动时由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


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


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


这个文件在系统每次启动时由/etc/rc.d/S95done 调用,是一个 shell 脚本,是在系统开 机之后最后会调用到的脚本。也就是说,当有任何想要在开机之后就立即执行的命令时, 直接将它写入/etc/rc.local,那么该命令就会在每次启动的时候自动被执行,而不必等我们 登录系统再去执行。
演示案例
比如启动时增加域名服务器地址为“8.8.8.8”,则可在/etc/rc.local 增加:
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
这样就可以在系统 DNS无效时有一个备份的域名服务器来查询。
五、/etc/profile


/etc/profile 为系统的每个登录用户设置环境变量。当用户第一次登录时该文件被执行, 此文件首先输出“banner”文件的内容,紧接着为登录用户设置环境变量,并创建一些常 用命令的链接。
演示案例
例如more命令链接到less,即执行more命令最终会调用less命令。
#!/bin/sh
[ -f /etc/banner ] && cat /etc/banner
 
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
export HOME=${HOME:-/root}
export PS1='\u@\h:\w\$ '
 
[ -x /bin/more ] || alias more=less
[ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
 
[ -z "$KSH_VERSION" -o \! -s /etc/mkshrc ] || . /etc/mkshrc
 
[ -x /usr/bin/arp ] || arp() { cat /proc/net/arp; }
[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
上面的代码中共定义了3个环境变量,含义分别如下:
PATH:决定了 shell 命令的查找位置及顺序。
HOME:登录用户主目录。
PS1:用户命令行提示符。
六、/etc/shells


shell是外壳的意思,是相对于Linux内核来说的。Linux有多个命令解析外壳程序, shells 文件包含系统中所有外壳程序的列表。应用程序使用此文件来确定一个外壳是否有效。每一个外壳程序占用一行,内容为外壳执行程序的绝对路径。
文件内容以“#”开头,表示这行为注释行,如果 shells 内容错误可能会导致无法登录。 OpenWrt 采用/bin/ash。
七、/etc/fstab
这个文件是关于文件系统的静态信息,系统启动时读取并设置。文件 fstab 包含各种 文件系统的描述信息,现在 fstab 只能通过程序读取,程序不能修改它;创建和维护这个 文件的是系统管理员。
每一个文件系统占用一行来描述;一行的每一个域使用空格或制表符来隔开。以“#” 开头的是注释行。fstab 中的条目顺序也非常重要,因为 fsck、mount 和 umount 等命令会 依次读取来执行自己的任务。
文件格式


第1个域是fs_spec,描述特定块设备或远程文件系统被挂载。对于块设备的挂载使用 “/dev/cdrom”或“/dev/sdb7”。对于 NFS 文件系统的挂载有主机和目录,procfs 文件系统 使用“proc”。另外一种可以表明文件系统类型(ext4 或者 swap)的是挂载的 UUID 或卷标,写成 LABEL=或,例如,“LABEL=Boot”或“UUID=3e6be9de-8139-11d1- 9106-a43f08d823a6”。这将使系统具有更好的鲁棒性:添加或删除一个 SCSI 磁盘时将更改 磁盘装置名字,而文件系统卷标不变。
第2个域是fs_file,描述的是文件系统的挂载点。对于交换分区(swap),这个域的取 值应当指定为“none”。
第3个域是fs_vfstype,描述的是文件系统的类型。Linux 支持大量的文件系统类型, 常见的文件系统类型有 ext3、ext4、ntfs、proc、swap、tmpfs 和 vfat 等,所有当前支持的 文件系统列表在/proc/filesystems 中。swap 表示分区用于交换,ignore 表示这行忽略,用于 显示当前未使用的磁盘分区。
第4个域是fs_mntops,描述文件系统的挂载选项(是以逗号分隔的列表选项)。它至少包含挂载类型加上额外的文件系统类型。对于所有类型的文件系统常见的选项是“noauto”(不要安装在“-a”是给出时,例如, 在启动时)、“user”(允许用户挂载)、“owner”(允许设备所有者挂载)和“comment”(例 如,使用 fstab 维护程序)。“owner”和“comment”选项是特定 Linux 支持的。
第5个域是fs_freq,用于 Dump 程序,是用于备份使用的。
第6个域是fs_passno,用于检查和修复磁盘的工具 fsck 程序,在启动时决定检测文件 系统的顺序。根文件系统应当设置为 1,其他文件系统设置为 2。在一个物理设备上将先 后进行检查,在不同的设备上如果使用并行能力则同时进行检测。如果第 6 个域不存在, 则返回零,表示不需要检查。
八、/etc/services
这个文件是互联网网络服务类型列表。这是一个普通的 ASCII 编码文件,提供了友好 的文本名称和互联网服务之间的映射,还包含了端口号和协议类型。每一个网络程序均可 以从这个文件得到服务的端口号和协议。C 函数库 getservent、getservbyname、getservbyport、 setservent 和 endservent 支持从这个文件查询。
端口号由 IANA 组织赋值,当前策略是在使用端口号时同时赋值给 TCP 和 UDP 协议。 端口号小于 1024(低端口号)仅可以被有管理员权限的用户使用。这是服务器的标准实现。 这样客户端连接到低端口号是可以信赖的,而不是使用服务器的普通用户运行的欺骗程 序。众所周知,端口号由 IANA 指定并在管理员控制的空间中运行。服务类型的存在并不 意味着该服务在当前服务器上运行。
文件内容及格式
各个域之间使用空格或者制表符来分割。注释以“#”开头,直到行结尾,并忽略空行。


service-name port/protocol [aliases ...]
service-name:是服务的名称,可以用于查找。它是区分大小写的。
port:是使用这个服务的端口号(以十进制表示)。
protocol:是使用的协议类型,匹配 protocols 文件中的值。通常是 TCP 或 UDP。
aliases:是一个可选的值,是这个服务另外的名字。同样是区分大小写的。
九、/etc/protocols
这个文件是协议定义描述文件,是一个普通的 ASCII 码文本文件,用于描述各种各样 的因特网网络协议。这些数字出现在 IP 报文头中的协议域。
文件内容及格式


每一行使用以下格式(这3个域由空格或制表符分隔,并且空行被忽略。如果一行包含一个“#”,则“#”后的内容部分被忽略):
protocol number aliases ...
“protocol”字段是协议的名称,常见的协议有 IP、TCP、UDP、ICMP、IGMP 和 GRE 等。
“number”是这个协议的数字号码,将出现在 IP 报头。用十进制数字表示。
“aliases”是协议的选项。
我是小董,V公众点击"笔记白嫖"解锁更多OpenWrt资料内容。

————————————————
版权声明:本文为CSDN博主「董哥的黑板报」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41453285/article/details/102536931

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文打尽OpenWrt系统内核设置(/etc/sysctl.conf)、非UCI系统配置(/etc/rc.local、/etc/profile等) 的相关文章

随机推荐

  • WeBASE-Front中间件搭建

    WeBASE Front中间件搭建 简介 WeBASE WeBank Blockchain Application Software Extension 是在区块链应用和FISCO BCOS节点之间搭建的一套通用组件 围绕交易 合约 密钥管
  • vector和list有什么区别?分别在什么场景下应用?

    Vector 顺序表 优点 和数组类似开辟一段连续的空间 并且支持随机访问 所以它的查找效率高其时间复杂度O 1 缺点 由于开辟一段连续的空间 所以插入删除会需要对数据进行移动比较麻烦 时间复杂度O n 另外当空间不足时还需要进行扩容 Li
  • 基础路由概念及配置

    前言 一 路由的概念 1 路由的分类 2 路由表的作用 二 中小型企业路由规划 1 静态路由规划介绍 2 静态路由规划 3 默认路由规划 4 浮动路由规划 总结 前言 路由就是源主机到目标主机的转发过程 一 路由的概念 1 路由的分类 1
  • 误删除oracle datafile,无法打开数据库

    1 在oracle open方式下 直接从OS上删除了datafile文件 rm u02 rmants dbf 2 数据库关闭后 无法打开数据库 只能到mount状态 SQL gt alter database open alter dat
  • 批量操作关联事务没有滚机制怎么办?交给递归就好了!

    最近遇到一个问题 需要批量修改Nginx配置文件 并分别执行Reload操作 文件更新和reload是lua脚本完成的功能 java后台可以直接调动接口 但问题是需要批量update并分别reload 而且没有事务控制 也就是说在更新第十条
  • jmeter-常用的几种参数化

    jmeter常见的几种参数化方式 jmeter 的csv 数据文件设置 线程组 gt 配置元件 gt Csv数据文件配置 Filename 文件名 File encoding 编码格式 variable Names 参数名称 后面可以使用v
  • C++.将十个整数从小到大顺序排序(冒泡排序法+反向冒泡排序)

    先说一下冒泡排序法的思路 若n个整数则需要进行n 1轮 每轮 将两个相邻元素进行对比 若左大于右则交换 第一轮需要比较n 1次 第二轮n 2次 每轮结束后 最大的元素就会去到最右边 第二轮倒数第二大就会去到最右边 所以 见代码 int ma
  • RIP笔记

    目录 RIP路由信息协议 UDP520端口 RIPNG521端口 RIP使用的算法 贝尔曼 福特算法 RIP的版本 RIP的数据包 RIP的工作过程 RIP的计时器 周期更新计时器 默认30s 失效计时器 默认180s 垃圾回收计时器 默认
  • 【深度学习与计算机视觉】4、反向传播及其直观理解

    四 反向传播及其直观理解 4 1 引言 问题描述和动机 大家都知道 其实我们就是在给定的图像像素向量x和对应的函数 f x f x f x 然后我们希望能够计算
  • 使用决策树对数据进行分类——识别橘子苹果

    代码如下 encoding utf 8 from sklearn import tree 1表示光滑 0表示粗糙 features 140 1 130 1 150 0 170 0 0表示苹果 1表示橘子 labels 0 0 1 1 创建一
  • 手把手教你在win10搭建linux虚拟机

    由于企业几乎都用linux作为生产环境 linux逐渐成为了工程师的必学知识 本文将带你如何在安装 虚拟机 在虚拟机中安装centOS linux的一个发行版 以及如何在 linux安装docker 并使用docker安装mysql red
  • Playing with ptrace, Part II

    Playing with ptrace Part II From Issue 104 December 2002 Dec 01 2002 By Pradeep Padala in SysAdmin In Part II of his ser
  • Hyperledger Fabric官方文档——Introduction

    研究生一直在折腾区块链这方面的东西 翻来覆去感觉Hyperledger Fabric是个挺有前景的 怎么说呢 方向吧 自己脑子里想的东西全让它实现了 又觉得难过又觉得开心 超级账本值得学习的地方有很多 又打算把官方文档翻出来读一遍 因为英语
  • fastjson 很好,但不适合我!

    Java指南 https java family cn FastJson 在国内的热度还是挺高的 受到了很多开发者的喜欢 不过 我自己倒没有在项目中用过 我记得刚工作那会新做的一个项目有明确规定禁止使用 FastJson 昨天看到一篇关于
  • 一个执行计划异常变更的案例 - 外传之SQL Profile(下)

    之前的几篇文章 一个执行计划异常变更的案例 前传 一个执行计划异常变更的案例 外传之绑定变量窥探 一个执行计划异常变更的案例 外传之查看绑定变量值的几种方法 一个执行计划异常变更的案例 外传之rolling invalidation 一个执
  • HTML页面写入OBS

  • 多个消费者订阅一个Kafka的Topic(使用@KafkaListener和KafkaTemplate)

    记录 465 场景 一个Producer在一个Topic发布消息 多个消费者Consumer订阅Kafka的Topic 每个Consumer指定一个特定的ConsumerGroup 达到一条消息被多个不同的ConsumerGroup消费 版
  • VAN LKA、LSKA

    Visual Attention Network 2022 大核注意力机制LKA 在本文中 提出了一种新的大核注意力large kernal attention LKA 模型 LKA吸收了卷积和自注意的优点 包括局部结构信息 长程依赖性和适
  • leetcode分类刷题:基于数组的双指针(一、基于元素移除的O(1)类型)

    1 对于数组上的双指针问题 主要是指两个变量在数组上移动或遍历的问题 之前整理的 二分查找 系列的算法题目 就是双指针解决数组上的索引相向移动 2 双指针算法的关键在于 初始化双指针值和双指针值分别更新的条件 保持对以上两点的清晰认知 就能
  • 一文打尽OpenWrt系统内核设置(/etc/sysctl.conf)、非UCI系统配置(/etc/rc.local、/etc/profile等)

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