斐讯除了N1外,尚有“零元购”的路由器产品如k2/k2p等,可能多数已经扔在角落、不再服役了。部署netbird时也有很多人尝试在openwrt上安装、配置,所以先看看这台古董设备能不能装最新的OpenWRT以及刷写安装后的状态如何。实测k2可刷入最新当前稳定版22.03/23.05,各项功能稳定,唯独wifi方面如果5G、2.4G同时在线,无额外配置的情况下,5G连接速率不稳定,2.4G正常,断开/关闭2.4G后5G一切正常。

1.OpenWRT固件自定义构建

K2闪存仅8M,OpenWRT官方的对应固件不足6M,刷写毫无问题。因此,固件还是可以做一些自定义的。

打开『固件选择器』页面,输入“k2”,下拉菜单中应选择『Phicomm K2 v22.4 or older』,注意右侧的版本时可以选择的,默认是进入『固件选择器』的入口版本。

之后,在选择器页面点开『自定义已安装的软件包和/或首次启动脚本』,开始进行固件自定义构建。

K2 23.05.0固件的官方默认组件包括:

base-files busybox ca-bundle dnsmasq dropbear firewall4 fstools kmod-gpio-button-hotplug kmod-leds-gpio kmod-mt76x2 kmod-nft-offload kmod-rt2800-soc libc libgcc libustream-mbedtls logd luci mtd netifd nftables odhcp6c odhcpd-ipv6only opkg ppp ppp-mod-pppoe procd procd-seccomp procd-ujail swconfig uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls

针对自身需求,参照K2的闪存大小,剔除ppp模块、修改firewall4为firewall、修改dnsmasq为dnsmasq-full、添加wireguard和stunnel,自定义如下:

base-files busybox ca-bundle dnsmasq-full dropbear firewall fstools kmod-gpio-button-hotplug kmod-leds-gpio kmod-mt76x2 kmod-nft-offload kmod-rt2800-soc libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only opkg procd procd-seccomp procd-ujail swconfig uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls luci kmod-wireguard stunnel wireguard-tools

针对这里采用的构建组合,几点需要备忘下:

  • 自定义构建的23.05.0版本固件rootfs分区大小介乎5.5M左右,一旦超出会使用tmpfs,所有配置重启失效、无法持久保存,K2就没必要考虑扩容了;
  • 每个模块用空格分隔,以上自定义内容基础上,实测还可以添加luci-i18n-base-zh-cn全中文界面;
  • 所有的依赖会自动配置添加,如stunnel依赖的libopenssl;
  • dnsmasq-full相比dnsmasq增加了对ipset的支持;
  • ipset作用于DNS分流解析和透明代理分流场景,无需显式添加,firewall(fw3)、dnsmasq-full等都有依赖,会自动添加进构建;
  • 参考官方指引,还有进一步压缩的空间,如odhcp6c和odhcpd-ipv6only等可删除,仅支持DHCPv4;
  • 官方支持替换fw4为fw3,如此可以保留自定义iptables规则,未安装iptables-nft模块的情况下使用内核模块ipt-core一样可以生效,但没有控制台iptables命令
  • 与上一个稳定版22.03的K2官方构建中不含luci不同,23.05.0版本的K2官方构建默认包含luci。

组件修改完成并确保无误后,点击左下角的『请求构建』。OpenWRT官方云端会在收到构建请求的基础上,进行组件检查校验、固件编译生成等。

构建耗时主要看云端服务状态和资源空闲情况,正常情况1分钟左右即可完成构建,构建状态提示如下。可以点开STDERR、STDOUT查看具体信息。

这样就可以下载刚刚自定义构建的K2固件了,点击左下角的『SYSUPGRADE』即可,大小为7553k。实际构建、下载的是包含了Kernel的完整固件,可以直接在breed、mini Webserver中指定刷写。

2.基础配置

推荐使用breed、mini webserver等bootloader刷入,具体刷写过程略过。Breed唯一需要注意的是只勾选『固件』,选择文件加载自定义构建的K2固件上传、写入。

刷写后,OpenWRT默认ip为192.168.1.1,浏览器输入192.168.1.1打开luci界面。首次登录,自定义输入密码,作为将来登录OpenWRT路由器管理后台的密码。

登陆后,首页为概况,可见OpenWRT 23.05.0的Linux内核版本为5.15.134。页面菜单分为状态、系统、网络三部分,本文主要就网络中的接口、无线和防火墙以及系统菜单中的管理权、软件包等的配置进行简要介绍。

2.1 密码与SSH

首次登录luci定义的密码是luci(uhttp服务)的密码,登录之后设置的密码为路由器密码,包括SSH登录等均采用路由器密码,一般设成一样的。

OpenWRT采用dropbear提供ssh服务,相比OpenSSH轻量、简单,但功能上不会那么丰富,完全够用。Dropbear默认监听于所有接口的22端口,包括lan、wan、wan6和所有的wifi端口,可以进行修改只在一个接口进行监听,每一个SSH配置项称为实例,可以添加SSH实例,也可以删除SSH实例。

