MoreRSS

site iconDolingou 修改

技术爱好者,加密货币关注者。对Linux、Neovim、OpenWRT等技术有研究,
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Dolingou 的 RSS 预览

EasyTier内网穿透及组网教程

2025-03-30 08:00:00

😀
最近出门的次数变得越来越多,在外出的时间,家里的网络维护以及内网数据资料的获取成为了一个新的难题。之前我也有尝试过使用Tailscale以及Zerotier等方式进行内网穿透回家,但是由于Zerotier和Tailscale的中心服务器都是在国外,同时父母家那边的网络由于是社区宽带,已经不知道NAT了多少次,所以远程管理的效果还差也很折磨。这次发现了一个新的内网穿透软件:EasyTier,可以在一定程度上缓解上述提到的问题。这篇文章进行一些EasyTier的配置讲解
notion image

📝 EasyTier 介绍

EasyTier是一个去中心化的VPN组网方案,由Rust和Tokio驱动。相对于Zerotier、Tailscale的区别也在于去中心化这个特点,客户端即服务端,处于不同网络环境下的客户端在组网的同时,也是服务端的一部分,提供基于RPC的中继能力。相比于Zerotier于Tailscale的中心化组网方案,EasyTier在具有多客户端的情况下,借助P2P异地组网,相比传统的中心化组网方案,成功率更高,可实现更好的内网穿透效果,更有效的利用家宽的上下行带宽。

EasyTier 特点

以下部分内容摘选自EasyTier的Github项目介绍页面
  • 去中心化:无需依赖中心化服务,节点平等且独立。
  • 安全:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。
  • 高性能:全链路零拷贝,性能与主流组网软件相当。
  • 跨平台:支持 MacOS/Linux/Windows/Android,未来将支持 IOS。可执行文件静态链接,部署简单。
  • 无公网 IP 组网:支持利用共享的公网节点组网,
  • NAT 穿透:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。(据说在NAT4-NAT4网络下也可能打洞成功)
  • 子网代理(点对网):节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。
  • 智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
  • TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
  • 高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。
  • IPV6 支持:支持利用 IPV6 组网。
  • 多协议类型: 支持使用 WebSocket、QUIC 等协议进行节点间通信。
  • Web 管理界面:支持通过 Web 界面管理节点。

个人使用感受

目前我的网络环境为电信宽带,具有公网IPv4 + 公网IPv6,手机使用联通5G,正常情况下可以实现在建立连接之后3-5秒内实现P2P的内网穿透,不再借助中继服务器进行数据传输,同城延迟在50ms左右,如果是相同运营商的宽带,理论上同城延迟会更低。
同时,在CoalCloud(碳云)的VPS,在启用EasyTier作为节点后,与家里的Debian旁路网关和手机均可即时建立P2P连接,无需EasyTier提供公共服务器进行数据传输。

📝 EasyTier 安装方法

目前EasyTier提供了多种安装方式,以适应不同的系统平台,同时提供多种第三方工具,可用于对EasyTier节点进行管理,例如EasyTier Game ( Windows )EasyTier Manager ( Windows )luci-app-easytier ( OpenWrt )等。
我个人目前将EasyTier部署在家庭网络内的旁路网关上,并使用了点对网的子网代理,整体使用官方所提供的一键安装脚本。同时为了进行中继通信和在与NAT44网络内设备建立连接情况下,我通过Docker Compose方式将EasyTier也部署在了CoalCloud的VPS上。在旁路网关部署未使用Docker Compose的原因在于我需要使用点对网的子网代理,即通过旁路网关作为跳板,实现对局域网内其他设备的访问与管理,如果通过Docker实现,可能会增加网络的复杂性,所以只使用了脚本安装。
EasyTier不区分服务端与客户端,所以的节点所使用的程序都是一样的,所以在了解以下基于Debian的节点安装及配置之后,可以举一反三,在其他设备进行配置。如果使用OpenWRT,可以尝试在软件仓库中搜索,大部分软件仓库均已收录EasyTier。

EasyTier 一键安装脚本

首先确保你的系统以及安装了wgetunzip 这两个必须的依赖,如果没有安装可通过如下命令安装(Debian、Ubuntu等使用apt进行软件包管理的系统):
然后通过如下命令进行EasyTier的脚本一键安装:
默认脚本下载位置位于/tmp 临时文件夹下,安装完成后可进行删除。

EasyTier 基础配置

