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情况下
  • 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也可以实现。

📎 参考文章

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

国内外DNS服务器推荐列表

2024-09-05 08:00:00

😀
之前介绍了不少关于MosDNS、AdGuard Home和OpenClash的内容,里面绕不开的一个部分就是:用来解析国外域名,获取无污染解析结果的DNS服务器应该选择哪家,或者说有哪些无污染的公共DNS服务器可以选择。今天这篇文章,就对我使用过的DNS服务器进行一个整理,并进行无污染DNS服务器的推荐。

📝 个人对DNS服务器选择的看法

DNS服务器的主要作用是将域名解析转换为IP地址,同时支持负载均衡、高可用性、反向解析、缓存加速等功能。DNS是互联网的基础设施之一,几乎所有的网络通信都依赖于DNS服务。所以选择一个稳定、高速且无污染的DNS的重要性不言而喻。在使用DNS分流的情况下,对国内域名与国外域名分别配置DNS可以有效提升解析速度与准确性,例如我在使用的MosDNS和AdGuard Home。

📝 国内DNS服务器

国内的公共DNS服务选择不多,我认为国内DNS只有三个选择,阿里云公共DNS(阿里巴巴)、DNSPod(腾讯)以及各省市运营商下发的DNS。阿里云公共DNS和DNSPod均支持ECS(edns-client-subnet)协议,在一定程度上可以缓解整体解析速度不如运营商DNS的情况。其他例如114、360、百度等等,均有前科,不太推荐选择。
同时在国内DNS的选择及使用上,我个人更推荐使用DOH、DOT方式,避免DNS泄露给运营商,从而产生DNS劫持。在部分省份,运营商DNS劫持会将目标网站的解析结果返回为反诈页面,例如被运营商DNS劫持到www.js96110.com.cn
名称
标准DNS地址
DOH地址
DOT地址
是否支持H3
ECS
DNSPod
119.29.29.29 / 182.254.116.116
https://doh.pub/dns-query
dot.pub
支持
AliDNS
223.5.5.5 / 223.6.6.6
https://dns.alidns.com/dns-query
dns.alidns.com
支持

📝 国外DNS服务器

我个人一般会用Google DNSNextDNS、以及AdGuard DNS作为主要无污染DNS使用。NextDNS的免费额度足够家庭使用,当免费额度用完就切换到AdGuard DNS。在Google DNS存在国内访问问题的时候,会选择Quad9或者OpenDNS。Cloudflare DNS在我这里的稳定性和速度并不好,所以很少选择。大多数的国外公共DNS均可以返回无污染的DNS解析结果,这些公共DNS服务基本都支持DNSSEC。
在衡量与选择国外公共DNS服务时,延迟与丢包一般是我首先考虑的因素,其次就是DOH(DNS over HTTPS)和DOT(DNS over TLS)的支持,如果能够支持H3(http3)或者tls pipeline的话,那么一般就会是首选的DNS服务。其他次级考虑的因素还包括是否支持ECS,如果可以支持ECS,我会选择代理出口位置附近的IP。通过MosDNS的ECS功能,可以自定义ECS地址,使解析的CDN结果更靠近所配置的IP地址,从而提高解析结果的访问速度,例如我喜欢配置国外的ECS地址为代理的出口地址,这样通过代理访问时,可以获得最佳速度及可用性。
同时在使用DOT或DOH使,可使用dial_addr替代域名,可免去每次建立连接时需要Bootstrap DNS先解析DNS服务器域名。dial_addr一般为标准DNS的IPv4和IPv6地址。
由于一些公共DNS使用DNSCRYPT,需要使用DNS服务器公钥,存在局限性,所以暂时未列入表单内,也不作为DNS选择与衡量的指标。
同时大部分公共解析服务均为IPv4和IPv6双栈,即使用IPv4的DNS公共解析服务也可以解析IPv6地址,所以列表内不再进行IPv4和IPv6的区分。
在设备支持的情况下,非常建议选用支持DoH与DoT的DNS服务器。

推荐使用的DNS服务器