2.2 网络

无线(Wifi)配置

对于支持802.11ac的路由器,分别会有5G、2.4G的两个频段的radio和site,site的模式默认都是master,两个site在本例中直接删除,重新扫描上级路由。

删除site后,这里以5G为例,点击radio0(5G)条目右侧的『扫描』,打开『搜索无线』。在其中找到主路由后,点击对应的『加入网络』。这里还需注意一下主路由的信道。

在之后的『加入网络』详情页中,输入主路由『WPA密钥』(wifi密码),勾选『锁定到BSSID』(MAC地址),点击『提交』即可。

同时,在后续的配置中需要将信道改为和主路由一致,否则会出现连接速率极低甚至信号断续消失问题,同时需确认『通道宽度』为80Mhz。在本页面的高级配置中可以对『国家/地区』进行修改,保持默认也不会对信号和连接速率有影响。

上述配置完成后,点击『保存并应用』即可,正常情况下,5G site就可以全速率连入主路由。2.4 G site配置方式和过程完全相同,不再重复描述。

接口配置

• lan接口

lan接口IP需要配置主路由网段中未被占用和分配的静态IP地址或指定不同网段,如本例中采用的192.168.2.0/24网段,lan接口网关应指向主路由/网关,同时在『高级配置』选项卡下,将DNS指向主路由/网关。在确保网络节点互通的情况下,再行调试、开启dnsmasq。

• 新建wwan6接口

开启wifi以客户端方式加入主路由网络后,默认只会分配主路由网络的IPv4,如果需要获取IPv6全局地址,还需要新建专门的IPv6虚拟接口(wwan6)。接口名称可自定义,协议应选择『DHCPv6客户端』,设备仍然使用radio0,即@wwan别名接口,其他保持默认,『保存』后回到主页面点击『保存并应用』,即可应用生效。

• wan和wan6接口的处理

本例中,在此网络拓扑下,默认已停用,可删除。

 

防火墙配置

 

防火墙主要修改常规设置中的入站Input、转发Forward的Reject为Accept,修改区域中的wan的入站Input和转发Forward为accept,如为二级路由(不拨号)可去除动态伪装(Masquerading)。防火墙初步配置后的状态如下图。

2.3 系统

系统主要需要修改配置的包括时区、软件包(Software)。时区修改为Asia/Shanghai。

『系统』->『管理权限』->『SSH访问』,默认为在所有接口监听,一般改为lan和远程连接的接口(本例中为wwan)。

『系统』->『软件包』,K2刷写自定义固件后,rootfs剩余空间84k,还可以安装1-2个语言包。需要先『更新列表…』(也即执行一次opkg update)才可列出软件包信息并进一步安装其他软件如语言包。

2.3 子路由网段/跨网段访问

本例中的OpenWRT部署于主路由(光猫)之下,通过Wifi连接主路由并通过DHCP分配获得IPv4地址为192.168.1.4。断开网线直连后,需通过分配的同网段IPv4地址访问。在上述配置完成后,如OpenWRT/k2中lan地址指定为192.168.2.1、网关及DNS为192.168.1.1,OpenWRT/k2之下的设备为192.168.2.0/24网段。这里定义A网段为192.168.1.0/24,B网段为192.168.2.0/24,B网段节点可正常访问互联网及A网段,但A网段节点无法访问B网段。需要在主路由配置静态路由。如果主路由直接采用光猫,三种途径可作尝试:

  • 光猫/主路由管理页面配置

一般需要获取管理员账号、密码登录,才能调出路由配置页。

  • Telnet登陆光猫配置

需要光猫Telnet管理员账号、密码(不同于Web管理页面管理员账号密码),使用ip route命令配置。

ip route add <192.168.y.0/24> via <192.168.x.z>
#192.168.x.0/24 替换为实际的子路由网段,即openwrt br-lan配置的ip地址所在网段
#192.168.x.z替换为openwrt wifi接口分配到的ip地址,即网关
#出接口可省略,比如dev br0

  • 本机配置

没有也不打算去琢磨光猫/路由管理员账密的,不需要“蛋疼”,直接在本机添加一条路由。

route add 192.168.x.0 mask 255.255.255.0 <192.168.y.z>

3.自编译、透明代理与分流

本地或私有云自编译固件,和官方提供的云端自编译(自定义构建)相比,无论固件大小、组件自定义等方面都没有任何优势,而且耗时耗力,特定型号的可以采用一些在线定时编译的固件。

透明代理和分流是两个不同的需求,但可以是一项配置。透明代理可以使用现成的第三方工具,也可以使用iptables和静态路由表的手动配置,分流一般情况下仅仅是对不同ip地址的区分,加上对不同域名的DNS解析指向,现成的教程一箩筐,本文不做重复赘述,后续仅将wg和stunnel的透明代理配置规则整理后记录分享。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。