在国内外自由访问常用服务的网络优化经验分享

前言

我常年在国外生活,喜欢在喜马拉雅上听有声书、广播剧放松一下。但有些资源在海外受限,不能直接收听,挺不方便的。 反过来,每次回国探亲时,我日常使用的 Gmail、Google Docs、YouTube、ChatGPT 等服务又经常无法访问,生活和工作都受到影响。

尝试过一些付费 VPN 或加速服务,但要么价格不低,要么稳定性不佳。于是我开始研究一些网络优化方案,自己动手搭建「双向访问」环境,既能在国外用国内的应用,又能在国内访问常用的国际网站。

这篇文章算是我的经验记录,分享一些技术思路和工具,帮助有类似需求的人少走弯路。所有方法仅用于个人学习和网络优化,请勿用于违反平台政策的用途。


Part 1:国外访问国内资源(Shadowsocks + 阿里云 ECS)

步骤 1:购买阿里云 ECS

  1. 登录 阿里云官网
  2. 注册并完成实名认证。
  3. 选择 “云服务器 ECS” -> “立即购买”。
  4. 选择 地域:北京、杭州或上海
  5. 系统镜像:Ubuntu 22.04 LTS
  6. 配置:1核 1GB 内存即可,带宽选 1~3 Mbps。
  7. 确认订单并购买。

提示: 不需要备案,因为这里只是跑代理服务。

步骤 2:安装 Shadowsocks 服务端

SSH 登录服务器:

ssh root@<你的ECS公网IP>

更新系统并安装 Shadowsocks:

sudo apt update && sudo apt upgrade -y
sudo apt install shadowsocks-libev -y

配置 /etc/shadowsocks-libev/config.json

{
  "server":"0.0.0.0",
  "server_port":8388,
  "password":"<your_password>",  // 请替换为自己的密码
  "timeout":300,
  "method":"aes-256-gcm"
}

启动 Shadowsocks:

sudo systemctl enable shadowsocks-libev
sudo systemctl restart shadowsocks-libev

步骤 3:安全组与防火墙

  • 阿里云控制台 -> ECS -> 安全组 -> 添加规则:开放 TCP/UDP 8388 端口。
  • 服务器:
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw enable

步骤 4:客户端配置

iPhone/iPad(Shadowrocket)

  1. 从 App Store 下载 Shadowrocket(付费应用,价格合理)。

  2. 添加服务器:

    • 类型:Shadowsocks
    • 地址:你的 ECS IP
    • 端口:8388
    • 密码:<your_password>
    • 加密:aes-256-gcm
  3. 导入“回国规则”:

    • 电脑打开 回国规则链接
    • Shadowrocket -> 配置 -> 点击右上角二维码 -> 扫描电脑上的二维码。

macOS/Windows(Clash Verge)

  1. 下载 Clash Verge
  2. 编辑 config.yaml 文件:
port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info
proxies:
  - name: "CN-SS"
    type: ss
    server: <你的ECS IP>
    port: 8388
    cipher: aes-256-gcm
    password: <your_password>
proxy-groups:
  - name: "Proxy"
    type: select
    proxies:
      - "CN-SS"
      - DIRECT
rules:
  - DOMAIN-SUFFIX,ximalaya.com,Proxy
  - DOMAIN-SUFFIX,bilibili.com,Proxy
  - GEOIP,CN,Proxy
  - MATCH,DIRECT
  1. Clash Verge -> 配置文件 -> 导入该 YAML 文件。

Part 2:国内访问国际资源(V2Ray + TLS + WS + AWS EC2)

为什么要配置域名和 SSL 证书?

TLS 可以伪装成普通 HTTPS 流量,避免被拦截。域名与证书让服务更稳定、安全。

步骤 1:AWS EC2

  1. 注册 AWS
  2. 创建 Ubuntu 24.04 LTS 实例,开放 80/443 端口。

步骤 2:域名与 SSL(Certbot)

  1. 将域名解析到 EC2 IP。
  2. 安装 Nginx 与 Certbot:
sudo apt install nginx certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com

步骤 3:安装 V2Ray 并生成 UUID

