首先,我们需要在服务器上安装Docker和Docker Compose。以下是在Linux服务器上安装它们的命令:
1 | # 使用一键脚本快速部署docker环境 |
我们可以从GitHub上克隆V2Board Docker版的源代码:
1 | git clone https://github.com/hashcott/v2board-docker.git |
如果你需要更改数据库的名称和密码,你可以在docker-compose.yml
文件中进行修改。修改完成后,运行以下命令来启动环境:
1 | docker-compose up -d |
现在,我们可以开始安装V2Board了。首先,我们需要进入到V2Board的Docker容器中:
1 | docker-compose exec www bash |
然后,我们需要下载并运行Composer,它是一个PHP的依赖管理工具:
1 | wget https://getcomposer.org/install -O composer.phar |
接下来,我们可以开始安装V2Board了:
1 | php artisan v2board:install |
在安装过程中,你需要提供数据库的信息。这些信息应与你在docker-compose.yml文件中设置的信息一致:
1 | 数据库地址: mysql |
最后,我们需要修改V2Board的文件权限,并退出Docker容器:
1 | chmod -R 755 ${PWD} |
然后,我们需要重启V2Board的服务:
1 | docker-compose restart |
如果你需要更新V2Board,你可以执行以下命令:
1 | # 在v2board-docker文件夹目录中执行 |
至此,你已经完成了V2Board的Docker部署。现在,你应该可以通过在浏览器中输入你的服务器的IP地址和V2Board的端口号来访问V2Board了。
使用文本编辑器打开/etc/gai.conf
文件。例如,使用nano编辑器,你可以在终端输入 sudo nano /etc/gai.conf
。
查找文件中名为“precedence”条目的注释行,如:
1 | precedence ::ffff:0:0/96 100 |
取消这一行的注释,即删除“#”,然后保存并关闭文件。这将使得IPv4地址(在此配置文件中表示为::ffff:0:0/96)在系统解析地址时具有更高的优先级。
注意:这个操作可能会影响到那些依赖于IPv6的应用程序和服务,你应该确保这是你想要的设置,并且你的网络支持IPv4优先。
]]>因为EoIP协议的私有性,我们在常规的Linux发行版中都找不到对应的实现程序,需要使用开源的代码自行编译,这里我使用的是Nat-Lab eoip的实现,参考介绍,可以快速的编译EoIP模块。
1 | apt install build-essential |
最简配置,仅需要设置对端IP和隧道ID
1 | /interface eoip add name=eoip-1 remote-address=xxx.xxx.xxx.xxx tunnel-id=99 |
配置EoIP的对端信息和隧道ID,并给虚拟接口设置IP和启用接口
1 | eoip -4 eoip0 local 0.0.0.0 remote xxx.xxx.xxx.xxx id 99 & |
还需要开启转发和NAT转换
1 | sysctl -w net.ipv4.ip_forward=1 |
Darkstat是一个跨平台的工具,它可以在Linux、BSD、Mac OS X和Windows等操作系统上运行。你可以从官方网站下载源代码包,或者使用你的系统的包管理器来安装它。例如,在Ubuntu上,你可以使用以下命令来安装Darkstat:
1 | sudo apt-get install darkstat |
Darkstat有很多可选的参数,你可以通过darkstat --help
命令来查看它们。其中最重要的参数是-i
,它用来指定要监控的网络接口。例如,如果你想监控eth0
接口,你可以使用以下命令:
1 | darkstat -i eth0 |
其他常用的参数有:
-p
:指定Darkstat监听的端口,默认为667
。-b
:指定Darkstat绑定的地址,默认为0.0.0.0
,即所有地址。-l
:指定Darkstat记录的日志文件,默认为标准输出。-v
:指定Darkstat输出的详细程度,默认为1,可选范围为0到5。-f
:指定Darkstat使用的过滤规则,默认为不过滤。-d
:指定Darkstat以守护进程模式运行,默认为否。-r
:指定Darkstat读取一个已有的pcap文件,而不是实时捕获流量,默认为否。
你可以根据你的需要和喜好来调整这些参数,或者使用其他更高级的参数。你也可以创建一个配置文件,将这些参数保存在其中,然后使用-c参数来加载配置文件。例如,你可以创建一个名为darkstat.conf
的文件,内容如下:
1 | -i eth0 |
然后使用以下命令来启动Darkstat:
1 | darkstat -c darkstat.conf |
当你启动了Darkstat后,它就会开始捕获和分析你指定接口的流量,并在后台运行。你可以通过以下命令来查看它的运行状态:
1 | ps aux | grep darkstat |
你也可以通过以下命令来停止它:
1 | killall darkstat |
或者使用-k参数来发送一个停止信号:
1 | darkstat -k |
当Darkstat运行时,你可以通过浏览器访问它提供的web界面,来查看和管理你的网络流量信息。默认情况下,web界面的地址是http://localhost:667/
,你可以根据你配置的端口和地址来修改。web界面有以下几个部分:
Hosts
:显示当前活跃的主机列表,以及它们之间的流量统计。Graphs
:显示各种时间段内的总流量图表,以及各个协议和端口的流量分布。DNS
:显示当前已解析的域名列表,以及它们对应的IP地址和流量统计。About
:显示Darkstat的版本信息,以及一些有用的链接和提示。你可以在web界面上点击各个部分的标题,来展开或收起它们。你也可以点击各个部分的内容,来查看更多的细节或进行一些操作。例如,你可以点击Hosts
部分的一个主机,来查看它的流量历史、协议分布、连接列表等信息。你也可以点击Graphs
部分的一个图表,来放大或缩小它。你还可以点击DNS部分的一个域名,来查看它对应的主机列表。
Darkstat的web界面是简洁而实用的,它可以让你快速地了解你的网络状况,并进行一些基本的管理和调整。如果你想要更多的功能或定制化,你可以使用其他的网络流量监控工具,如ntopng、iftop、iptraf等。
Darkstat是一个简单而强大的网络流量监控工具,它可以捕获、分析和显示网络接口的流量信息,并提供一个基于web的图形界面,让你可以方便地查看和管理你的网络状态。本文介绍了Darkstat的安装、配置、运行和使用方法,希望对你有所帮助。
]]>Monitorix是一个免费的、开源的、轻量级的系统监控工具,可以监控尽可能多的服务和系统资源。它主要由两个程序组成:一个收集器,叫做monitorix,它是一个Perl守护进程,可以像其他系统服务一样自动启动;一个CGI脚本,叫做monitorix.cgi。Monitorix内置了自己的HTTP服务器(默认监听8080/TCP端口),所以你不需要安装第三方的web服务器来使用它。你只需要在浏览器中访问http://localhost:8080/monitorix
就可以看到统计图。
Monitorix可以监控以下内容:
Monitorix支持多种Linux发行版,如RedHat/CentOS/Rocky/Fedora/Debian/Ubuntu/Arch Linux/Gentoo/openSUSE等,也支持其他UNIX系统,如FreeBSD/OpenBSD/NetBSD等。
根据你使用的Linux发行版或UNIX系统,你可以选择不同的安装方法。这里以Debian为例,介绍如何用apt命令来安装Monitorix。
首先,你需要添加EPEL仓库到你的系统源列表中:
1 | sudo apt install epel-release |
然后,你就可以用apt命令来安装Monitorix:
1 | sudo apt install monitorix |
这个命令会自动安装Monitorix所需的依赖包,如Perl、RRDtool和其他Perl模块。
安装完成后,Monitorix会自动启动,并在后台运行。你可以用以下命令来检查Monitorix的状态:
1 | sudo systemctl status monitorix |
如果一切正常,你应该看到类似这样的输出:
1 | ● monitorix.service - Monitorix |
Monitorix的配置文件位于/etc/monitorix/monitorix.conf
,你可以用任何文本编辑器来修改它。配置文件的格式是INI风格的,有多个节(section),每个节有多个选项(option)。你可以根据你的需要来调整各种选项,比如监控的服务、图表的颜色、报警的阈值等。
配置文件中有一些重要的节,如:
global:这个节定义了一些全局的选项,如标题、语言、时区、日志文件、HTTP服务器等。
system:这个节定义了一些系统相关的选项,如主机名、IP地址、网卡、温度传感器等。
graphs:这个节定义了哪些图表要显示在web界面中,以及它们的顺序和分组。
例如,如果你想监控MySQL数据库,你需要在graphs节中启用mysql图表:graphs.mysql = y
然后,在mysql节中设置MySQL服务器的地址、端口、用户名和密码:
1 | mysql.<n>.host = localhost |
其中
修改配置文件后,你需要重启Monitorix服务才能生效:
1 | sudo systemctl restart monitorix |
使用Monitorix非常简单,你只需要在浏览器中访问http://localhost:8080/monitorix
就可以看到web界面。web界面由多个标签页组成,每个标签页显示一组图表。你可以点击不同的标签页来切换不同的图表,也可以点击图表上方的按钮来切换不同的时间范围。
web界面的样式是由/etc/monitorix/themes/default.css
文件定义的,你可以修改这个文件来改变web界面的外观。你也可以在global节中指定其他的主题文件:
global.theme = dark.css
Monitorix还提供了一个API接口,你可以用它来获取JSON格式的数据或SVG格式的图表。API接口的地址是http://localhost:8080/monitorix/api.cgi
。你可以用以下参数来调用API接口:
例如,如果你想获取系统模块的负载图表的一天的数据,你可以用以下URL:
http://localhost:8080/monitorix/api.cgi?action=data&module=system&graph=load&when=day
如果你想获取MySQL模块的查询图表的一周的图表,你可以用以下URL:
http://localhost:8080/monitorix/api.cgi?action=graph&module=mysql&graph=queries&when=week&color=black
你可以用任何支持HTTP请求的工具或语言来调用API接口,比如curl、wget、Python、Perl等。
Monitorix还有一个报警功能,可以在某些条件满足时发送邮件通知。你可以在/etc/monitorix/alerts.conf
文件中定义报警规则。报警规则的格式是:
1 | <service>.<graph>.<line> = <condition> <value> <email> |
其中:
例如,如果你想在系统负载的一分钟平均值超过5时发送邮件给admin@example.com,你可以定义以下规则:
system.load.avg1 = > 5 admin@example.com
如果你想在MySQL查询数低于1000时发送邮件给dbadmin@example.com,你可以定义以下规则:
mysql.queries.select = < 1000 dbadmin@example.com
你可以定义多个报警规则,每个规则占一行。你也可以用#符号来注释掉不需要的规则。
为了让报警功能正常工作,你还需要在/etc/monitorix/monitorix.conf
文件中配置邮件相关的选项,如:
1 | global.mail_enabled = y |
这些选项分别表示:
是否启用邮件功能
发送邮件的地址
发送邮件的SMTP服务器
发送邮件的端口
发送邮件的用户名(如果需要认证)
发送邮件的密码(如果需要认证)
配置好这些选项后,你需要重启Monitorix服务才能生效:
sudo systemctl restart monitorix
Monitorix是一个非常实用和方便的系统监控工具,它有以下优点:
免费、开源、轻量级
支持多种Linux发行版和UNIX系统
支持多种服务和系统资源的监控
内置HTTP服务器和web界面,无需额外安装
提供API接口和SVG图表,方便集成和定制
提供报警功能和邮件通知
Monitorix也有一些缺点,比如:
配置文件比较复杂,需要手动修改
图表样式比较简单,没有动画效果
报警功能比较基础,没有声音或短信通知
不支持分布式或集群监控
总之,Monitorix是一个适合中小型服务器或嵌入式设备的系统监控工具,它可以帮助你了解你的系统状态和性能,并及时发现和解决问题。如果你想要一个更强大和灵活的系统监控工具,你可以尝试其他的选择,比如Zabbix、Prometheus、Grafana等。
Monitorix虽然简单易用,但是也有一些使用技巧,可以让你更好地利用它的功能。这里列举一些常用的技巧,希望对你有用。
如果你的RouterOS没有安装Container组件,可以去官网下载对应版本的Extra packages
https://mikrotik.com/download,解压后把container.npk拖到winbox里面,重启RouterOS后,就能看到Container功能了。
但是这个时候Container还不能正常使用,还需要开启,在winbox里面打开Teminal,执行以下命令,系统会提示你需要断开电源重新启动才会生效,注意一定要断开电源重启(不能通过系统的reboot重启),硬件机器比较简单,如果是vps安装的,可以尝试硬重启。
1 | /system/device-mode/update container=yes |
重启后,检查是否开启成功:
1 | /system/device-mode/pr |
创建VETH设备,并配置IP地址和网关,同时,创建一个网桥,网桥的IP就是VETH的网关IP,并将VETH设备加入该网桥,在最后配置masquerade
,命令参考如下:
1 | /interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1 |
1 | /container/config/set ram-high=512 registry-url=https://registry-1.docker.io tmpdir=disk1/pull |
虽然Container支持拉取远程镜像,但是实测稳定性极差,所以我们选择找一台相同架构的linux服务器,部署docker后,通过这台设备来到处镜像供RouterOS使用,这里不提供导出后的镜像下载链接了,有需要的可以联系我。
以下操作在同架构的服务器上执行,供参考:
1 | docker save xxxx:latest > xxxx.tar |
准备好镜像后,将镜像文件上传到winbox,然后在winbox的Container菜单,通过添加创建,选择File对应刚才的镜像文件,interface选择刚才创建的设备veth1,其他参数根据需要配置即可。
我这里的镜像是基于gost v3创建的,创建容器命令参考:
1 | /container |
配置容器启动后,我们需要访问到容器,还需要配置一下dst-nat规则,以下配置供参考:
1 | /ip firewall nat |
本教程使用环境为PVE下的Ubuntu虚拟机:
1 | uname -an |
因为是旁路由模式,配置的网络是接入现有的局域网,我的局域网环境信息如下:
1 | 网络:172.16.0.0/12 |
首先设置docker所在机器的网卡模式,通过root用户或者sudo执行以下命令(其中ens18是你的网卡名字,根据你的实际替换):
1
ip link set ens18 promisc on
通过ip link
,检查该网卡是否开启混杂模式成功:
1
2
3
4
5开启前:
ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
开启后(多了PROMISC):
ens18: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
执行以下命令(供参考,具体网段,网卡信息以你本地为准):
1 | docker network create --driver macvlan --subnet=172.16.0.0/12 --gateway=172.16.16.172 -o parent=ens18 openwrt |
1 | 执行示例 |
不是随意的OpenWrt镜像都能在docker下运行,这里推荐https://supes.top/,可以自定义构建,也可以下载现成的镜像(下载最后一个可解压固件,一般用于Docker或LXC等容器).
下载后不用解压,将文件命名为:openwrt-x86-64-generic-rootfs.tar.gz
.
将镜像执行以下命令导入,最后一个参数是导入后的名字,看你喜好:
1 | docker import openwrt-x86-64-generic-rootfs.tar.gz cat_openwrt |
1 | 执行示例 |
执行以下命令创建容器:
1 | docker run -d \ |
1 | 执行示例 |
1 | docker exec -it openwrt sh |
1 | 执行示例 |
如果IP信息不对,可以执行命令修改并重启网络:
1 | sed -i 's/172.16.16.5/172.16.16.1/' /etc/config/network && /etc/init.d/network restart |
当然,你也可以在容器里面手动修改其他参数.
考虑到不管是路由器,还是nas服务器,基本上都有docker环境,所以我们选择简洁的docker部署方式来部署Alist服务,为了方便升级,我们把配置文件挂载到容器,以后升级可以无感.
1 | # /share/Container/alist是我存储配置文件的目录,按需修改 |
启动后,就在对应的5244端口可以访问了.首次访问因为缺少配置,可能需要手动加上后台登录目录路径/@manage
,默认的用户名是admin
,密码在docker的日志里面获取,执行命令获取:docker exec -it alist ./alist admin
在不做任务修改的情况下,我们只需要添加存储即可开始使用,目前已经支持超过15个网盘资源,常规的谷歌、OneDrive、百度、夸克、阿里云盘、115网盘等都是正常支持的,我们以夸克网盘为例,简单看看如何添加存储.
驱动选择夸克
,挂载路径填写一个唯一的路径即可,然后Cookie通过网页版夸克,通过F12,打开网络抓取Cookie填入即可.
回到主页访问,即可通过浏览器访问内容:
本地部署没有https的情况下,windows的默认客户端不支持,可以参考Windows挂载webdav;这个时候,infuse也可以直接添加webdav来使用了.
参考文档:
alist使用指南
1 | # forward-to直接指向DNS解锁服务器的地址 |
因为DNS解锁服务器解析返回的地址都是解锁服务器的IP,所以只需要在路由表增加一条路由规则即可讲目标为解锁服务器的请求转发到解锁服务器.
1 | # dst-address为你的解锁服务器IP |
网络上有大佬已经做过一键部署脚本,参考https://github.com/myxuchangbin/dnsmasq_sniproxy_install,这个脚本目前不支持arm架构,如果你需要arm架构的,可以用这个https://raw.githubusercontent.com/xieruan/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh,用法跟前面那个一样.
一键脚本虽然简单,但是对环境依赖较高,我更加倾向于用docker来部署这套服务,刚好有找到一个https://github.com/dictcp/docker-dnsmasq-sniproxy,我也fork了一份https://github.com/ilovn/docker-dnsmasq-sniproxy.
1 | git clone https://github.com/ilovn/docker-dnsmasq-sniproxy.git |
1 | docker-compose up |
检查有无报错,如果没有,且53端口的dns服务可用,我们接着来配置要解锁的域名清单.
1 | nano dnsmasq.conf |
按照里面的格式,补充解锁域名,最后xxx.xxx.xxx.xxx是IP,改为你的解锁服务器的公网IP.
1 | user=root |
1 | docker-compose up -d |
在另外的服务器上通过nslookup
来验证是否生效
1 | ~ nslookup - 解锁IP |
现在这样的部署方式,你的解锁服务就暴露在互联网了,还需要实施一些访问限制来控制,具体可以通过iptable或者其他方式,大家自行选择即可.
]]>netstat -tlunp|grep 53
查看53端口使用情况,发现是systemd-resolved
占用了,我们可以这样解决.1、先停用 systemd-resolved
服务
1 | systemctl stop systemd-resolved |
2、编辑 /etc/systemd/resolved.conf
文件
1 | nano /etc/systemd/resolved.conf |
3、按照下面说明更改,保存即可
1 | [Resolve] |
4、最后运行下面命令
1 | ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf |
5、重启VPS
后面会整理我部署dns解锁服务的过程,感兴趣的可以关注.
]]>通过资源管理,映射网络驱动器:
配置路径,因为配置了用户名密码,钩上使用其他凭证:
报错了
这是因为局域网里的WebDav没开HTTPS不能挂载,我们通过修改一下注册表参数来解决:
定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
,修改BasicAuthLevel
值为2
,同时允许HTTP与HTTPS。
修改后需要重启电脑生效。
现在就可以挂在成功了:
在ContainerStation安装的步骤很简单,先安装并启动后,我们需要进去容器去下载安装WebUI。
点击顶部的终端机,输入/bin/sh
,连接进入容器:
在新开的窗口,执行搜索查找一下默认的web路径:
可以看到,默认路径是/usr/share/transmission/web
通过命令进入目录cd /usr/share/transmission/web
继续执行命令:
1 | wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh |
按照提示执行安装即可。
完成刷新Transmission页面即可体验新的UI了。
大概的问题原因就是原来的rsa sha1不安全了,ubuntu22.04限制了原来的ssh证书登录,不想重新生成证书的话,可以通过修改sshd的配置文件来实现:
1 | sudo sh -c "echo 'HostKeyAlgorithms +ssh-rsa' >> /etc/ssh/sshd_config" |
光猫去年到手的时候,搭配的是XGPON的模块,但是小区的宽带只支持GPON,所以当时就折腾了改为GPON模式,但是当时没有记录下来,这次小区在推广FTTR,升级了XGPON,所以这次修改为GPON,把过程记录下来.
插上电源后,电脑网卡填入192.168.18.0/24网段地址,访问192.168.18.1进入光猫登录界面,输入Epadmin/adminEp
帐号密码进入光猫管理后台。
进入高级设置
>维护诊断
>配置文件管理
,点击下载配置文件
。用纯文本编辑程序(我用VSCode)打开下载的hw_ctree.xml
文件,搜索TELNETLanEnable
,将0
改为1
并保存。导入修改后的文件,点击更新配置文件
,重启光猫后,Telnet功能就已经打开了。
默认情况下固件的shell功能被阉割,需要进行补全。打开附件中的华为ONT维修使能工具2.0,选择连接光猫的网卡,选择升级,选择r20shell.bin
,点右下的启动
图标,此时光猫灯会全闪,等待指示灯全灭后关闭使能工具,断电重启光猫。
在终端或者cmd中运行telnet 192.168.18.1
,输入用户名密码Eproot/adminEp
,成功登录后,输入su
, 提示符从WAP
变成SU_WAP
, 继续输入shell
即可进入shell
,执行ls
,有文件目录信息则说明shell补全成功。
切换目录到cd /mnt/jffs2/
,通过修改hw_boardinfo
文件(修改前建议备份),将以下的值都修改为5(1是GPON模式),表示工作在XG-PON模式。该文件中也包含了硬件的sn和mac信息,如果你的宽带认证需要修改这两项参数,也可以一并进行更改。修改后重启光猫即可.
1 | obj.id = "0x00000001" ; obj.value = "5"; |
登录到光猫后台,可以看到已经工作在XG-PON模式了.
链接: https://pan.baidu.com/s/1mKGkuKuRNcgeY9lJgVSpzQ 提取码: t3yp
]]>为什么想在docker里面安装RouterOS,其实是我多年前注册的甲骨文一直吃灰,最近登录上以后,发现免费用户除了原来的micro服务器外,还可以开高配置的ARM服务器,但是CHR版本并不支持ARM架构的服务器直接安装,DD系统也不行,所以准备看看有没有前人做了这件事情。
有了用docker安装的想法,就看看有没有前人干过这件事情,在docker hub上搜索routeros,架构选择ARM64后搜索,目标出现,看起来能符合我的要求。
通过docker-compose,直接参考改一下配置文件docker-compose.yml
:
1 | version: "2" |
目录下执行:docker-compose up -d
,几分钟后,就可以用winbox连上ROS了,记得修改密码;后续升级系统什么的,都和正常的ros一样了。
电磁阀可以直接接在阳台的出水上,考虑通过一个模块来做个开关,最好是能直接通过siri就能控制,手上刚好有闲置的esp32模块和继电器,看起来可以直接搞起来.既然材料都有了,就看看固件怎么搞.
在github看了很多开源的esp32的homekit解决方案,我最先看到的是在Arduino下的Arduino-HomeKit-ESP,体验过程中,发现乐鑫还开源了他们的homekit方案esp-idf,那肯定要试试的.
我都是在MacOS下操作的,其他的平台可能初始安装的软件不太一样,可以参考官方文档.
ESP-IDF使用 macOS 上默认安装的 Python 版本,我们需要安装CMake 和 Ninja 编译工具:
brew install cmake ninja dfu-util
如果遇到以下错误:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
则必须安装 XCode 命令行工具,可运行 xcode-select --install
命令进行安装.
打开终端,切换ESP-IDF工作目录,使用 git clone 命令克隆远程仓库, 不建议直接使用master分支的代码,我使用的是v4的最新稳定版.
1 | mkdir -p ~/esp |
除了ESP-IDF本身,还需要安装ESP-IDF使用的各种工具,比如编译器、调试器、Python 包等.
1 | cd ~/esp/esp-idf |
通过一次性指定多个目标,可为多个目标芯片同时安装工具,如运行 ./install.sh esp32,esp32c3,esp32s3
。 通过运行 ./install.sh
或 ./install.sh all
可一次性为所有支持的目标芯片安装工具.
建议在profile里面配置一个别名,方便以后用的时候可以快速开始.
复制并粘贴以下命令到 shell 配置文件中(.profile
、.bashrc
、.zprofile
等).
1 | alias get_idf='. $HOME/esp/esp-idf/export.sh' |
通过重启终端窗口或运行 source [path to profile]
,如 source ~/.bashrc
来刷新配置文件.以后可以在任何终端窗口中运行 get_idf
来设置或刷新esp-idf环境.
ESP-IDF的Demo我就不跑了,我直接使用乐鑫的另外一个仓库esp-homekit-sdk,这也是我们最终目标.
下载代码到esp工作目录.
1 | cd ~/esp/ |
直接到sdk的examples里面,构建一个lightbulb测试.
1 | idf.py set-target <esp32/esp32s2/esp32c3> |
erase-flash
可以确保每次改动的配置都能正常应用,现在应该就能刷入刚才构建的固件了.
1 | wget https://download.mikrotik.com/routeros/7.8/chr-7.8.img.zip -O chr.img.zip && \ |
1 | wget https://download.mikrotik.com/routeros/6.48.6/chr-6.48.6.img.zip -O chr.img.zip && \ |
通过各种研究,网上都是ros自动分流的方案,我的诉求简单来说就是通过wireguard连回ros后,将wireguard来的请求,通过路由表都转发到旁路由OpenWrt,实现在家里面一样顺畅的上网飞跃的效果.
wireguard在ros里面的配置就很简单了,简单说来就是新建了wireguard接口,配置一个ip,注意最好不要和目前的网络段冲突,然后配置好peer,能连上就ok.接下来才是这次的重点.
参考如下图:
设置这个路由表的网关Gateway为旁路由OpenWrt的IP地址:
把wireguard的网段地址全部加到一个地址清单.
配置Mangle Rule,新建一条Chain,类型为prerouting
:
在Advanced
里面选择Src地址清单为我们刚才创建的地址清单:
继续在Action
设置为mark routing
,设置New Routing Mark
为我们前面设置的路由表,取消掉Passthrough
的勾选:
到了这里,重新连上你的wireguard,是不是已经如丝般顺滑的飞跃了?
]]>