EasyTier安装后,默认的配置文件位于/opt/easytier/config/default.conf ,下面列出我的配置文件宫参考,你也可以通过config_generator生成自己的配置文件:
各项参数意义如下:
instance_name: 实例名称
instance_id : 实例的uuid,可以使用config_generator生成
ipv4 :当前设备的虚拟局域网IPv4地址,如果你需要手动为设备指定虚拟局域网的IPv4地址,则需要此项,否则可删除。
dhcp : 如果你需要手动为当前设备指定虚拟局域网IPv4地址,并已经包含了ipv4的参数项,则此项填写为false,如果你希望自动为当前设备分配虚拟局域网IPv4地址,则填写true.
listeners : 一般情况下无需改动。如果你希望使用不同的端口,则自行修改端口并对端口进行防火墙放行。
rpc_portal : 默认端口为0,在官方文档中表示默认会尝试使用15888,但实际并没有使用,EasyTier启动后无法通过easytier-cli进行数据获取,报错信息如下所示。所以建议修改监听端口为15888
network_name:虚拟局域网的名称。EasyTier是通过network_namenetwork_secret进行网络的识别与连接确认,所以需要客户端的network_namenetwork_secret 完全一致。建议使用复杂一些的网络名称
network_secret :虚拟局域网的网络密钥。
uri :节点地址,可使用官方提供的节点(tcp://public.easytier.cn:11010),如果你自建了VPS节点,也可填写tcp://IP:PORT ,默认端口为11010。也可以查看EasyTier 公共服务器列表,选择最适合自己网络环境的公共服务器节点。
enable_kcp_proxy :是否开启KCP代理,将TCP流量转换为KCP流量,提升传输速度与降低延迟。建议开启。
latency_first : 延迟优先,建议开启。
enable_exit_node:是否设置当前节点为出口节点。目前建议关闭,由于EasyTier无法进行DNS劫持,所以暂时无法像Tailscale或者Zerotier使用出口节点进行翻墙等科学上网操作。
dev_name : 设置tun网卡名称,如果你的设备具有多个程序在使用tun设备,那么建议修改一下名称,避免产生冲突。
proxy_forward_by_system : 使用系统转发替代EasyTier内置转发。相对来说性能会有所提高,但是你需要对防火墙有一定的了解,或者你的节点部署在局域网环境内,没有开启防火墙。 bind_device : 没有在配置项中列出的部分。即是否绑定物理设备,如果你的机器使用了很多的虚拟网络设备,建议删除该项,使其绑定物理网卡,避免产生无法连接问题 use_smoltcp : 是否使用用户态协议栈,避免操作系统防火墙导致的无法子网代理 / KCP 代理。个人目前是删除了该项,因为暂时没有发现因防火墙导致的无法子网代理问题,同时在开启用户态时,性能损耗较为严重。 relay_all_peer_rpc : 转发所有对等节点的RPC数据包,帮助非当前虚拟局域网的其他节点建立连接。为了安全以及流量考虑,建议关闭或删除。 enable_encryption : 是否禁用加密。false为开启加密,true为禁用加密,默认为false

防火墙放行EasyTier端口

EasyTier默认监听端口为11010 ,如果你使用系统防火墙,需要对端口进行放行。同时如果部署在家庭网络内,需要在路由器的防火墙对11010端口也需要进行放行操作(Forward)。

EasyTier 运行命令

启动EasyTier

其中@default即使用defalt.conf配置文件,以下皆同。控制命令基于Systemd。

重启EasyTier

停止EasyTier

查看EasyTier运行状态

EasyTier-CLI命令

查看EasyTier已连接的节点

返回结果类似于如下,即已经建立连接的节点和目前的基本情况,包括是否使用P2P、延迟、丢包、NAT类型等:

查看EasyTier当前节点信息

返回结果大概与下面的信息相似,包括当前的虚拟局域网IPv4地址,子网代理范围,节点ID、公网IPv4地址、公网IPv6地址等。

EasyTier 子网代理

子网代理即点对网的组网方案,可通过一台跳板机进行局域网内其他设备的访问,且无需为局域网内其他设备配置EasyTier。例如你的EasyTier部署在主路由上,但在外面时候想访问家里的NAS,那么就需要点对网的组网方案。
EasyTier的点对网组网非常简单,在配置文件中增加如下部分:
cidr即你需要实现点对网组网的网段,例如我家里的局域网网段为10.0.0.0/24,那么即填写这个网段,如果你的是192.168.1.1类似的局域网地址,那么对应的cidr为192.168.1.0/24

🤗 总结归纳

目前在测试过程中还存在如下问题或未测试项:
  • 出口节点目前不能代理DNS流量,即EasyTier无法对设备的DNS进行劫持,所以无法实现通过节点进行科学上网。目前也不支持Magic DNS功能。
  • 两侧完全NAT44且不具有IPv6公网地址情况下的内网穿透表现还未进行测试。目前已经确认在一方具有公网IPv6情况下或IPv4处于端口映射及以上,即便另一方处于NAT44环境,P2P可建立连接。
  • WireGuard目前还未进行测试,因为我基本上不用WireGuard。这几天看看抽空研究一下。

📎 参考文章

 
💡
有关Easytier安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
 

使用Pipedream同步RSS至Twitter(X.com)

2024-12-30 08:00:00

😀
之前使用过IFTTTDlvr.it进行RSS到Twitter的同步,现在这两个平台都已经收费,无法继续白嫖。在尝试同步RSS到BlueSky的时候发现了PipeDream这个网站,允许用户使用Python或者NodeJS搭建简单的工作流,所以理论上也是可以将RSS同步到Twitter,例如个人博客、豆瓣在看在读等等支持通过RSS Feed输出的信息流。在完成实践并测试成功之后,有了这篇指南,希望可以帮助到需要的朋友。尽管Twitter已经改名叫X,但是我还是更习惯称呼它为Twitter,那是一个黄金时代。

📝 RSS同步Twitter搭建前提

  • 一个Twitter开发者平台账号,申请入口为:Developer Platform,个人使用免费Plan即可,每个月允许500条POSTS。对于同步豆瓣或者个人博客来说,足够使用。Twitter开发者平台注册时会要求填写申请理由,例如:
notion image
我这里提供一份开发者平台申请理由范本,可根据自己需要修改:
🛠
Synchronize RSS to my personal X account for recording movies I have watched, music I have listened to, or content I have posted on my blog, etc. This functionality allows me to maintain a comprehensive and organized record of my personal experiences, preferences, and creative outputs. By integrating RSS feeds with my X account, I can easily keep track of the various forms of media I engage with, whether it's a captivating film that I watched over the weekend, a new album that I discovered and fell in love with, or an insightful blog post that I crafted and shared with my audience.
This synchronization process not only enhances my personal organization but also serves as a digital diary of sorts, capturing my evolving tastes and interests over time. It provides a convenient way to look back at my past activities and reflect on how my preferences have changed or remained consistent. Moreover, this feature can be a valuable tool for personal branding, allowing me to showcase my diverse interests and creative endeavors to my network.
Totally personal applications, this system is designed to cater to my individual needs and privacy preferences. It ensures that all the data being synchronized is managed within the confines of my personal X account, offering a secure and private space where I can store and access my records without any external interference. This level of personalization and control is crucial for maintaining the integrity of my digital identity and ensuring that my personal data remains protected and accessible only to me.
In summary, this RSS synchronization feature transforms my X account into a multifunctional hub where I can document, organize, and reflect upon my personal and creative experiences. It's a tool that not only simplifies my daily interactions with various forms of media but also enriches my digital presence by offering a detailed and dynamic representation of my personal journey.
  • 一个PipeDream账号,申请入口为:pipedream,可以使用Google或者Github账号登录。同样免费计划即可,可以创建3个工作流,足够使用。

📝 RSS同步Twitter配置流程

获取Twitter Key And Tokens

打开https://developer.x.com/en/portal/projects-and-apps,在左侧菜单点击Projects & AppsOverview ,然后系统已经自动生成了一个App,我们需要的是获取这个App的Api以及认证所需的Token。
点击User authentication settings 下的Set Up 按钮,进入配置页面:
notion image
  • App Permissions选择Read and write ,因为我们要发布推文;
  • Type of App选择Web App, Automated App or Bot
  • App InfoCallback URLWebsite URL 填写自己的域名,如果没有就填写pipedream的。
  • 点击Save 会输出一个Client ID和Token,但是这个不是我们需要的,没有什么用。
返回Overview页面,点击PROJECT APP后面的小钥匙图标:
notion image
点击Access Token and Secret 后面的Generate 按钮,会生成Access Token和Access Token Secret,一定要复制保存下来,等下会用到。
点击API Key and Secret 后面的Regenerate ,会生成API KeyAPI Key Secret,同样保存下来,等下在PipeDream中会用到。

配置Pipedream环境变量

现在假设你已经完成了Pipedream的注册,进入后管理后台,点击左侧菜单的Settings ,然后选择Environment Variables
notion image
点击右上的+ New Variable 添加新的变量,总计需要添加4条,对应关系如下:
  • TWITTER_ACCESS_SECRET : 获取的Access Token Secret
  • TWITTER_ACCESS_TOKEN : 获取的Access Token
  • TWITTER_API_SECRET : 获取的API Key Secret
  • TWITTER_API_KEY : 获取的API Key Secret
对应关系不要搞乱,变量名称也不要有错误。

配置Pipedream Project和Workflow

点击左侧菜单的Projects ,然后点击右上角的+ New Project ,填写项目名称,建议填写英文,字数不要太多,因为如果想要删除项目,要重新输入一遍项目名称,很麻烦。例如我就填写Twitter,然后点击Create Project ,完成项目的创建。
在列表中点击刚刚创建的项目名称,然后点击页面中硕大的一个+New 按钮,选择Workflow ,修改一下Workflow的名称,同样名称写的简单点,不然删除很麻烦,其他内容不用动,直接Create Workflow

添加RSS Trigger触发器

notion image
点击Add Trigger ,先添加一个触发器。因为我们是想在RSS有新的条目时,自动发送一条推文,所以这里的触发器就是RSS Feed。
notion image
My Sources中选择New Item in RSS Feed
notion image
Timer :建议选择8小时查询一次,降低请求。UTC懒得选择的话,维持默认也可以。
Feed URL :填写你要读取的RSS Feed地址。
Published After:维持默认不用管。如果想避免发送重复内容或者一次发送太多,可以选择当前时间较前一点点的时间。
点击Save and continue 完成Trigger触发器的配置。Pipedream会尝试读取你填写的RSS Feed地址,并返回读取结果。

添加RSS触发动作

完成上面RSS Trigger的创建之后,我们就需要配置当RSS有新的内容时,所要触发的动作,也就是在Twitter上发送一条推文。
点击画板上,Trigger下面的+号来添加Action。
notion image
选择NodeRun Node Code
notion image
在右侧的代码编辑器中,复制下面的代码内容:
然后点击Test 进行代码测试,如果没有问题的话,这时候你的Twitter中就会有一条自动发送消息。然后点击Deploy完成这个通过Pipedream推送RSS内容到Twitter的工作流部署。

Twitter推文(Tweet)效果

notion image
效果大概如图所示(有点丑,但可以用),可根据自己需要对以下代码部分进行修改:
之后如果我有新的代码调整,也会同步更新到这篇文章内。

Twitter同步代码优化版本

  • 增加了针对影视、音乐、读书不同的emoji;
  • 增加了封面图上传功能;
  • 增加了错误判断。

🤗 总结归纳

整个教程整体来说没有太多的技术难度,主要就是一些复制与粘贴的工作。不过因为之前已经在Pipedream中使用了2个Workflow用于BlueSky的RSS同步,所以一共3个的Workflow限制目前刚刚好,如果再多的话,免费版的账号就不支持了。后续会尝试将BlueSky和Twitter的同步尝试写在一个Workflow里。
如无意外,这应该是2024年的最后一篇正式文章。提前祝大家新年快乐,2025年一切顺利。

2025/01/02 更新

代码目前存在一个问题,当URL含有中文字符时,在Twitter会产生截断,我想想办法怎么修一下。

📎 参考文章

 
💡
有关Workflow安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~

RouterOS使用OSPF智能分流国外流量

2024-10-03 08:00:00

😀
前一篇文章尝试使用RouterOS Address List配合防火墙Mangle的Prerouting规则进行国内外流量的自动分流,效果还不错,秉承着不把家里网络搞塌就不算完的态度,我又尝试寻找更好(更复杂)的分流方法,原来在2020年就已经有人在使用Ospf进行路由表分流,那我也来尝试配置一下看看。在通过ospf分流后,我的旁路网关这时候才真的称得上是一个旁路由,因为真的在进行路由路径的分流。

📝 OSPF介绍

OSPF(开放最短路径优先)是一种常用的路由协议,一般用于大型企业和网络服务提供商的网络中,家庭网络使用有点杀鸡用牛刀。它的主要功能是通过路由器的路由功能,为网络内的客户端找到通往目标网络的最短路径,并自动更新这些路径信息。OSPF的工作原理是通过收集整个网络的路径信息,然后使用一种算法计算出到每个目的地的最优路径。当网络中的某条线路发生变化时,OSPF可以迅速做出调整,保证数据能够继续以最快的方式传输。

📝 配置背景

整体是All In One(All in Boom),采用Proxmox VE(PVE)虚拟机方式,以下所有设备均在Proxmox VE(PVE)内。
  • 主路由器:RouterOS(ROS)
    • 光猫桥接模式,通过PPPoE Client建立pppoe-out1建立拨号,并通过指定AC Bras的方式,获取公网IPv4地址和公网IPv6地地址。
    • 4个网口,分别为eth1 ~ eth4,其中eth4作为WAN口与光猫物理连接,pppoe-out1也是这个接口; 其他三个接口建立桥接,为bridge1,变成类似交换机的模式。
    • 版本为7.16(Stable),目前已经更新至7.18(Stable)
  • 旁路由(旁路网关):Debian 12(Linux debian 6.1.0-30-amd64)
    • 接口为ens18,网关为主路由bridge1地址
    • 运行DAED作为科学上网服务

📝 配置指南

Debian配置

开启IPv4及IPv6转发

打开/etc/sysctl.conf 确认包括以下内容,并没有被注释:
如果进行了修改,需要通过sysctl -p 命令使其生效。

安装Bird2及配置

在网络中使用OSPF协议时,需要一个路由守护进程来实现其功能,Bird2作为轻量且高性能的解决方法,同时支持IPv4及IPv6路由表。Bird2是一款支持多种路由协议的软件,广泛使用于Unix类系统,例如Linux和FreeBSD,在大多数常见系统中均可找到安装及使用方法。
  • 通过apt进行安装:
bird2安装完成后默认为运行状态,我们需要先将其关闭:
  • 编辑Bird2配置文件:
Deiban系统在安装Bird2后,配置文件默认存放位置位于/etc/bird/bird.conf ,需要对其编辑。
配置说明如下:
1. log syslog all;
  • 作用:将BIRD的所有日志输出到系统日志(syslog),可以通过journalctl -xeu bird 进行bird日志查看
2. router id 10.0.0.10;
  • 作用:定义了BIRD路由器的标识(Router ID),Router ID是一个唯一的IPv4地址形式,需要自行更改配置为自己旁路由(旁路网关)的IPv4地址
3. protocol device { scan time 60; }
  • 作用device协议的配置,负责发现和监控网络接口的状态。scan time 60;表示BIRD每60秒扫描一次所有网络接口,以更新接口状态信息。
4. protocol kernel { ipv4 { import none; export none; }; } 和 protocol kernel { ipv6 { import none; export none; }; }
  • 作用kernel协议用于在BIRD的路由表和操作系统的内核路由表之间同步路由信息。
    • import none:不从内核路由表导入路由信息。
    • export none:不将BIRD中的路由信息导出到内核路由表。
    • 禁止BIRD与操作系统的内核交换任何路由信息,完全独立管理IPv4和IPv6的路由表,避免将Bird的静态路由信息导入到内核路由表造成本地回环,同时减少内核路由表内路由规则数目,便于进行debug。
5. protocol static { ipv4; include "/etc/bird/routes4.conf"; } 和 protocol static { ipv6; include "/etc/bird/routes6.conf"; }
  • 作用static协议用于定义静态路由。静态路由不会根据网络拓扑的变化自动更新,需要手动配置。
    • ipv4:该协议块是针对IPv4的静态路由。
    • ipv6:该协议块是针对IPv6的静态路由。
    • include "/etc/bird/routes4.conf";:从指定的文件/etc/bird/routes4.conf中导入IPv4静态路由配置。
    • include "/etc/bird/routes6.conf";:从指定的文件/etc/bird/routes6.conf中导入IPv6静态路由配置。
6. protocol ospf v2 { ... }
  • 作用:这部分配置定义了OSPFv2(用于IPv4)的路由协议。
    • ipv4 { export all; }:将BIRD中的所有路由信息导出到OSPFv2,供其他OSPF路由器学习。
    • area 0.0.0.0:配置OSPF的区域,这里是骨干区域0.0.0.0。在OSPF中,所有非骨干区域必须通过骨干区域连接。
    • interface "ens18" { type pointopoint; }:指定OSPFv2在接口ens18上运行,并且接口类型为点对点(point-to-point)。点对点类型通常用于没有中间广播域的直接链路。
    • 需要根据自己实际情况修改为旁路由(旁路网关)接口名称。
7. protocol ospf v3 { ... }
  • 作用:这部分配置定义了OSPFv3(用于IPv6)的路由协议。
    • ipv6 { export all; }:将BIRD中的所有路由信息导出到OSPFv3,供其他OSPF路由器学习。
    • area 0.0.0.0:配置OSPF的区域,和OSPFv2一样,这里也是骨干区域0.0.0.0
    • interface "ens18" { type pointopoint; }:指定OSPFv3在接口ens18上运行,类型为点对点,和OSPFv2的配置类似。
    • 需要根据自己实际情况修改为旁路由(旁路网关)接口名称。

生成静态路由规则

与上一篇文章RouterOS自动分流方案(支持IPv4 & IPv6)所使用的方式不同,这次我们需要生成所有非中国大陆地区的IPv4和IPv6地址信息,在Github上有dndx/nchnroutes: !chnroutes - chnroutes negated可以使用。
  • 克隆仓库
  • 编辑Produc.py
在第10行附近,修改—next后的default参数wg0为自己的旁路由(旁路网关)接口名称, 例如我的是ens18,就改成ens18
2024年12月28日更新:
删除48行IPv4Network('172.16.0.0/12')的保留地址,或者替换为172.24.0.0/13,避免影响Cloudflare访问。原因在于Cloudflare IP Range中包括:172.64.0.0/13 这个地址范围,如果将IPv4Network('172.16.0.0/12') 配置为保留地址,那么Cloudflare所使用的172.64.0.0/13 也会被标记为直接从主网关出去,不需要经过旁路网关,所以会出现部分使用Cloudlfare CDN的网站无法访问的情况,例如Linux.do
另外,更换china_ip_list上游地址,原来的17mon的国内ip地址表太久未更新,存在地址范围错误,无法应对墙中墙(各种ISP运营商反诈劫持)的情况。
  • 编辑Makefile
取消5、6、7行的注释。因为使用的是Bird2,没有Birdc6命令,所以不做修改。
  • 生成静态路由表
需要确保你已经安装make,如果没有安装可以通过apt install make进行安装,然后执行:
返回结果:
即表示Bird2生成OSPF动态路由表成功。
  • 确认Bird2状态
执行systemctl status bird.service来查看bird2的运行状态:
如果Active处于inactive状态,需要手动执行systemctl start bird.service
  • 确认Bird2路由表状态
执行命令birdc show route protocol static1查看IPv4路由表,返回结果太多,大概是如图:
notion image
执行命令birdc show route protocol static2查看IPv6路由表:
notion image
到这里Debian(旁路网关)的Bird2配置完成,下面可以开始进行RouterOS配置

RouterOS配置

在WinBox中点击左侧菜单Routing进行配置

Router ID配置

点击RoutingRouter ID进行配置。 Name自己喜欢填什么就填什么,ID填写RouterOS的地址,Dynamic ID选择only vrfSelect From VRF选择main,点击OK提交。
notion image

OSPF配置

点击RoutingOSFP进行配置
Instances配置
点击New新建,填入Name(自己根据喜好填),也可以默认根据我的来。Version版本选择2,VRF使用main表,Router ID选择刚刚创建的main,或者直接输入RouterOS的IP地址。其他不动。
notion image
如果你使用IPv6,那么需要再新建一个Instances,Version选择为3,其他的一样。
notion image
 
Areas配置
点击Areas,点击New新增一个AreaName随便,Instance选择刚刚创建IPv4的Instance(Version版本为2),Area ID为0.0.0.0 ,Type为default ,其他不用填写。
notion image
同样,如果你需要使用IPv6,那么也需要新建一个Area,并在Instance中选择刚刚创建的Version版本为3的Instance。
notion image
 
Interface Templates配置
点击Interface Templates,点击New新增一个模板。Area选择刚刚创建的IPv4的区域,Network Typeptp(点对点,因为我们只有两个点),Cost10Priority32,其他的不用管。
notion image
同样,如果使用IPv6再新建一个Templates,Area选择IPv6的区域
notion image
 
查看结果
上述配置完成后,点击Neighbors进行节点匹配查看,如果正常的话,应该可以发现Debian(旁路网关)上配置Bird2的节点:
notion image
同时在IPRoutes中应该可以看到Debian(旁路网关)上Bird2发送过来的状态为DAo的路由表(D代表动态,A是活动状态,o为ospf)
notion image
 

避免路由环路配置

在以上配置完成后,在我们访问国外流量时会发生环路,即客户端 → RouterOS → Debian旁路网关 → RouterOS → Debian旁路网关… 不断的循环,所以需要对来源为Debian(旁路网关) 的流量进行特殊处理,这里又要用到我们的老朋友Mangle。
  1. 首先在Routing - Tables新建一个路由表,名为bypass,并勾选FIB:
notion image
  1. IP → Firewall → Managle新建规则,并将规则移动到最上方,处于高优先级:
  • General
    • Chain: prerouting
    • In.Interface: bridge1
  • Advanced
    • Src.MAC Address: Debian旁路由(旁路网关)的网卡MAC地址
  • Action
    • Action: Mark Routing
    • New Route Mark: 选择刚刚新建的Bypass
 
notion image
  1. 如果你需要使用IPv6的话,在IPv6 → Firewall → Mangle也新建一条一样的规则,同时将规则移动到最上方,处于高优先级。目前已知规则如果位于MSS钳制规则后,会导致mark routing标记无效。
  1. 配置Bypass路由表内路由规则
  1. 如果发现配置后从旁路由(旁路网关)Ping不通主路由RouterOS或者无法访问,提示Destination Host Unreachable或者Redirect Host(New nexthop: 10.0.0.1),可以在Dst.Address添加一项局域网地址范围,例如我的10.0.0.0/24 ,并点击前面空白方块出现“”,即目标地址不为局域网地址的流量。这样旁路由在使用Tailscale时候也可以正确的访问局域网内其他设备。
通过以上规则,在来源为Debian旁路由(旁路网关)的流量进入到RouterOS后,使用bypass路由表进行路由,默认这个表是空的,也就是无法对流量进行路由,所以会断网,我们需要添加一些默认的规则进去,基本照抄main表的默认规则就行:
 
  • 新建IPv4局域网路由规则
    • Dst.Address: 局域网IP地址范围,如果你是主路由是192.168.1.1 ,那么这里写192.168.1.0/24
    • Gateway: 填写网桥地址,例如我的是bridge1 ,也是RouterOS建立网桥时默认名字
    • Distance: 1
    • Routing Table: bypass
    • notion image
 
  • 新建IPv4广域网路由规则
    • Dst.Address: 0.0.0.0/0
    • Gateway: 填写PPPoE拨号接口名称,例如我的是pppoe-out1
    • Distance: 1
    • Routing Table: bypass
notion image
 
如果你没有公网IP,运营商分配给你的是一个大内网的IP地址(100.x.x.x),可能需要手动添加一条指向大内网网关的路由规则。 由于每次拨号后IP地址会变,运营商内网的网关也会变,所以需要使用RouterOS的脚本进行定时检查和修改:
  • 新建IPv6局域网路由规则
    • Dst.Address: fe80::/64%bridge1
    • Gateway: 填写网桥接口名称,例如我的是bridge1
    • Distance: 1
    • Routing Table: bypass
notion image
然后依葫芦画瓢,把其他相关的fe:: f*:: 的内网路由规则添加进去
  • 新建IPv6广域网路由规则
    • Dst.Address: ::/0
    • Gateway: 填写PPPoE接口名称,例如我的pppoe-out1
    • Distance: 1
    • Routing Table: bypass
notion image
但是这样配置完成后,我们的IPv6还是没有办法访问互联网,通过与main表比对发现,因为缺少一条上级网关的地址:
notion image
但是这个地址是动态的,所以我们需要通过一个RouterOS脚本来进行动态处理:
  • 新建Routing Rule规则
由于RouterOS的IPv6路由表使用时,会同时对main表和bypass表进行查询,所以需要添加一条Routing规则,使已经标记routing mark的连接只使用bypass表进行查询,从而避免由于路由表多表查询所产生的环路问题:
选择Routing → Rules → New, 如图填写:
notion image
需要注意的点就一个:一定在Action选择lookup only in table,即针对Routing Mark为bypss的连接只使用bypass表查询。
如果你找不到这个界面,那么也可以使用命令方式添加:
至此,RouterOS部分的全部配置完成,同时整体的基于OSPF动态路由的国内外分流也已经完成。但分流的基础还是基于IP地址,所以需要使用无污染的DNS公共服务器,同时尽量使用DOH、DOT等方式进行查询,避免运营商的DNS劫持。

🤗 总结归纳

相比上一篇使用的Address List方式,因为是直接查询路由表,不用对目标IP进行取反匹配,而且不用对所有流量进行mangle标记,仅需要对来源旁路由的流量进行标记处理,在系统性能占用上会少一些,同时也可以开启RouterOS的fast forward功能、fast track功能以及fast path,进一步降低CPU对流量处理所需资源,N4100在Fast.com300M跑满时CPU占用30%左右,内网2.5G跑满CPU占用不到10%。而且避免了旁路由(旁路网关)挂断之后国外网站完全无法访问的情况。
我认为即便是在使用Dae这种直连效率非常高的透明代理解决方案的情况下,直连流量尽可能的不经过旁路由(旁路网关)才是最佳的效率选择,所以相比使用Mihomo或者其他的软件,在分流规则的第一层通过路由表方式将国内流量直接发出去才能避免产生更多的问题(例如NAT等等等)并获得最佳的访问速度。
至于为什么要实用RouterOS来做,当然是因为RouterOS相对来说配置起来更为顺手,稳定性更好一些。当然,这些通过OpenWRT也可以实现。

📎 参考文章

 
💡
有关旁路由(旁路网关)安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~

LazyVim,Neovim下的另一种懒人配置

2023-04-05 08:00:00

😀
LazyVim从名字就可以看出,是一个面向懒人的解决方案。LazyVim是一种Neovim配置合集,它由lazy.nvim开发,可以让你轻松自定义和扩展相关配置。使用LazyVim,你可以跳过从头开始配置的步骤,因为它为Neovim配置了大量插件,使其可立即具备像目录、自动补全和跳转等功能,即插即用。
需要注意的是,LazyVim不是Neovim的替代品,而是基于「约定大于习惯」准则,将一些常用、好用的插件和配置预置到配置文件中。
为了使用LazyVim,你需要先安装Neovim,再安装LazyVim。当你打开Neovim后,它会自动加载配置和插件,从而快速完成Neovim的配置。接下来,让我们详细介绍一下LazyVim的使用方法。

1. 安装Neovim

可以通过各系统的包管理器进行安装,例如:
如何希望自己编译安装,可以参考:如何在Debian上编译安装Neovim

2. 安装LazyVim前置软件

根据LazyVim的使用要求,需要为系统安装一些前置的软件包,包括Git、Nerd Font、C编译器、Curl等,以及安装fzf、ripgrep、fd用于文件查找等。
在终端执行:
如果使用的Linux发行版为Apline,那么执行命令变更为:
其中,build-base为treesitter编译插件所必须,否则会出现例如如下的错误:

2. 安装LazyVim

在终端中使用git克隆仓库

3. 启动NeoVim

在终端中输入:
启动Neovim后,LazyVim会自动安装预置的插件并加载LazyVim配置。借助于Lazy懒加载特性,使用LazyVim的Neovim启动速度非常快,且可按需加载插件。
notion image
LazyVim的出现可以说是将主流IDE和Vim的优点有机地结合在一起,使得它既具备强大的编辑和编程功能,同时也具备交互体验和开发效率。因此,使用LazyVim可以让你更加高效地完成编程工作,并且能够享受使用Vim带来的编辑效率和快乐。

4. 其他

LazyVim的快捷键:⌨️ Keymaps | LazyVim,或者也可以查看我还是翻译中的版本LazyVim快捷键
 

LazyVim快捷键

2023-04-05 08:00:00

😀
这是一篇LazyVim的快捷键页面,还在翻译中,没有完工。

⌨️ Keymaps

LazyVim使用which-key.nvim来帮助你记住快捷键。只需按下任意键,如<space>,你就会看到一个弹出窗口,显示所有以<space>开头的可能快捷键。
notion image
  • 默认的<leader><space>
  • 默认的<localleader>\

通用

Key
Description
Mode
j
nx
<Down>
nx
k
nx
<Up>
nx
<C-h>
跳转至左边窗口
nt
<C-j>
跳转至下边窗口
nt
<C-k>
跳转至上边窗口
nt
<C-l>
跳转至右边窗口
nt
<C-Up>
增加窗口高度
n
<C-Down>
降低窗口高度
n
<C-Left>
增加窗口宽度
n
<C-Right>
降低窗口宽度
n
<A-j>
向上
niv
<A-k>
向下
niv
<S-h>
之前的缓冲区
n
<S-l>
下一个缓冲区
n
[b
之前的缓冲区
n
]b
下一个缓冲区
n
<leader>bb
切换至其他缓冲区
n
<leader>`
切换至其他缓冲区
n
<leader>bd
删除缓冲区
n
<leader>bD
删除缓冲区并关闭当前窗口
n
<esc>
退出搜索模式并清空检索条件
in
<leader>ur
重绘/清除搜索高亮/更新差异
n
n
下一个检索结果
nxo
N
上一个检索结果
nxo
<C-s>
保存文件
ixns
<leader>K
Keywordprg
n
gco
在下方添加注释
n
gcO
在上方添加注释
n
<leader>l
Lazy
n
<leader>fn
新建文件
n
<leader>xl
位置列表
n
<leader>xq
问题列表
n
[q
上一个问题
n
]q
下一个问题
n
<leader>cf
格式化
nv
<leader>cd
行诊断
n
]d
上一个诊断
n
[d
下一个诊断
n
]e
下一个Error错误
n
[e
上一个Error错误
n
]w
下一个警告
n
[w
上一个警告
n
<leader>uf
切换自动格式化 (全局)
n
<leader>uF
切换自动格式化 (缓冲区)
n
<leader>us
切换拼写检查
n
<leader>uw
切换自动换行
n
<leader>uL
切换显示相对行号
n
<leader>ud
切换诊断信息显示
n
<leader>ul
切换行号显示
n
<leader>uc
切换隐藏字符显示
n
<leader>uT
切换Treesitter的高亮显示
n
<leader>ub
切换背景颜色
n
<leader>uh
切换嵌入提示
n
<leader>gg
Lazygit (根目录)
n
<leader>gG
Lazygit (当前工作目录)
n
<leader>gb
Git 责备当前行
n
<leader>gB
Git浏览器
n
<leader>gf
Lazygit当前文件的变动记录
n
<leader>gl
Lazygit日志
n
<leader>gL
Lazygit日志 (当前工作目录)
n
<leader>qq
退出所有
n
<leader>ui
检查位置信息
n
<leader>uI
检查文件树信息
n
<leader>L
LazyVim的更新日志
n
<leader>ft
Terminal终端 (根目录)
n
<leader>fT
Terminal (当前工作目录)
n
<c-/>
Terminal终端 (根目录)
n
<c-_>
忽略 which_key
nt
<esc><esc>
进入Normal模式
t
<C-/>
隐藏终端
t
<leader>w
进入窗口模式
n
<leader>-
下方分割窗口
n
<leader>|
右侧分割窗口
n
<leader>wd
关闭窗口
n
<leader>wm
最大化
n
<leader><tab>l
最后一个tag
n
<leader><tab>o
关闭其他所有tab
n
<leader><tab>f
第一个tab
n
<leader><tab><tab>
新建一个tab
n
<leader><tab>]
下一个tab
n
<leader><tab>d
关闭tab
n
<leader><tab>[
上一个tab
n

LSP

Key
Description
Mode
<leader>cl
LSP系统信息
n
gd
跳转到定义
n
gr
跳转到引用
n
gI
跳转到实现
n
gy
跳转到类型定义
n
gD
跳转到声明
n
K
悬停
n
gK
签名帮助
n
<c-k>
签名帮助
i
<leader>ca
代码操作
nv
<leader>cc
运行Codelens
nv
<leader>cC
刷新并显示Codelens
n
<leader>cR
重命名文件
n
<leader>cr
重命名
n
<leader>cA
来源操作
n
]]
下一个引用
n
[[
上一个引用
n
<a-n>
下一个引用
n
<a-p>
上一个引用
n

bufferline.nvim

bufferline用于管理nvim所打开的buffer。
Key
描述
Mode
<leader>bl
删除左侧缓冲区
n
<leader>bo
删除其他缓冲区
n
<leader>bp
切换固定缓冲区
n
<leader>bP
删除所有未固定缓冲区
n
<leader>br
删除右侧缓冲区
n
[b
上一个缓冲区
n
[B
将缓冲区移动到上一个位置
n
]b
下一个缓冲区
n
]B
将缓冲区移动到下一个位置
n
<S-h>
上一个缓冲区
n
<S-l>
下一个缓冲区
n

conform.nvim

Key
Description
Mode
<leader>cF
对嵌入的语言进行格式化
nv

flash.nvim

Key
Description
Mode
<c-s>
切换闪电搜索
c
r
远程闪电搜索
o
R
Treesitter搜索
ox
s
闪电搜索
nox
S
Treesitter闪电搜索
nox

grug-far.nvim

Key
Description
Mode
<leader>sr
搜索并替换
nv

mason.nvim

Key
Description
Mode
<leader>cm
打开Mason
n

neo-tree.nvim

Key
Description
Mode
<leader>be
Buffer浏览器
n
<leader>e
浏览NeoTree(Root根目录)
n
<leader>E
浏览NeoTree(cwd目录)
n
<leader>fe
浏览NeoTree(Root根目录)
n
<leader>fE
浏览NeoTree(cwd目录)
n
<leader>ge
Git浏览器
n

noice.nvim

Key
描述
Mode
<c-b>
向后滚动
nis
<c-f>
向前滚动
nis
<leader>sn
+noice
n
<leader>sna
显示所有通知
n
<leader>snd
忽略所有通知
n
<leader>snh
通知历史
n
<leader>snl
最后一条通知
n
<leader>snt
通知提取器(通过Telescope/FzfLua实现)
n
<S-Enter>
重定向命令行
c

nvim-notify

Key
Description
Mode
<leader>un
忽略所有通知
n

nvim-treesitter

Key
Description
Mode
<bs>
减少选择范围
x
<c-space>
增加选择范围
n

persistence.nvim

Key
Description
Mode
<leader>qd
退出且不保存当前会话
n
<leader>ql
恢复上一个会话
n
<leader>qs
恢复会话
n

telescope.nvim

Key
Description
Mode
<leader><space>
查找文件(根目录开始)
n
<leader>,
切换Buffer
n
<leader>/
Grep(Root Dir)
n
<leader>:
命令历史
n
<leader>fb
Buffers
n
<leader>fc
查找配置文件Config
n
<leader>ff
查找文件(在根目录)
n
<leader>fF
Find Files(cwd)
n
<leader>fg
查找文件(git文件)
n
<leader>fr
Recent
n
<leader>fR
Recent(cwd)
n
<leader>gc
Commits
n
<leader>gs
Status
n
<leader>s"
Registers
n
<leader>sa
Auto Commands
n
<leader>sb
Buffer
n
<leader>sc
Command History
n
<leader>sC
Commands
n
<leader>sd
Document Diagnostics
n
<leader>sD
Workspace Diagnostics
n
<leader>sg
Grep(Root Dir)
n
<leader>sG
Grep(cwd)
n
<leader>sh
Help Pages
n
<leader>sH
Search Highlight Groups
n
<leader>sj
Jumplist
n
<leader>sk
快捷键映射图
n
<leader>sl
Location List
n
<leader>sm
Jump to Mark
n
<leader>sM
帮助页面
n
<leader>so
选项
n
<leader>sq
Quickfix List
n
<leader>sR
Resume
n
<leader>ss
Goto Symbol
n
<leader>sS
Goto Symbol(Workspace)
n
<leader>sw
Word(Root Dir)
n
<leader>sW
Word(cwd)
n
<leader>sw
Selection(Root Dir)
v
<leader>sW
Selection(cwd)
v
<leader>uC
Colorscheme with Preview
n

todo-comments.nvim

Key
Description
Mode
<leader>st
待办清单
n
<leader>sT
Todo/Fix/Fixme
n
<leader>xt
Todo(Trouble)
n
<leader>xT
Todo/Fix/Fixme(Trouble)
n
[t
Previous Todo Comment
n
]t
Next Todo Comment
n

trouble.nvim

Key
Description
Mode
<leader>cs
Symbols (Trouble)
n
<leader>cS
LSP references/definitions/... (Trouble)
n
<leader>xL
Location List (Trouble)
n
<leader>xQ
Quickfix List (Trouble)
n
<leader>xx
Diagnostics (Trouble)
n
<leader>xX
Buffer Diagnostics (Trouble)
n
[q
Previous Trouble/Quickfix Item
n
]q
Next Trouble/Quickfix Item
n

which-key.nvim

Key
Description
Mode
<c-w><space>
Window Hydra Mode (which-key)
n
<leader>?
Buffer Keymaps (which-key)
n

CopilotChat.nvim

Key
Description
Mode
<c-s>
Submit Prompt
n
<leader>a
+ai
nv
<leader>aa
Toggle (CopilotChat)
nv
<leader>ad
Diagnostic Help (CopilotChat)
nv
<leader>ap
Prompt Actions (CopilotChat)
nv
<leader>aq
Quick Chat (CopilotChat)
nv
<leader>ax
Clear (CopilotChat)
nv

mini.surround

Key
Description
Mode
gsa
Add Surrounding
nv
gsd
Delete Surrounding
n
gsf
Find Right Surrounding
n
gsF
Find Left Surrounding
n
gsh
Highlight Surrounding
n
gsn
Update MiniSurround.config.n_lines
n
gsr
Replace Surrounding
n

neogen

Key
Description
Mode
<leader>cn
Generate Annotations (Neogen)
n

yanky.nvim

Key
Description
Mode
<leader>p
打开Yank的历史记录
nx
<p
Put and Indent Left
n
<P
Put Before and Indent Left
n
=p
Put After Applying a Filter
n
=P
Put Before Applying a Filter
n
>p
Put and Indent Right
n
>P
Put Before and Indent Right
n
[p
Put Indented Before Cursor (Linewise)
n
[P
Put Indented Before Cursor (Linewise)
n
[y
Cycle Forward Through Yank History
n
]p
Put Indented After Cursor (Linewise)
n
]P
Put Indented After Cursor (Linewise)
n
]y
Cycle Backward Through Yank History
n
gp
Put Text After Selection
nx
gP
Put Text Before Selection
nx
p
Put Text After Cursor
nx
P
Put Text Before Cursor
nx
y
Yank Text
nx

nvim-dap

Key
Description
Mode
<leader>d
+debug
nv
<leader>da
Run with Args
n
<leader>db
Toggle Breakpoint
n
<leader>dB
Breakpoint Condition
n
<leader>dc
继续
n
<leader>dC
Run to Cursor
n
<leader>dg
Go to Line (No Execute)
n
<leader>di
Step Into
n
<leader>dj
Down
n
<leader>dk
Up
n
<leader>dl
Run Last
n
<leader>do
Step Out
n
<leader>dO
Step Over
n
<leader>dp
暂停
n
<leader>dr
Toggle REPL
n
<leader>ds
Session
n
<leader>dt
Terminate
n
<leader>dw
Widgets
n

nvim-dap-ui

Key
Description
Mode
<leader>de
Eval
nv
<leader>du
Dap UI
n

aerial.nvim

Key
Description
Mode
<leader>cs
Aerial (Symbols)
n

telescope.nvim

Key
Description
Mode
<leader>ss
Goto Symbol (Aerial)
n

dial.nvim

Key
Description
Mode
<C-a>
Increment
nv
<C-x>
Decrement
nv
g<C-a>
Increment
nv
g<C-x>
Decrement
nv

fzf-lua

Key
Description
Mode
<leader><space>
查找文件 (根目录开始)
n
<leader>,
切换Buffer
n
<leader>/
Grep (Root Dir)
n
<leader>:
命令历史记录
n
<leader>fb
Buffers
n
<leader>fc
查找配置文件
n
<leader>ff
Find Files (Root Dir)
n
<leader>fF
Find Files (cwd)
n
<leader>fg
Find Files (git-files)
n
<leader>fr
Recent
n
<leader>fR
Recent (cwd)
n
<leader>gc
Commits
n
<leader>gs
状态
n
<leader>s"
Registers
n
<leader>sa
Auto Commands
n
<leader>sb
Buffer
n
<leader>sc
Command History
n
<leader>sC
Commands
n
<leader>sd
Document Diagnostics
n
<leader>sD
Workspace Diagnostics
n
<leader>sg
Grep (Root Dir)
n
<leader>sG
Grep (cwd)
n
<leader>sh
帮助页面
n
<leader>sH
Search Highlight Groups
n
<leader>sj
Jumplist
n
<leader>sk
按键映射
n
<leader>sl
Location List
n
<leader>sm
跳转到标记
n
<leader>sM
帮助页面
n
<leader>sq
Quickfix List
n
<leader>sR
继续
n
<leader>ss
Goto Symbol
n
<leader>sS
Goto Symbol (Workspace)
n
<leader>sw
Word (Root Dir)
n
<leader>sW
Word (cwd)
n
<leader>sw
Selection (Root Dir)
v
<leader>sW
Selection (cwd)
v
<leader>uC
Colorscheme with Preview
n

todo-comments.nvim

Key
Description
Mode
<leader>st
Todo
n
<leader>sT
Todo/Fix/Fixme
n

harpoon

Key
Description
Mode
<leader>1
Harpoon to File 1
n
<leader>2
Harpoon to File 2
n
<leader>3
Harpoon to File 3
n
<leader>4
Harpoon to File 4
n
<leader>5
Harpoon to File 5
n
<leader>h
Harpoon Quick Menu
n
<leader>H
Harpoon File
n

vim-illuminate

Key
Description
Mode
[[
前一个引用
n
]]
下一个引用
n

leap.nvim

Key
Description
Mode
gs
Leap from Windows
nox
s
Leap Forward to
nox
S
Leap Backward to
nox

mini.surround

Key
Description
Mode
gz
+surround
n

mini.diff

Key
Description
Mode
<leader>go
Toggle mini.diff overlay
n

mini.files

Key
Description
Mode
<leader>fm
Open mini.files (Directory of Current File)
n
<leader>fM
Open mini.files (cwd)
n

outline.nvim

Key
Description
Mode
<leader>cs
Toggle Outline
n

overseer.nvim

Key
Description
Mode
<leader>ob
Task builder
n
<leader>oc
清除缓存
n
<leader>oi
Overseer Info
n
<leader>oo
执行任务
n
<leader>oq
Action recent task
n
<leader>ot
Task action
n
<leader>ow
任务列表
n

refactoring.nvim

Key
Description
Mode
<leader>r
+refactor
nv
<leader>rb
Extract Block
n
<leader>rc
Debug Cleanup
n
<leader>rf
Extract Block To File
n
<leader>rf
Extract Function
v
<leader>rF
Extract Function To File
v
<leader>ri
Inline Variable
nv
<leader>rp
Debug Print Variable
nv
<leader>rP
Debug Print
n
<leader>rs
Refactor
v
<leader>rx
Extract Variable
v

telescope.nvim

Key
Description
Mode
<leader><space>
Find Files (Root Dir)
n
<leader>,
Switch Buffer
n
<leader>/
Grep (Root Dir)
n
<leader>:
Command History
n
<leader>fb
Buffers
n
<leader>fc
Find Config File
n
<leader>ff
Find Files (Root Dir)
n
<leader>fF
Find Files (cwd)
n
<leader>fg
Find Files (git-files)
n
<leader>fr
Recent
n
<leader>fR
Recent (cwd)
n
<leader>gc
Commits
n
<leader>gs
显示telescope状态
n
<leader>s"
Registers
n
<leader>sa
Auto Commands
n
<leader>sb
Buffer
n
<leader>sc
Command History
n
<leader>sC
Commands
n
<leader>sd
Document Diagnostics
n
<leader>sD
Workspace Diagnostics
n
<leader>sg
Grep (Root Dir)
n
<leader>sG
Grep (cwd)
n
<leader>sh
帮助页面
n
<leader>sH
Search Highlight Groups
n
<leader>sj
Jumplist
n
<leader>sk
显示telescope的按键映射
n
<leader>sl
Location List
n
<leader>sm
Jump to Mark
n
<leader>sM
Man Pages
n
<leader>so
显示telescope的选项
n
<leader>sq
Quickfix List
n
<leader>sR
继续
n
<leader>ss
Goto Symbol
n
<leader>sS
Goto Symbol (Workspace)
n
<leader>sw
Word (Root Dir)
n
<leader>sW
Word (cwd)
n
<leader>sw
Selection (Root Dir)
v
<leader>sW
Selection (cwd)
v
<leader>uC
Colorscheme with Preview
n

nvim-ansible

Key
Description
Mode
<leader>ta
Ansible Run Playbook/Role
n

markdown-preview.nvim

Key
Description
Mode
<leader>cp
Markdown格式的预览
n

nvim-dap-python

Key
Description
Mode
<leader>dPc
Debug Class
n
<leader>dPt
Debug Method
n

venv-selector.nvim

Key
Description
Mode
<leader>cv
选择虚拟环境
n

vim-dadbod-ui

Key
Description
Mode
<leader>D
Toggle DBUI
n

vimtex

Key
Description
Mode
<localLeader>l
+vimtext
n

neotest

Key
Description
Mode
<leader>t
+test
n
<leader>tl
Run Last
n
<leader>to
显示输出结果
n
<leader>tO
Toggle Output Panel
n
<leader>tr
Run Nearest
n
<leader>ts
Toggle Summary
n
<leader>tS
停止
n
<leader>tt
Run File
n
<leader>tT
Run All Test Files
n
<leader>tw
Toggle Watch
n

nvim-dap

Key
Description
Mode
<leader>td
Debug Nearest
n

edgy.nvim

Key
Description
Mode
<leader>ue
Edgy Toggle
n
<leader>uE
Edgy Select Window
n

chezmoi.nvim

Key
Description
Mode
<leader>sz
Chezmoi
n

mason.nvim

Key
Description
Mode
<leader>gg
GitUi (Root Dir)
n
<leader>gG
GitUi (cwd)
n

octo.nvim

Key
Description
Mode
<leader>a
+assignee (Octo)
n
<leader>c
+comment/code (Octo)
n
<leader>gi
List Issues (Octo)
n
<leader>gI
Search Issues (Octo)
n
<leader>gp
List PRs (Octo)
n
<leader>gP
Search PRs (Octo)
n
<leader>gr
List Repos (Octo)
n
<leader>gS
Search (Octo)
n
<leader>i
+issue (Octo)
n
<leader>l
+label (Octo)
n
<leader>p
+pr (Octo)
n
<leader>r
+react (Octo)
n
<leader>v
+review (Octo)
n

fzf-lua

Key
Description
Mode
<leader>fp
项目
n

telescope.nvim

Key
Description
Mode
<leader>fp
项目
n

kulala.nvim

主要用于API调试
Key
Description
Mode
<leader>R
+Rest
n
<leader>Rn
跳转到下一个请求
n
<leader>Rp
跳转到上一个请求
n
<leader>Rs
发送请求
n
<leader>Rt
收起/打开head和body
n
 
💡
有关NeoVim安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~

青龙面板错误解决方法小全

2023-03-01 08:00:00

😀
本篇文章旨在记录并解决目前我在使用Docker运行青龙面板(qinglong)薅京东羊毛时所遇到的问题,包括各种疑难杂症、依赖问题、报错问题。希望可以对其他人有所帮助,我会持续进行更新,请善用ctrl-f进行搜索。有人问青龙面板除了挂京东之外,还能挂什么? 现在除了挂京东之外,其他都没有什么收益,就专心薅东哥羊毛吧,不是黑号的情况下,每个月1000京豆还是有的。

📝 青龙面板问题列表

1. 运行日志提示:cookie.match is not a function

cookie相关脚本出现问题,删除任务之后重新拉库解决

2. bizCode, bizMsg, lxml依赖问题

目前已基本没有脚本依赖这三个,大部分教程已经过期,alpine包仓库里也已经移除这三个程序。
如果需要安装bizCode、bizMsg依赖,需要先安装alpine-sdk、autoconf、automake以及libtool依赖,这样的话,整体Linux部分依赖就是,注意顺序:
整体的Linux依赖安装时间较长,请耐心等待。
在依赖安装过程中,安装过程中可能日志中可能会出现:
建议自查网络是否存在问题。
另外还有一种办法就是使用Debian镜像版本的青龙,docker-compose文件为:
如果你的青龙面板部署在旁路由上,和科学上网插件在同一台机器,建议使用Docker的host模式,避免因为网络问题所产生的报错:

3. 青龙日志分析 && 自动补全依赖提示:

这种情况一般是因为拉了多个库,存在多个日志检测脚本文件造成的。通过添加环境变量:
通过指定运行的日志检测脚本的绝对路径,让其他日志检测脚本检测到路径与此变量不符将停止运行

4. 微信签到红包报错

账号是黑号,没必要挣扎了。

5. Faker2库拉取失败,点击链接提示404

Faker2库的拉取命令为:
其中,使用git.metauniverse-cn.com用于Github的加速,如果拉库失败,且点击链接提示404,可在开启科学上网的情况下,使用不加速Github的拉库命令:

6. 总看到助力池,那助力池是什么?如何使用助力池进行助力?

参考这篇文章:《如何加入京东助力池?

7. Python3依赖安装失败

例如ping3canvasjiebaPrettyTable等。这些Python的依赖安装报错大概为:

解决方法(1)

主要都是集中在pip发现有多个版本的该Python包,无法选择使用哪个。这个问题一般是由于pip 版本问题导致的,我们需要对docker内的pip版本进行更新。步骤如下:
  1. 通过SSH进入Docker内的Bash命令行
  1. 更新pip版本
  1. 添加Linux依赖
在青龙的依赖管理中,Linux部分添加如下依赖:
  1. 重新执行ping3canvasjiebaPrettyTable等Python3的依赖安装。

解决方法(2)

如果解决方法(1)没有解决Python依赖安装报错问题,那么可能是网络问题导致的依赖下载超时。建议修改Docker网络模式为HOST宿主模式,这种问题一般出现在青龙面板和科学上网同时都部署在旁路由上导致,Docker无法正常使用旁路由的分流。如果你使用的是Clash系列的插件,也可以在青龙面板的配置文件中修改ProxyUrl 为你的插件所提供的socket5http代理地址及端口,例如OpenClash的为http://127.0.0.1:7890
使用Host模式的Docker-Compose文件:

8. Ninja面板扫码登录不跳转

Ninja扫码登录京东之后未跳转,这个是青龙面板的版本问题。2.18.2版本的青龙面板不再使用/ql/data/config/auth.json 存储登录鉴权信息,所以Ninja无法写入JD Cookie,造成扫码登录京东之后不跳转,JD Cookie也未更新。
遇到此问题建议更换青龙面板为较老版本。

9. 青龙面板拉库提示脚本添加失败(jwt malformed)

具体表现为拉库成功,但是添加脚本失败,大概的类似日志如下:

解决办法

在docker shell中运行如下命令:
命令大概意思为添加tslib依赖,并重新检查青龙面板的依赖关系,并对存在问题的部分进行自动修复。
然后再次执行拉库命令即可,这里使用的是faker4的纯净版脚本库:

10. 如何获取京东APP的wskey和pin

目前Android上的VNET app已经无法下载,所以可以使用ProxyPin进行替代。Google Play商店可以下载。操作基本与VNET类似,需要先安装证书,并添加京东APP到白名单,才可以开启数据监控。
如果在ProxyPin中找不到x-im.jd.com 相关域名获取pin和wskey(目前能够搜索到的大多数教程都是通过这个域名获取wskey,但是目前似乎京东APP不再请求这个地址),可以尝试查找sh.jd.com 相关域名,也可以获取到pin和wskey。