cat /proc/sys/kernel/random/uuid  # 复制UUID
bash <(curl -Ls https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

编辑 /usr/local/etc/v2ray/config.json 并替换 <your-uuid>

步骤 4:Nginx 反向代理

配置 /etc/nginx/sites-enabled/default

location /ray {
    proxy_pass http://127.0.0.1:10000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

步骤 5:客户端配置

Shadowrocket

  • 类型:Vmess
  • 地址:your_domain.com
  • 端口:443
  • 用户ID:<your-uuid>
  • TLS:开启
  • 路径:/ray

Clash Verge 示例:

proxies:
  - name: "US-V2Ray"
    type: vmess
    server: your_domain.com
    port: 443
    uuid: <your-uuid>
    tls: true
    network: ws
    ws-opts:
      path: /ray

总结

通过这套方案,我在国外能用喜马拉雅、Bilibili;回国时 Gmail、Google、YouTube 也能正常访问。如果你有疑问或建议,欢迎在留言区分享你的想法!

发表在 工具 | 留下评论

发布「证件照片排版在线生成器 2.0」

这件事一直在我的计划里,今天终于把「证件照片排版在线生成器 2.0」正式发布啦!

新版采用了纯客户端实现,所有照片都在本地设备上处理,无需上传到服务器,更好地保护了隐私,速度也更快。同时,还新增了一个很多用户一直在提的功能:可以自由选择生成的照片数量,使用起来更加灵活。

欢迎大家试用!如果有任何问题或建议,欢迎随时反馈。项目的源代码也已经开源到 GitHub,欢迎 star 或贡献!

另外,我还用 Google 的 NotebookLM 生成了一段介绍,分享了这个工具的设计思路和一些用户的真实反馈评论,感兴趣的话可以一起看看。

发表在 工具 | 留下评论

用EcoFlow River 3 Plus作UPS: 如何配置 Synology NAS

EcoFlow River 3 Plus 是一款便携式电源,除了常规的户外电源功能外,它也可以作为 UPS 使用。相比传统铅酸电池 UPS,EcoFlow 具有以下优势:

  • 更大的容量(如 286Wh)
  • 更轻便易携带
  • 提供远程管理功能(如 App 或 Web 界面)

然而,在将其连接到 Synology NAS 作为 UPS 使用时,很多用户会发现系统无法识别该设备,即使已经安装了 EcoFlow 官方的 Power Manager for NAS 套件也无济于事。本文将详细分析原因,并提供可行的解决方案。


问题分析

在调试过程中,我发现出现兼容性问题的主要原因如下:

  1. USB 无法识别:Synology DSM 内置的 NUT(Network UPS Tools)版本较旧,可能无法识别 EcoFlow 作为 USB UPS。

  2. 端口不一致:EcoFlow Power Manager 使用端口 3496 提供 UPS 服务,而 Synology 默认监听端口为 3493

  3. 设备命名不同:Synology 假设远程 UPS 名为 ups,但 EcoFlow 默认使用的设备名是 nutdev1


快速解决方案概览

为了解决上述兼容问题,我们可以通过手动修改 EcoFlow Power Manager for NAS 套件中的部分配置文件来实现对 Synology UPS 服务的兼容。

以下是核心修改:

  • 将 EcoFlow 服务端口从 3496 改为 3493
  • 将设备名 nutdev1 修改为 ups
  • 重启 Power Manager 服务,使修改生效

操作步骤详解(以 DSM 7.x 为例)

⚠️ 操作前请备份相关文件,确保有基本的 SSH 操作能力。以下路径基于默认安装位置。

1. 安装 Power Manager 套件

前往 EcoFlow 官网下载安装: https://www.ecoflow.com/us/support/download/index

2. 修改 run.sh 文件

路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/run.sh

将以下内容:

output=$(sudo $BASE_DIR/bin/upsc nutdev1@127.0.0.1:3496 2>&1)

修改为:

output=$(sudo $BASE_DIR/bin/upsc ups@127.0.0.1:3493 2>&1)

3. 修改 upsd.conf 配置

路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/etc/upsd.conf

将以下内容:

LISTEN 0.0.0.0 3496

修改为:

LISTEN 0.0.0.0 3493

4. 修改 eco_shutdown.sh 脚本

路径:/volume1/@appstore/PowerManagerNUT/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/script/eco_shutdown.sh

将以下内容:

status=$(/var/packages/PowerManagerNUT/target/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/bin/upsc nutdev1@localhost:3496 ups.status 2>/dev/null)

修改为:

status=$(/var/packages/PowerManagerNUT/target/usr/local/bin/nas/x86_64-pc-linux-gnu-nut-server/bin/upsc ups@localhost:3493 ups.status 2>/dev/null)

5. 重启 Power Manager 服务

你可以通过“套件中心”手动重启 Power Manager NUT。


在 Synology DSM 中配置 UPS 客户端

  1. 打开 DSM 控制面板 -> 硬件与电源 -> UPS
  2. 选择“Synology UPS 服务器”模式
  3. 填入当前这台 NAS 的 IP 地址作为 UPS 服务器地址
  4. 应用设置后,NAS 应该能够识别来自 EcoFlow 的 UPS 状态

你也可以在终端中运行以下命令验证:

upsc ups@localhost:3493

注意事项与后续建议

  • 上述修改可能会在 EcoFlow Power Manager 套件或 DSM 更新时被覆盖。
  • 如果你有多台 NAS,希望将 EcoFlow UPS 共享给其他设备,可以在其它NAS上配置UPS使用Synlogy UPS 服务,IP 地址填写本台NAS的地址。
  • 长期建议关注 DSM 或 EcoFlow 对 NUT 的支持情况,以便后续采用原生支持方式。

参考资料


如果你在设置过程中遇到问题,欢迎在评论区留言交流,也欢迎分享你使用其他便携电源作为 UPS 的经验。

发表在 工具 | 留下评论

我的特斯拉引荐码

自从去年购买了特斯拉的Model 3,我和我的妻子都非常喜欢开特斯拉。一方面,这样我们可以省下不少汽油费用;另一方面,相比我们家里的传统燃油车,特斯拉确实更加好开。

目前,特斯拉已经重新启动了推荐码计划。如果你在购买特斯拉时使用了我的推荐码,你可以节省500-1000美元,而我也将获得积分,可以用来兑换礼物,实现双赢的局面。

以下是我的推荐码链接:https://ts.la/jian860588。如果有任何问题,请在留言中告知我。

非常感谢您的支持!

发表在 Uncategorized | 3条评论

今天迁移了网站,大家发现了什么问题请留言

今天把网站从Azure迁移到了AWS,操作系统从Ubuntu 18.04升级到了22.04, WordPress也升级到了最新。大家使用的时候遇到什么问题请给我留言, 谢谢。

发表在 Uncategorized | 一条评论

Mint 擦地机器人复活记

Mint 5200曾经是我家任劳任怨的擦地机器人, 自从买了她之后,我就从繁重的擦地劳动中解脱出来了。 她是由 Evolution Robotics公司生产。 该公司于2012年被iRobot公司收购, Mint系列机器人更名为 iRobot Braava机器人。 她不同于iRobot的吸尘器机器人, 可以像聪明的一休一样,用湿抹布把地板擦干净。

突然有一天, Mint 5200在工作的时候红灯亮起, 并发出嘟嘟声, 她也并没有被东西卡住,就是无法再工作了。 之后我自己拆开机器人试图理解故障的原因, 完全没有头绪。 后来我有找到了一个更有经验的朋友一起拆开查看,对各个传感器查看, 故障太诡异了, 有时觉得是轮子速度传感器的问题, 有的时候觉得是楼梯悬空传感器的问题。

这个时候伟大的人物出现了, 我这个朋友的老婆, 先找到了一篇帖子 将了如何解读故障灯。 帖子在这里 。 简单说一下,故障之后红色故障灯会闪烁, 闪烁的次数有一定的含义:

  • 闪2次:Mint被卡住了, 不能移动。 把Mint搬到新的地方就好了
  • 闪3次:Mint没法回到出发的地方了。 确保Mint电量充足, 北极星(Cube)开着, 放在正确的地方(桌上), 蓝色的灯指向房屋屋顶,至少有2~3米的空间。
  • 闪4次:北极星(Cube)在Mint工作时被移动了。 要确保Cube保持固定的位置。
  • 闪5次:Mint检测到了楼梯边缘,而且没法脱离。 请把Mint放到新的地方重新开始。 如果这个楼梯边缘总是导致问题, 请把这个地方挡住。 在某些情况下, 是擦地布导致的问题, 所以请检查擦地布是否装好了。
  • 闪6次:Mint有一个轮子悬在楼梯外面了。 请把Mint放到新的地方重新启动。 如果这个楼梯边缘总是导致问题, 请把这个地方挡住。 在某些情况下, 是擦地布导致的问题, 所以请检查擦地布是否装好了。
  • 闪7次:充电错误。 请联系售后吧
  • 闪8次:Mint没法从睡眠模式中唤醒, 或者是没法和北极星(Cube)通讯。 请联系客服吧
  • 闪14次:Mint发现马达太热了。 请关闭Mint让它冷却。 如果故障依旧, 请联系客服。
  • 闪15次:Mint被困在狭小的地方没法出来了。 请把Mint放到新的地方。 如果Mint持续被困在相同的地方, 请你把这个地方挡住,别让Mint进入。

接着说我的机器人的问题, 我们反复实验, 发现奇怪了, 她有时闪6次, 有时闪5次, 有时又闪14次。 而且完全就没有楼梯嘛, 我们完全懵了。这时候, 伟大的人物再次出手, 她找到了Mint在中国代购工厂的一个工人的电话。 我打电话过去咨询, 对方在了解情况之后,得出结论是因为电池的问题, 我的Mint已经使用2年, 电池容量已经不行了, 电力的问题导致各种奇怪的传感器故障。

后来, 我从淘宝上买了新的电池, 装上后果然所有问题都消失了, Yeah~~

最后不得不说, Mint在设计各种传感器上非常仔细, 可以判断各种问题, 不过在电池的设计上却留下了破绽。 首先电池选用的是镍氢电池, 而且电池上没有充电保护电路。 镍氢电池有很容易导致容量记忆的问题。 其次, 没有增加电路来检测电力的故障, 反而是其它的各种传感器失灵, 报出奇怪的故障。

希望写了这些文字, 能够对大家有帮助。

最后谢谢我的朋友以及他伟大的老婆:)

发表在 Uncategorized | 5条评论

Linux命令行捕捉HTTP数据

一般提到Linux上抓包, 大多能想到tcpdump或者wireshark, 这两个工具功能强大, 几乎所有需求都可以做到。 不过如果就是想把HTTP Header抓下来看看, 这些工具就显得太过复杂了, tcpdump的参数总是记不住, wireshark也不方便在远程的linux主机上运行。

前两天终于发现了简单好用的工具: ngrep . 捕捉HTTP数据用以下命令即可:

# 捕捉所有HTTP流量
ngrep -q -d any -W byline port 80

# 捕捉到www.baidu.com的流量
ngrep -q -d any -W byline port 80 and host www.baidu.com
发表在 工具 | 留下评论

提高SSH建立连接速度

今天看到一篇文章可以把git更新时间提高5~50倍。链接在这里: Speed Up Git (5x to 50x)

看了之后,发现其中第一个办法不仅可以提高git还可以提高所有ssh的建立连接速度。
你可以在 ~/.ssh/config 中增加以下内容:

ControlMaster auto
ControlPath /tmp/%u-%r@%h:%p
ControlPersist yes

设置这个配置之后, ssh就会把多个ssh session共享一个tcp连接, 而且当你退出ssh之后, 这个连接依然会保持, 下次再连接的时候就直接可以用了。
配置ControlPath是为每个用户+每个服务器设置一个唯一的socket文件, 我修改了原文中的值, 增加了%u,这样在共享的服务器上使用也就没有问题了。

发表在 工具 | 留下评论

按行合并两个文本文件

今天遇到了小问题, 我有两个文件
第一个文件:

Medical Terminology
Narrative
RTL coding
Regional Planning

第二个文件:

医疗术语
叙述
RTL编码
区域规划

我想将两个文件合并到一起, 看起来这样:

Medical Terminology,医疗术语
Narrative,叙述
RTL coding,RTL编码
Regional Planning,区域规划

我想当然我可以写一个简单的python脚本搞定, 不过应该有更简单的办法吧, 就google了一下, 果然找到了。 答案就是一个叫做paste的命令。

用法:paste [选项]... [文件]...
将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分隔。
如果没有指定文件,或指定文件为"-",程序将从标准输入读取数据。

长选项必须使用的参数对于短选项时也是必需使用的。
-d, --delimiters=列表 改用指定列表里的字符替代制表分隔符
-s, --serial 不使用平行的行目输出模式,而是每个文件占用一行
--help 显示此帮助信息并退出
--version 显示版本信息并退出

发表在 工具 | 一条评论

给Thunderbird中的表格添加表格线

用Thunderbird很多年了, 有一个问题困扰了很久,那就是当你把一个excel的表格粘贴到thunderbird中,发出去的邮件表格线全都没了。 虽然可以在表格格式对话框中设置border为1, 但是还是非常的麻烦。

google了一下, 很多人反映这个问题,貌似thunderbird就是没有fix。这个bug 2003年就开了, 现在还是没人处理。

今天实在不能忍受了, 找到了一个hack的办法:
设置签名档使用HTML,添加以下内容:

<style> 
table, th, td { border: 1px solid black; }
</style>
发表在 工具 | 7条评论