OpenWrt 配置指南

OpenWrt 配置指南

不得不说,中文网络上关于 OpenWrt 配置的文章是相当的乱,基本上都是零零散散的教程,还有很多都是抄来抄去的几篇同样的文章。 自从购入了 R2S 以后,就对 OpenWrt 爱不释手,虽然 OpenWrt 想正常使用非常简单,并不需要复杂的设置,但是看着这么多的功能,不使用也太浪费了。 于是便有了本文,本文的目的是对 OpenWrt 的功能做一个概括,包括常用的和不常用的功能介绍以及相关设置。同时,也是帮助自己重温一下学过的网络知识。 这是一个边发现,边学习,边完善的过程。

基本环节

下载

官方下载地址是:https://openwrt.org/ ,除此之外还有很多基于原版定制的系统,比如 iStoreOS

安装

安装也很简单,可以使用 Rufus 直接安装到移动盘,或者安装到本地。

系统的配置

软件包

配置源(OPKG)

根据硬件版本不同,源的设置不同,这里的配置是根据 NanoPi R2S 来做的,主要替换的内容有:

  1. 源地址,将国外的地址替换为国内的,国内的主要的几个源地址有:
  2. 在 opkg.conf 中添加 arch* 代码可以解决类似于 Package xxx has no valid architecture 这样的错误。
  3. 屏蔽了 Signature 检查。
  4. 添加国内源 op.supes.top 到 customfeeds.conf,这个源包括了一些官方源没有的软件,比如科的学上网的软件。

这里贴上相关代码,需要根据不同型号的软路由替换。

/etc/opkg.conf

dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
# option check_signature
arch all 100
arch aarch64_generic 200
arch aarch64_cortex-a53 300

/etc/opkg/customfeeds.conf

# add your custom package feeds here
#
# src/gz example_feed_name http://www.example.com/path/to/files
# find out more on https://github.com/kiddin9/openwrt-packages
src/gz openwrt_kiddin9 https://op.supes.top/packages/aarch64_generic

/etc/opkg/distfeeds.conf

src/gz openwrt_core https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/targets/rockchip/armv8/packages
src/gz openwrt_base https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/packages/aarch64_generic/base
src/gz openwrt_kmods https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/targets/rockchip/armv8/kmods/5.4.182-1-a76fa007c9d58d46d6f01d54cf13ae72
src/gz openwrt_luci https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/packages/aarch64_generic/luci
src/gz openwrt_packages https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/packages/aarch64_generic/packages
src/gz openwrt_routing https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/packages/aarch64_generic/routing
src/gz openwrt_telephony https://mirrors.cloud.tencent.com/openwrt/releases/21.02-SNAPSHOT/packages/aarch64_generic/telephony

一键更新 OpenWrt 脚本(风险很大)

两种方式,第一种简单粗暴一句话:

# 更新软件列表
opkg update

# 更新所有 LUCI 插件
opkg list-upgradable | grep luci- | cut -f 1 -d ' ' | xargs opkg upgrade

# 如果要更新所有软件,包括 OpenWRT 内核、固件等
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

第二种直接下载已经写好的脚本,功能稍微多一点,这里在原版基础上添加了 --force-overwrite,可以强制刷新已经下载好的依赖。

当然你也可以直接用 wget 在 github 上下载。

# using wget with SSL
wget 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -O "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"

# alternative with --force-overwrite
wget 'https://blog.cineray.net/openwrt/opkg-upgrade.sh' -O "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"

服务的配置

UPnP

 

Image description

 

UPnP(通用即插即用)是用来自动配置设备端口映射和设备间通信的协议,其设计的初衷是为了消除网络应用程序中对端口映射的需求。

启动 UPnP 与 NAT-PMP 服务

就是开启 UPnP,所以我们开启就好了,其中 NAT-PMP(Network Address Translation Port Mapping Protocol)和 UPnP 类似,可以自动配置 NAT 设备上的端口映射规则,以允许外部网络访问内部网络中的设备和服务。但是是苹果公司开发的协议,比 UPnP 更简单,也更安全,但是支持的设备相对也更少。

启用 IGDv1 模式

IGD(Internet Gateway Device)是一种通用的网关设备类型,它是 UPnP 协议的一部分,用于在家庭或小型办公室网络中实现网络地址转换(NAT)和端口映射。IGDv1 是 UPnP 协议的第一个版本中的 IGD 规范,IGDv2 是 UPnP 协议的第二个版本中的 IGD 规范。IGDv2 增加了 IPv6 的支持,也增加了 SCTP 和 DCCP 协议的支持,有更好的扩展性和安全性,所有没有特殊的需求,可以关闭 IGDv1 模式。

SmartDNS

这里附上我的配置文件,将文件下载后放在 /etc/config/smartdns 就好了。

这个 SmartDNS 设置结合了 SSRP 使用,开设了第二服务器端口 5353,所以直接复制进去可能会无法生效,可以酌情关闭相关功能。

一些技巧

出门远程访问 OpenWrt

远程访问,要么需要公网 IP 结合 DDNS,要么需要用 frp 插件做内网穿透,这里再提供一个方便的网站 DDNS.to,不需要穿透,并且访问的时候需要验证,可以规避全网扫描机器人对你的网站暴力破解,当然缺点是要花点钱。

回到初始状态

我们经常会因为各种原因导致固件配置损坏,这时候只需要在 SSH 中输入 firstboot,就可以回到固件初始状态,一般推荐 squashfs 格式的固件使用。

访问上级光猫

如果软路由做主路由,这时候直接访问光猫地址是不通的,需要做静态路由。

  1. 网络 - 接口中添加一个接口,名称可以随便写,一般填写 Model协议填写静态地址,设备选择和光猫连接的那根线的接口,一般是 WAN 口;IPv4 写一个光猫段的地址,比如光猫是 192.168.1.1 那么这里可以填 192.168.1.2;子网掩码(IPv4 广播地址)填写 255.255.255.0,其他的不用改,然后确认。
  2. 网络 - 静态路由设置里,添加一个静态 IPv4 路由接口选择刚刚添加的那个口 Model,目标写光猫地址比如 192.168.1.1,子网掩码填写 255.255.255.255,网关写上面添加的接口也就是 192.168.1.2,然后确认。
  3. 这时候 192.168.1.1 就可以正常访问网关了。

SD卡分区扩容

有时候我们的软路由是使用 SD 卡作为存储,系统写入后难免会有分区不足的情况,此时我们就需要对 SD 卡扩容。这里的扩容一般分为两种,第一种是对 ext4 的固件进行扩容,还有一种就是 squashfs 格式的扩容,ext4 比较好操作,直接将分区扩大就行,squashfs 有一点区别,由于是固化的大小,只能通过增加一个分区,并将 /overlay 分区挂载到新建立的分区才行。

posted @ 2023-04-20 13:44  很多无尾熊  阅读(3749)  评论(0编辑  收藏  举报
本站已运行[ ]
正在加载今日诗词....