DNS服务名称
标准DNS地址
DoH地址
DoT地址
是否支持H3
ECS
Google DNS
8.8.8.8 / 8.8.4.4
https://dns.google/dns-query
dns.google
支持
Cloudflare
1.1.1.1 / 1.0.0.1
https://cloudflare-dns.com/dns-query
1dot1dot1dot1.cloudflare-dns.com
支持
Quad9
9.9.9.9 / 149.112.112.112
https://dns.quad9.net/dns-query
dns.quad9.net
支持
AdGuard Public DNS
94.140.14.14 / 94.140.15.15
https://dns.adguard.com/dns-query
dns.adguard.com
支持
NextDNS
45.90.28.0 / 45.90.30.0
https://dns.nextdns.io
45.90.28.0 / 45.90.30.0
支持
OpenDNS
208.67.222.222 / 208.67.220.220
https://doh.opendns.com/dns-query
208.67.222.222 / 208.67.220.220
支持
Yandex DNS
77.88.8.8 / 77.88.8.1
https://doh.yandex.net/dns-query
dns.yandex.net
不支持
CleanBrowsing
185.228.168.9 / 185.228.169.9
https://doh.cleanbrowsing.org/dns-query
security-filter-dns.cleanbrowsing.org
不支持
jp.tiar.app
172.104.93.80
https://jp.tiarap.org/dns-query
jp.tiar.app
不支持
Comodo Secure DNS
8.26.56.26
https://doh.comodo.com/dns-query
dns.comodo.com
不支持
DNS.WATCH
84.200.69.80
https://dns.watch/dns-query
不支持
Blahdns(新加坡)
46.250.226.242 2407:3640:2205:1668::1
https://doh-sg.blahdns.com/dns-query
dot-sg.blahdns.com
不支持
CleanBrowsing
185.228.168.9 185.228.169.9
https://doh.cleanbrowsing.org/doh/security-filter/
security-filter-dns.cleanbrowsing.org
不支持
Block malware
76.76.2.1
https://freedns.controld.com/p1
tls://p1.freedns.controld.com
不支持
DeCloudUs 
78.47.212.211:9443
https://dns.decloudus.com/dns-query
tls://dns.decloudus.com
不支持
Mullvad(新加坡)
-
https://dns.mullvad.net/dns-query
tls://dns.mullvad.net
不支持

仅作测试使用的DNS服务器

以下DNS服务器是仅作测试使用的DNS服务器,不建议作为日常主力使用DNS解析服务,推荐仅在测试时进行使用,或作为落地区域的DNS使用。这些DNS服务大多不提供DOH或DOT选项,且在直连情况下存在延迟较高、丢包较多等不稳定因素。
DNS服务名称
标准DNS地址
DoH地址
DoT地址
是否支持H3
ECS
HKBN DNS
203.80.96.10 / 203.80.96.9
不支持
不支持
不支持
NTT Communications DNS
61.213.169.170 / 61.213.169.171
不支持
不支持
不支持
NEC BIGLOBE DNS
202.225.96.66 / 202.225.96.68
不支持
不支持
不支持
Yahoo Japan DNS
182.22.70.1 / 182.22.70.2
不支持
不支持
不支持
DNS.SB
45.11.45.11
https://doh.dns.sb/dns-query
dot.sb
不支持
腾讯国际
162.14.21.178/ 162.14.21.56
不支持,可通过腾讯云套娃DOH
不支持,可通过腾讯云套娃DOT
不支持
Microsoft DNS / Level 3 Communications
4.2.2.2 / 4.2.2.1
不支持
不支持
不支持
HiNet/中華電信
168.95.1.1 / 168.95.192.1
不支持
不支持
不支持
TWNIC Quad101 Public DNS
101.101.101.101 / 101.102.103.104
不支持
不支持
不支持

DNS延迟测试脚本

这个Python脚本需要ping3依赖,复制以上代码并保存为*.py文件,通过命令行运行。可替换IP地址为自己想要进行测速的DNS的IP地址,每个DNS的IP地址Ping次数默认为4 。脚本的注释算是清晰,可根据自己需要在脚本中修改。

