Published on

软路由、nas配置折腾小记

Authors

当前的管理页ip

  1. 192.168.1.1(光猫天翼网关管理页 密码si8da)
  2. 192.168.2.1(主路由管理页)
  3. 192.168.2.125:80(旁路由管理页)
  4. 192.168.2.125:3030(adguardhome管理页)
  5. 192.168.2.125:8088(文件浏览器filebrowser管理页)
  6. 192.168.2.125:5678(小雅影音库)
  7. 192.168.2.125:11434(ollama本地模型监听端口)
  8. 192.168.2.125:7788(待定,docker微信机器人宿主机监听端口)

给服务器装ubuntu(失败,可能为硬件兼容性问题)

  1. 买了一个8G的U盘作为启动盘,在官网下载镜像后刻录进U盘里,server版的ubuntu怎么装都装不上,一直会报Error1906找不到操作系统,因此决定安装桌面版的ubuntu然后关掉GUI

  2. 因为没有买显示器,所以用vga转hdmi线 + 采集卡 + potPlayer用笔记本做主机显示器,因为没有无线网卡,所以只能用网线连接路由器和主机

  3. 插入U盘后开机等开机Logo出现后按F12进入启动介质选择(主机是联想主板),选择USB ueif启动,进入ubuntu安装界面(可能还要F1进bios更改启动顺序)

  4. 接下来就是键盘布局,网络设定,用户名等设置,选了最小化安装,节省资源

    image-20240918150440579

OpenWRT配置与安装/软路由的配置

  1. 配置网络[后面因软件更新更改了路由网段,导致路由ip更改为了192.168.2.125]

    今天在研究为什么zerotier不能添加服务器节点时发现服务器ping不通百度,能ping通网关,用以下命令查看DNS解析是否正确时出现了报错,发现是DNS配置出现了问题

    [root@OpenWrt ~]# nslookup baidu.com
    Server:         127.0.0.1
    Address:        127.0.0.1:53
    
    ** server can't find baidu.com: REFUSED
    
    ** server can't find baidu.com: REFUSED
    

    将lan口的ipv4网关设置成主路由地址,指引旁路由处理完请求后的下一步

    image-20241001101519302

DNS可以设置114.114.114.114或者主路由的IP,然后关闭DHCP服务,降低旁路由的耦合性,关闭防火墙的SYN-flood防御和全锥形NAT(FullCone-NAT),发现已经能ping通了,旁路由设置完毕

image-20241001102957015
  1. 选择旁路由类型

非入侵式旁路由就是终端设备需要手动修改自己的ip地址和网关,而主路由配置不变,入侵式旁路由就是将主路由的DHCP服务中的网关指向旁路由,这样自动分配的IP地址就是指向旁路有的,最终决定选用入侵式旁路由

  1. 配置OpenWRT的ip地址

    vim /etc/config/network
    

    修改lan口的ip,DNS以及网关,网关和DNS这里都指向主路由,然后所有连接到主路由的默认网关都会指向旁路由

    image-20241001135505638
  2. 通过iperf3测试软路由极限带宽吞吐

    在openwrt上启用iperf3,在windows上安装iperf3,以下是服务器参数

image-20241001142854926
iperf3 -s  #服务端临时启用命令(默认监听5201端口)
iperf3 -s -D       #保持在后台
iperf3 -s -D > iperf3.log  #我们也可以使用-D标志作为守护程序运行,并将服务器消息写入日志文件

客户端参数

image-20241001143042943
iperf3 -c 10.10.10.252    #这里的IP地址填你的openwrt路由器,单线程TCP协议
iperf3 -c 10.10.10.252 -b 1000m -t 60 -i 1 -u -P 2    #多线程UDP测速

测速结果如下,百兆左右的网速,感觉太慢了,后期可以研究一下网络加速

image-20241001143403224

参考博客资料

  1. 配置adguardhome广告拦截

    在软件包栏更新列表安装(openwrt的插件拓展包后缀是ipk),由于adguardhome默认没有Iuci界面,查看系统日志发现adguardhome已经在监听3000端口了(后面由于3000端口被占用,我改成了3030

    image-20241001183020970

    于是可以直接从浏览器进入adguardhome管理页面

    image-20241001183511815

在安装Iuci版本时,如果出现没办法更新adguardhome核心时,需要将 /usr/share/AdGuardHome/update_core.sh 文件中第 168 行 wget-ssl 修改为 wget,之后点击 “更新核心” 就可以正常更新核心版本了。

vim /usr/share/AdGuardHome/update_core.sh

来自某个论坛:

image-20241001202551258

设置完后打开192.168.2.125:3030可以看到adguardhome已经正常运行了

img

参考资料:1. 配置文件与核心更新问题 2. Iuci版全局配置教程 3. DNS测试网址

  1. 配置软路由科学上网

    主要通过passwall实现科学上网插件,先找到了合适的机场龙猫云,获取了订阅地址后在passwall中进行节点获取,点击手动订阅即可获取节点

    image-20241001205235364

​ 然后在常规配置中选择UDP和TCP的节点服务器,启用passwall即可

img

这样连接网络的设备都可以直接科学上网了

参考资料:龙猫云官方openwrt + passwall配置教程

  1. 配置doker + xiaoya

    token37f9136a73ed4054b0d01b734c0a72xx
    open tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJSUzxxNiJ9.eyJzdWIiOiJjNmIxMjY0M2U5NzM0ZmUwYWM2OTRiYmZmOWQzYTM5YSIsImF1ZCI6Ijc2OTE3Y2NjY2Q0NDQxYzM5NDU3YTA0ZjYwODRmYjJmIiwiZXhwIjoxNzM2MDY1MzQyLCJpYXQiOjE3MjgyODkzNDIsImp0aSI6IjllNGEzNDgzODRlMTQxMTQ5N2JiZGQ0MjRmMWViZDA4In0.M4bMqgMw1mdsr5Z3lOq266j4rzR1gGqNNNLIlzQKlNdREj3L4wAQuiswcLe1rDtCA3DhFT3GkAFEUeKu1cxyqg
    folder id67039a9b5da274906661496c8739faxx80c600b8

    执行一键安装命令

    bash -c "$(curl http://docker.xiaoya.pro/update_new.sh)"
    

    查看日志

    docker logs -f xiaoya
    

    设置每天六点重启小雅更新

    crontab -e
    

    添加记录

    0 6 * * * docker restart xiaoya
    
    image-20241008114350093

    参考资料:小雅官方指南

    小雅出现问题解决方案一览

    1. 飞牛OS配置界面变白
  2. 内网穿透

    配置cpolar配置文件(默认路径 用户/.cpolar/cpolar.yml)

    authtoken: MTYxYjZlZTUtMzI5NC00YjdmLThhNzQtNTUyZjhiNGVlOTdi
    log: /home/cpolar.log
    log_level: error
    
    tunnels:
      ssh:
        proto: tcp
        addr: 22
      website:
        proto: http
        addr: 80
      movie:
        proto: http
        addr: 5678
    

    启用cpolar

    cpolar start ssh movie -log=/home/cpolar.log &
    # 或者开启全部
    cpolar start-all -log=/home/cpolar.log &
    

    通过cpolar进行免费的内网穿透,首先先将管理页和ssh开放到公网,现在可以通过以下命令ssh连接openwrt

    ssh root@15.tcp.cpolar.top -p 13980
    

    其中-p是指定端口,且tcp://的前缀不需要添加

    image-20241009143123955

    参考资料:

    1. cpolar官方教程
    2. cpolar后台
  3. 微信聊天机器人构建

    由于因为一些原因导致和服务器的连接丢失,先用wsl进行测试

    拉取镜像

    docker pull dannicool/docker-wechatbot-webhook
    

    部署容器(注意,此处我的端口映射由于宿主机占用了3001端口,于是修改了宿主机的映射端口为7788)

    sudo docker run -d \
    --name wxBot \
    -p 7788:3001 \
    -e LOGIN_API_TOKEN="zaizai" \
    -e RECVD_MSG_API="http://localhost:7789/receive" \
    dannicool/docker-wechatbot-webhook
    

    扫码登录(注意这里的端口要访问宿主机的端口,token为上面的Login_api_token)

    https://localhost:7788/login?token=[YOUR_PERSONAL_TOKEN]
    

    然后按照该格式先发送api即可

    image-20241015131520179

但是项目不太稳定,仍会出现一些频繁的掉线问题,仓库issue提到可以换用老版本如2.5.2恢复正常,打算后期再换版本测试

尚待配置/搞清楚的功能

  1. zerotier实现异地组网

  2. adguardhome的DNS拦截的作用

  3. 内网穿透(zerotier实现使用家里的梯子/搭建网站)

  4. ollama微调自定义模型

    参考资料:

中途出现的问题

  1. 更改磁盘挂载

​ 在拉取docker的时候发现软路由挂载到了U盘上,细看docker根目录上发现居然只剩200多MB,于是进行硬盘重新挂载

lsblk命令输出如下:
[root@OpenWrt ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0    7:0    0 702.7M  0 loop /overlay
sda      8:0    0 111.8G  0 disk 
├─sda1   8:1    0   100M  0 part 
├─sda2   8:2    0    16M  0 part 
├─sda3   8:3    0   111G  0 part 
└─sda4   8:4    0   679M  0 part 
sdb      8:16   1   7.5G  0 disk 
├─sdb1   8:17   1    32M  0 part /boot
│                                /boot
├─sdb2   8:18   1   944M  0 part /rom
└─sdb3   8:19   1   239K  0 part 
zram0  253:0    0   1.9G  0 disk [SWAP]

df -h输出如下:
Filesystem                Size      Used Available Use% Mounted on
/dev/root               241.5M    241.5M         0 100% /rom
tmpfs                     3.8G     14.9M      3.8G   0% /tmp
/dev/loop0              700.7M    409.5M    291.2M  58% /overlay
overlayfs:/overlay      700.7M    409.5M    291.2M  58% /
/dev/sdb1                31.9M      9.6M     22.4M  30% /boot
/dev/sdb1                31.9M      9.6M     22.4M  30% /boot
tmpfs                   512.0K         0    512.0K   0% /dev
cgroup                    3.8G         0      3.8G   0% /sys/fs/cgroup
overlayfs:/overlay      700.7M    409.5M    291.2M  58% /docker

可见系统能识别到固态硬盘但是没挂载

# 格式化固态硬盘分区
mkfs.ext4 /dev/sda3

#挂载固态硬盘作为主存储
mount /dev/sda3 /mnt

#复制当前/overlay的内容到固态硬盘
cp -a /overlay/* /mnt/

#编辑配置文件,让系统自动将硬盘挂载到/overlay上
vi /etc/config/fstab

添加或修改以下内容:

config mount
    option target '/overlay'
    option device '/dev/sda3'
    option fstype 'ext4'
    option options 'rw,sync'
    option enabled '1'
    option enabled_fsck '0'

在编辑完 fstab 文件后,卸载刚才手动挂载的固态硬盘

umount /mnt

然后通过重启系统来验证是否可以成功将固态硬盘挂载为 /overlay

reboot
结果如下: image-20241007191745102
  1. 检查应用进程状态(openwrt默认没有systemctl,是通过procd进行交互)

    如检查nginx的运行情况,则通过以下命令检查:

    /etc/init.d/nginx status
    
  2. 通过一个链接安装包(wget)

  3. 解压

.tar.gz 文件并不是一个 ZIP 压缩包,而是使用 targzip 压缩的文件。所以不能使用 unzip 来解压,而应该使用 tar 工具。

tar -xvzf loophole-cli_1.0.0-beta.15_linux_64bit.tar.gz
  1. 查看cpu温度

    查看cpu温度通过sensors进行检测

    [root@OpenWrt zaizai]# sensors
    acpitz-acpi-0
    Adapter: ACPI interface
    temp1:        +27.8°C
    temp2:        +29.8°C
    
    coretemp-isa-0000
    Adapter: ISA adapter
    Package id 0:  +41.0°C  (high = +82.0°C, crit = +102.0°C)
    Core 0:        +41.0°C  (high = +82.0°C, crit = +102.0°C)
    Core 1:        +34.0°C  (high = +82.0°C, crit = +102.0°C)
    
  2. vim不能正确显示中文

当在 Docker 容器或 Linux 环境中使用 vim 但不能正确显示中文字符时,通常是由于缺少对中文字符的支持或相关配置问题。

容器或系统可能没有配置正确的 locale 来支持中文字符。检查系统locale

locale

如果 LANGLC_CTYPE 没有设置为支持中文(如 zh_CN.UTF-8),你需要安装并配置中文 locale。

对于基于 Debian/Ubuntu 的系统,运行以下命令来安装中文 locale:

apt-get update
apt-get install locales
locale-gen zh_CN.UTF-8

并将其设置成默认

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

tips:进入docker容器命令是

docker exec -it 容器名 /bin/bash(或者/bin/sh)
  1. 关闭ubuntu中mysql开机自启动(占用了大量后台内存)

    启用和停止mysql服务

    service mysql start
    service mysql stop
    

    启用和关闭开机自启动服务

    update-rc.d -f mysql remove
    update-rc.d -f mysql defaults
    

    部分版本Ubuntu中mysql会使用UpStart替代传统的/sbin/init,在启动的同时运行服务和设定的任务,需要修改mysql的运行级别:

    $sudo vi /etc/init/mysql.conf
    

    将start on runlevel [2345]改为start on runlevel [!0123456]后就可以了

  2. 配置旁路网关的最佳实践

    参考资料:配置旁路网关

  3. mosdns配置:https://github.com/IrineSistiana/mosdns/discussions/455

    网络dns配置集合:https://ainiya.cc/index.php/archives/16/

    广告拦截检测:https://d3ward.github.io/toolz/adblock

    qbittorrent配置:https://www.hao4k.cn/thread-60781-1-1.html / https://www.icode504.com/posts/71.html

    mytoken:540d96854c2a4a5c8d8e7740450f0816

    refreshtoken:eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjNmIxMjY0M2U5NzM0ZmUwYWM2OTRiYmZmOWQzYTM5YSIsImF1ZCI6Ijc2OTE3Y2NjY2Q0NDQxYzM5NDU3YTA0ZjYwODRmYjJmIiwiZXhwIjoxNzQyNTcxNzYxLCJpYXQiOjE3MzQ3OTU3NjEsImp0aSI6ImU2OWEyYjQ0ZjAzOTRkOGFhOTFlYTM4YmFmMzQ4NGZmIn0.IHuAUxWgPZUhe2WQKnoeHDltZnLB1MXyhkRgYdzXsQFREiW4YaCh0-Vdc2o6186Ja9nqAytW7nS_mdrhw-w_Ug

    filetoken:676680e755ca0f3bba1a406f9e6e5a74b515a48a

  4. adguardhome核心文件问题

    需要 SSH 到路由器主机,将 /usr/share/AdGuardHome/update_core.sh 文件中第 168 行 wget-ssl 修改为 wget,之后点击 “更新核心” 就可以正常更新核心版本了。
    sh -x /usr/share/AdGuardHome/update_core.sh
    

搭建博客

使用nginx反向代理将192.168.2.104:8080的端口流量转发到192.168.2.103:8080,再通过192.168.2.104进行内网穿透

image-20250110235801835

参考文档:

  1. nginx反向代理

解决安装系统后重启系统出现Error:No operating system found

起初翻阅了许多资料,调整了主机的bios启动设置为uefi,然后通过Pe系统确定了主机的硬盘分区就是GPT,但是还是一直出现问题,前前后后还换用了不同的系统镜像,也尝试过安装旧版本的系统镜像,还是不行,甚至专门找专业系统安装的也不行,而且最奇怪的是只能安装windows和openwrt系统,其余的系统如linux(包括ubuntu,centesOS,kali,debian等)都会出现问题,因此一气之下决定自己来

然后终于在这篇博客中找到了一丝线索,发现在老式cpu(10代以前)下只支持MBR的分区以及对应legacy的bios引导方式,因此通过winpe系统将硬盘的分区改为了MBR,并在bios上设定启动方式为legacy first,然后在引导盘上烧录MBR分区的系统,并重新安装系统,拔掉引导盘后重启即可

Debian系统启用和关闭GUI界面

启用命令行界面

1.打开grup配置文件

sudo nano /etc/default/grub

2.修改

GRUB_CMDLINE_LINUX=”” 修改为:GRUB_CMDLINE_LINUX=”text”

3.更新grub

sudo update-grub

4.更新系统服务管理器配置

sudo systemctl set-default multi-user.target

5.重启:

sudo init 6

启动图形界面

1.打开grup配置文件

sudo nano /etc/default/grub

2.修改

GRUB_CMDLINE_LINUX=”text” 修改为:GRUB_CMDLINE_LINUX=””

3.更新grub

sudo update-grub

4.更新系统服务管理器配置

sudo systemctl set-default multi-user.target

5.重启:

init5

开放mysql服务

一、开放3306端口

1、首先查看端口是否打开

netstat -an|grep 33061

这里写图片描述

此图为开启3306端口的截图;

2、打开mysql配置文件

将bind-address = 127.0.0.1注销

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1

这里写图片描述

3、重启动ubuntu

sudo reboot1

4、再次查看端口是否打开

netstat -an|grep 33061

这里写图片描述

此时端口3306已经打开

二、开启远程连接

登录:mysql -u root -p <回车> 然后输入密码

update mysql.user set host = '%' where user ='root' limit 1;1
flush privileges;1

重启服务器:

sudo service mysql restart
sudo service mysql start
sudo service mysql stop123

到此所以操作完成,可以在任何主机连接此mysql数据库服务器了。

记得要重启mysql

eg:/etc/init.d/mysql restart