非公共DNS服务(增强型DNS服务

这里的非公共DNS是指提供具有用户唯一标识的DNS服务,允许用户自定义DNS过滤与隐私保护,提供访问控制,提供查询日志,提供部分路由优化等。相较于免费的公共DNS服务,这种DNS服务在部分情况下访问速度可能会更好一些。基础的DOH、DOT、DNSSEC、ECS基本都支持。
  • XNS.One提供非公共DNS使用,属于付费服务,需要邀请码,可以在他们的Telegram频道蹲一下。付费不支持支付宝与微信,只能信用卡付款。
  • NextDNS,我目前主要使用的DNS服务,免费版每个月提供30万次查询,基本够日常使用。可定制拦截列表。
  • AdGuard DNS,与NextDNS类似,免费版每个月提供30万次查询,允许配置5个接入点,2个服务器,支持配置100条自定义规则。

📝 其他关于DNS的参考信息

enable_pipeline: TCP/DoT使用RFC 7766新的query pipelining连接复用模式。
  • 启用后可大幅提高连接利用率,减少建立连接/握手的次数,进而降低响应延时。
  • 并非所有DNS服务器都支持。必须确定DNS服务器支持后再启用该选项。
  • Tips: 已知Google和Cloudflare的TCP/DoT是支持该模式的。知名的公共DNS服务商大多数都支持该模式。如果你使用MosDNS,可以使用 mosdns probe pipeline {tcp|tls}://server_ip[:port] 测试命令测试服务器是否支持。比如 mosdns probe pipeline tls://8.8.8.8

什么是ECS(EDNS Client Subnet)?

ECS(EDNS Client Subnet)是扩展DNS查询的一种机制,旨在提升内容分发网络(CDN)和地理位置相关的服务的效率。通常DNS服务器只看到客户端的IP地址,但通过ECS,DNS请求会包含客户端IP的一部分(子网信息)。这样,内容分发网络可以根据客户端的地理位置,返回更接近用户的服务器,减少延迟,提升性能。ECS主要用于优化网络和加速服务的访问,但也可能带来一定的隐私泄露风险。

什么是DOH(DNS over HTTPS)?

DoH(DNS over HTTPS)是一种技术,用来加密你的DNS查询。通常情况下(UDP及TCP协议情况下),DNS查询是明文的,容易被ISP运营商看到和监控。而DoH会通过HTTPS协议加密这些查询,确保你的请求内容是安全的,不会被ISP和运营商偷看。就像你在发送加密的信息一样,DoH保护了你上网时的隐私,并在一定程度上可以避免DNS劫持。

什么是ECH(Encrypted Client Hello)?

ECH(Encrypted Client Hello)是一种技术,用来加密你访问网站时的SNI(服务器名称指示)信息。通常情况下,当你想访问某个网站时,这个请求是明文的,运营商或其他第三方可以轻易看到你在访问什么网站,并可能进行拦截或阻断(例如SNI阻断)。这也是为什么有时你在国内访问GitHub和Linux.DO会遇到Time Out问题的原因之一。有了ECH,这些SNI信息就被加密了,外面的人就看不到你要访问哪个网站,从而提高了你的隐私和安全性。简单来说,ECH就像是在发送加密的信息,让你的浏览行为更加私密。

什么是DNSSEC(Domain Name System Security Extensions)?

DNSSEC(Domain Name System Security Extensions)是DNS系统的安全扩展协议,通过数字签名技术来确保DNS记录的真实性和完整性。它通过建立从根域名到下级域名的信任链,使用公私钥对对DNS记录进行签名和验证,能有效防止DNS欺骗和缓存污染。DNSSEC引入了几个关键记录类型:DNSKEY用于存储域名公钥,RRSIG包含数字签名信息,DS记录用于下级域委派签名,以及NSEC/NSEC3用于提供域名不存在的证明。虽然DNSSEC的配置较为复杂,可能增加DNS服务器负载并导致响应包变大,但它在防止DNS劫持和欺骗方面发挥着重要作用,目前已得到Google DNS (8.8.8.8)和Cloudflare (1.1.1.1)等主流公共DNS服务器的支持。

其他关于DNS选择的文章?

关于DNS选择,也可以参考:如何选择适合的公共DNS? [2020] - Sukka's Blog
💡
有关DNS上的问题,欢迎您在底部评论区留言,一起交流~

以太坊(ETH)公共RPC节点推荐

2023-03-25 08:00:00

😀
以太坊(Ethereum as known as ETH)是一种基于区块链技术的开源平台,支持智能合约(Smart Contract)、去中心化应用(DApps)以及加密货币代币发行(Token)等功能。作为一个分布式系统,以太坊网络由众多节点组成,并通过公共RPC(Remote Procedure Call)接口提供与其他节点通信的方式,可以将RPC理解为提供接入区块链网络的入口,类似一扇门,我们所有在ETH链上的交易,均需要通过这扇门才能进行。本文将介绍以太坊的公共RPC节点。
 

📝 什么是以太坊公共RPC节点?

以太坊(ETH)公共RPC节点是一种与以太坊网络进行交互的方式,通过RPC,允许开发人员查询区块链数据、广播交易以及执行智能合约(Smart Contract)等操作。这些节点由不同的服务提供商托管,可以通过使用HTTP或WebSocket协议连接到它们,并通过节点提供的JSON-RPC接口与以太坊的区块链网络(ETH Mainnet)通信。

🤗 为什么需要以太坊公共RPC节点?

在链上交互、交易时,程序需要与以太坊网络进行交互时,或者作为开发者在开发DApps和智能合约时,在自己的节点上运行完整的以太坊客户端可能会很耗费资源和时间。相反,使用公共RPC节点可以更快地获取数据和执行交易,同时还可以节省部署和维护以太坊节点所需的成本。
在ETH拥堵的时候,通过切换公共RPC节点,选择延迟较低的RPC入口,减少延迟,避免塞车,加快交易速度,抢占先机。需要注意的是,切换RPC节点,并不能降低Gas费用,RPC解决的是区块链的入口问题,而不是解决整条链的性能与费用问题。

📎 常用的以太坊公共RPC节点有哪些?

  1. https://mainnet.infura.io - Infura是以太坊和IPFS的托管节点服务,提供了以太坊主网和测试网络的RPC节点。
  1. https://cloudflare-eth.com - Cloudflare提供的以太坊主网RPC节点。
  1. https://api.mycryptoapi.com/eth - MyCrypto API提供的以太坊主网RPC节点。
  1. https://rpc.slock.it/mainnet - Slock.it提供的以太坊主网RPC节点。
  1. https://eth.rpc.rivet.cloud - Rivet提供的以太坊主网RPC节点。
  1. https://mainnet-rpc.dexon.org - Dexon提供的以太坊主网RPC节点。
  1. https://eth-mainnet.alchemyapi.io/v2/{API_KEY} - Alchemy提供的以太坊主网RPC节点,可申请私有api key使用。
  1. https://rpc.moonriver.moonbeam.network - Moonriver提供的以太坊主网RPC节点。
  1. https://eth.rpc.tor.us - Torus提供的以太坊主网RPC节点。
  1. https://mainnet-rpc.thundercore.com - ThunderCore提供的以太坊主网RPC节点。
  1. https://rpc.ankr.com/eth - Ankr提供的ETH主网RPC节点。付费版本支持Websocket协议。
  1. https://quicknode.com - 提供支持DApp构建者使用的专业以太坊RPC和Web3 API接入服务。需要注册,免费版提供http provider和wss的API。
  1. https://eth.llamarpc.com - llamarpc提供的以太坊主网RPC节点,提供隐私保护
  1. https://eth.drpc.org - drpc提供的以太坊主网RPC节点,提供隐私保护
以上这些节点,都是由相对知名与安全的厂商提供,例如Cloudflare,借助他们的服务调度与边缘计算网络,能够更快、就近实现接入ETH网络,实现交易。在选择上,我一般是对这些节点都做测速,选择延迟最低的来使用。同时,例如Alchemy这种需要自己申请api key的节点,在访问请求数量上会相比其他节点更少一些,所以速度上也会较快一些。
 

英文版本

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

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

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。