惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CERT Recently Published Vulnerability Notes
S
Security @ Cisco Blogs
S
Security Affairs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
Lohrmann on Cybersecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
Forbes - Security
Forbes - Security
H
Heimdal Security Blog
A
Arctic Wolf
NISL@THU
NISL@THU
P
Proofpoint News Feed
W
WeLiveSecurity
S
Schneier on Security
AI
AI
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
L
LINUX DO - 最新话题
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Know Your Adversary
Know Your Adversary
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
I
Intezer
S
Securelist
Help Net Security
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
Last Week in AI
Last Week in AI
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
WordPress大学
WordPress大学
罗磊的独立博客
月光博客
月光博客
雷峰网
雷峰网
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events

Allen Hua 的网络博客

由于 Linux 桌面没有一个好用的天气程序就写了一个跨平台的CheckitoutWeather 给 caesium-image-compressor 图片压缩程序构建了 Linux AppImage v2.8.5 最新版 debian13(debian trixie)安装了nvidia闭源驱动后从x11切换到wayland的方法 山间摩旅追风,偶遇一场绚烂晚霞 最近使用debian系统的一些心得 机械革命无界14Pro笔记本debian forky成功驱动内置扬声器和麦克风 记录 typecho 1.2.0 升级到 1.3.0 过程 开发了一款openwrt插件:文本剪贴板 解决机械革命笔记本内屏高刷240Hz闪屏问题 使用 Java 写了一个局域网端口扫描器 - Allen Hua 的网络博客 openwrt使用外置根extroot机制扩展根分区大小 - Allen Hua 的网络博客 将机场ss节点批量转换成ss字符串链接批量添加到passwall - Allen Hua 的网络博客 给机械革命钛钽plus换屏:NY2换成NZ2 - Allen Hua 的网络博客 记录一次pve宿主机和上面的debian虚机无故down机事件 - Allen Hua 的网络博客 给图床部署cdn腾讯云的edgeone并排查Cache-Control max-age 3600的问题 - Allen Hua 的网络博客 从高山草甸到徽派古村:武功山反穿与皖浙赣自驾行记 - Allen Hua 的网络博客 增程器就是充电宝?别被忽悠了 - Allen Hua 的网络博客 浦口龙虎巷扫街,记录人间真实 博客图片压缩方案更新|AVIF|WebP|MozJPEG|标准JPEG Windows 电脑使用 Obs Studio 录制各个网站视频/桌面画面教程 为typecho博客添加latex支持 新能源汽车之纯电车使用交流慢充和直流快充的充电损耗对比 2025年3月更新全国5A景区名录 2025最新查看小米/红米手机电池健康度和循环次数方法 完美解决 seafile FILE_SERVER_ROOT 配置导致的内网外网不能同时访问和上传下载的问题 纯css实现typecho博客文章文字spoiler剧透效果 我对Typecho Facile主题的一些修改,图片懒加载优化,样式定制 2024年8月我的宜昌 - 重庆 - 川西小环线自驾旅行分享 2022年打卡南京市区人防工程纳凉点 2024年带着A7C2+腾龙28-200 再次来到红山森林动物园 入手a7c2第一个变焦镜头腾龙28-200体验分享 使用 exiftool 方便快捷写入图片的 exif metadata 使用JavaScript抓取易车销量排行榜数据到一个页面上展示 使用JavaScript脚本快速获取B站观看历史记录页面的视频标题和URL 入门三脚架推荐|云腾VCT-668配合索尼A7C2+FE 35mm F1.8 第一次夜景出片 Windows 11 Docker Desktop 更换默认C盘存储路径,释放C盘空间 雨游钟山——雨天带着索尼A7C2去钟山拍照 带上A7C2第一次扫街,分享今天拍的一些片子 再次为尼,买了人生第二台相机——索尼A7C2和FE 35mm F1.8 定焦镜头 更新 link-cleaner v1.1.0 适配linux桌面环境 使用自定义JavaScript脚本功能禁止memos最新版默认打开的链接预览功能 debian 11升级 docker ce 版本和 docker-compose 版本 机械革命无界14 Pro 安装 debian testing/trixie/sid 驱动扬声器,外部耳机,外接显示器过程分享 不借助 mirror 仓库,为docker engine daemon添加 proxy 访问 docker hub,解决国内公开的docker mirror 仓库不再可用了的问题 徒步江苏镇江句容九连尖 macOS 安装 proxychains-ng 并借助局域网 socks5 代理使用 Google Earth Pro 修复一块 18 年 12 月买的二手 4TB 机械硬盘 iCloud 在 Windows 下很流氓,用 taskkill 干掉它 2023 年 12 月 Spotify 彻底被墙,我在比亚迪车机上安装 surfboard 挂代理听歌 利用 proxychains 让 Windows10/11 上的 Google Earth Pro 通过代理正常访问 湖州安吉天荒坪盘山公路和杭州临安浙西天路之旅 Redmi K70 首发开箱和拍照体验 Review Android 13+ 通过 Shizuku + Language Selector 给特定应用设置独立语言 我的 2023 Spotify Wrapped 听歌总结 压缩剪贴板内图片并立即写入剪贴板,减轻服务器存储压力 【Allen Hua 翻唱】山阴路的夏天和一个人的北京 初涉录音设备,记录我购买声卡和麦克风的曲折经历以及第一首翻唱陶喆——流沙 soul power 版本(low quality) 特种兵旅行之马鞍山一日游 给我的 .com 域名续期以及转移域名(GoDaddy 到 Cloudflare) 看《下辈子我再好好过》第三季 使用油猴脚本干掉B站web首页的浏览器插件警告信息 闯进我平静生活的三只猫 在远离中短视频几天之后 [可能是]最好的压缩图片程序,使用 squoosh-cli 批量压缩图片 再次出发,自驾徽州天路和黄山之行 nginx设置referer配置个人图床的防盗链功能 微博注销记 第一次4+2旅行,骑行皖南川藏线 让 rime 输入法用上颜文字 使用 nginx 获取自己的公网 IP 地址 2023 年 618 买了一台机械革命笔记本,但很不愉快 聊聊我晚睡的习惯和早点洗澡悟出来的原因 部署一个 memos 作为个人微博站点和备忘录 我的听歌软件 Spotify 和网易云的故事 | 导出网易云的歌单再导入到 Spotify 我问 ChatGPT 为何印度人痔疮发病率低 使用 immich 来管理家庭照片 | 升级 immich 1.52.0 添加 typesense 容器 在 OpenWrt 上搭建 nfs server 利用 cron 和 curl 自动模拟登录馒头,防止账号被 ban 更新 Mattermost 服务端版本,由 7.4.0 更新到 7.8.0 获取 Seafile 分享的文件直链 你是科技产品偏执狂吗?一张不同种类互联网用户日常使用产品的分级图片 记录我的 V2EX 账号被封 不通过插件给 Typecho 博客添加图片灯箱功能(fancybox js 实现) 为 Typecho 博客添加 favicon.ico(网页标签小图标) OpenWrt 修改登录页面默认展示的 root 用户名信息,保护隐私 米家智能插座 3 上手初体验 互联网上为了保护隐私我们能做些什么?分享我的想法和我写的 link-cleaner tplink 10280, wan 无法访问 lan 下的 dhcp 主机,换上 padavan 解决两台路由器 lan-wan 级联,两台路由器下面的电脑互访 机械革命自带键盘总是自动乱按,拆机拔掉排线,完美解决烦恼 做了一个 squoosh docker 镜像,写博客贴图直接在本地压缩文件,安全且高效 nginx 常规端口和非常规端口的 http redirect to https 记一次 OpenWrt luci 显示正在“收集数据”,使用公网 IP nginx 反向代理遇到的 Uncaught TypeError: Cannot read properties of null (reading 'wan') 问题 OpenWrt 安装并配置腾讯云动态 dns dnspod tencent ddns 浅谈文件传输/共享协议|内网共享文件协议选择|自建公网文件管理同步和共享方案推荐 解决 webdav 连接 seafile 无法重命名文件等操作造成的 SeafDAV: MOVE returns 502 Bad Gateway 错误 Linux 删除当前目录下的隐藏文件 OpenWrt 安装 4.4.2 版本的 qbittorrent-nox Docker 构建多架构镜像实战 构建 amd64 和 arm64 架构的兰空图床镜像 构建 arm64 架构和 amd64 架构的兰空图床 docker 镜像 斐讯 N1 Debian9 安装 php8.1 和 composer
配置 ShadowsocksR Plus+ 的服务端,在外访问家中服务
Allen Hua · 2023-06-11 · via Allen Hua 的网络博客
阅读量:21911

warning: 这篇文章距离上次修改已过1045天,其中的内容可能已经有所变动。

OpenWrt 上的 ke 学软件还真有好几个:

  • ShadowsocksR Plus+
  • OpenClash
  • PassWall
  • ShellClash

之前我喜欢用 PassWall,也用过一段时间 OpenClash,但是现在喜欢上了 ShadowsocksR Plus+,后面将简称为 ssrplus+,ShellClash 暂时没用过,不过都是基于 Clash 的 core 封装的程序,我在 armbian 机器上单独部署过 clash core 的透明代理,这个应该也差不太多,就是封装了一下用户需要手动操作的地方可能更少了。本文我们来着重看看 ssrplus+ 的服务端部署。

人不在家中,你想要访问家中的路由器管理页面?访问 qBittorrent 进行远程下载?访问其他各种内网服务?

实际上能实现这个需求方案真的太多了,我简单列举几个,虽然有一些我没用过

  1. frp,这个非常有名了,简单易用高效,我就在用
  2. ngrok,同楼上,但是传播广度和用户应该没有 frp 多
  3. 花生壳一类
  4. 如果你的家宽有动态 public IP,那可以配置 ddns 实现需求
  5. public IP + OpenWrt + firewall port forwarding + nginx proxy_pass
  6. OpenVPN 等 VPN 方案(还有 PPTP L2TP 等)
  7. WireGuard,同楼上,属于 VPN 方案,但是协议更新,更适合使用
  8. tailscale zerotier 等组网方案
  9. todesk,向日葵等方案
  10. other...

ssrplus+ 的基础使用我就不赘述了,网络上大把的教程,本文只是我使用其中的 ssr-server 的一些分享。现在我开始在我的 OpenWrt 上部署 ssr-server,可以看到其二进制文件位于 /var/etc/ssrplus/bin/ssr-server

服务端1.jpg

ssr-server 主要需要下面这些配置(和你在 vps 上配置 ss-server 之类的差不多)

  • 监听的 server 地址,luci 页面中没有,默认监听所有 ipv4 和 ipv6 来源地址
  • 监听端口,这个重要,建议设置非常规端口、高位端口,至少 10000 以上,我更习惯于使用 20000-50000 之间的端口
  • 密码,非常重要,建议使用 bitwarden/vaultwarden 等密码生成工具生成复杂随机密码,至少 10 位,包含数字、大小写英文字母、特殊符号。密码强度更高,使用起来更安心
  • 超时,比如 60s
  • 加密方式,我的软路由是 2018 年自组的,CPU 是 N3150,其支持 AES 指令,于是选择 aes-256-cfb 这个折衷的加密方法,其他还有更多,可以多学习一下看看哪个更适合自己的 cpu
  • tcp fast open,我一般都打开
  • 混淆和插件就保持默认

最终 OpenWrt 生成了这一份文件 /var/etc/ssrplus/ssr-server1.json

{
  "server": "0.0.0.0",
  "server_ipv6": "::",
  "server_port": 1234,
  "mode": "tcp_and_udp",
  "password": "123456",
  "timeout": 60,
  "method": "aes-256-cfb",
  "protocol": "origin",
  "protocol_param": "",
  "obfs": "plain",
  "obfs_param": "",
  "fast_open": true
}

这里我发现,在页面上填好了相关配置,点击 保存并应用 实际上 ssr-server 并没有启动,并没有直接 working,然后我直接重启 ssrplus+ 主程序解决。

在 openwrt 终端执行以下命令重启主程序

/bin/sh /etc/rc.common /etc/init.d/shadowsocksr restart

可以看到状态正常了

ssrplus2.jpg

也有相关日志信息

ssrplus3.jpg

此时我打开 iPhone,切换到手机流量,然后打开 Shadowrocket 或者 Quantumult X,我各添加了一份配置文件。

由于我这具备 public IP,于是我可以直接使用这个 ssr server,添加好配置之后,挂上 proxy,打开浏览器,访问 google,成功生效。

google首页1.jpg


正文其实在这里结束了,但是下文是记叙我当时使用小火箭和 quanx 添加这个配置进行“远程回家”的一个问题。该问题简单描述就是我能通过 http://home.to:88/ 访问到路由器管理页面但是不能通过 ip+port 访问的问题 http://10.10.10.1:88/ ,就是记录解决这个问题的过程。

期间我遇到这个问题,本文重点记录一下,没有兴趣的读者可以直接跳过关闭浏览器当前 tab。当时我还询问了 ChatGPT,我把问答贴上来


来自你的消息:

我在手机上建立 shadowsocksr 全局代理到家中服务器,能通过域名访问家中的一些服务,但是为什么无法通过 ip 和端口号访问呢?通过 ip+端口访问就会报错,err_connection_timed_out,比如我人在家中时我通过 http://10.10.10.1:88 或者 http://home.to:88 都可以访问,但是现在人不在家中(使用手机流量模拟这个场景),手机连了全局代理之后只能通过 http://home.to:88 访问,用 http://10.10.10.1:88 访问就会报 err_connection_timed_out 的错误。请帮我分析一下为什么?

来自 ChatGPT 的消息:

这种情况可能是由于你的路由器没有开启 NAT 反向代理功能所导致的。当你通过 http://home.to:88 访问时,请求首先会被发送到家中服务器,然后服务器会将请求转发到路由器的 10.10.10.1:88 端口。这个过程中,服务器会将请求的源 IP 地址替换为自己的 IP 地址,这样路由器就可以正确地将响应返回给你的手机。

但是,当你直接通过 http://10.10.10.1:88 访问时,请求会直接发送到路由器的 10.10.10.1:88 端口,由于这个请求的源 IP 地址是你手机的 IP 地址,而不是家中服务器的 IP 地址,所以路由器无法正确地将响应返回给你的手机,从而导致连接超时的错误。

要解决这个问题,你可以在家中服务器上安装 NAT 反向代理软件,例如 Nginx,然后将请求转发到路由器的 10.10.10.1:88 端口。这样,无论你是通过 http://home.to:88 还是 http://10.10.10.1:88 访问,请求都会被正确地转发到路由器,并且路由器也可以正确地将响应返回给你的手机。

来自你的消息:

我已经在路由器上安装了 nginx 了,但是需要怎么操作呢?另外我想到,这个是不是 NAT 环回问题?

来自 ChatGPT 的消息:

如果你已经在路由器上安装了 Nginx,那么你需要进行以下操作:

  1. 配置 Nginx 反向代理:在 Nginx 的配置文件中添加反向代理规则,将请求转发到家中服务器的端口上。例如,如果你想将请求转发到家中服务器的 80 端口上,可以在 Nginx 的配置文件中添加以下规则:
location / {
    proxy_pass http://家中服务器IP:80;
}
  1. 配置路由器端口转发:在路由器的管理界面中开启端口转发功能,将请求转发到 Nginx 的端口上。例如,如果你将 Nginx 配置在了路由器的 8080 端口上,那么你需要将路由器的 80 端口转发到 8080 端口上。

至于 NAT 环回问题,它通常是指在同一个局域网内通过公网 IP 访问本地服务时出现的问题。在这种情况下,你可以尝试通过修改路由器的 NAT 反向代理设置来解决问题。但是,如果你是通过 shadowsocksr 全局代理来访问家中服务的话,那么这个问题可能不太适用。

来自你的消息:

好的,我现在大概明白应该可以添加 nginx 配置来解决了,那么你帮我生成这个 nginx 配置吧。我简要说一下需求

  • 程序使用 http 访问资源
  • 监听端口 88
  • 路由器 web 界面是在 http://10.10.10.1:88 监听并提供 web 服务
  • 其他默认设置你帮我添加

来自 ChatGPT 的消息:

好的,根据你的需求,以下是一个简单的 Nginx 配置,你可以将其添加到 Nginx 的配置文件中:

server {
    listen 88;
    server_name localhost;

    location / {
        proxy_pass http://10.10.10.1:88;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

这个配置将会监听 88 端口,并将所有请求转发到 http://10.10.10.1:88 上。其中,proxy_set_header 用于设置请求头,以便正确地传递客户端的 IP 地址和 Host 头信息。

请注意,如果你的路由器 web 界面是通过 HTTPS 访问的话,你需要将 proxy_pass 改为 https://10.10.10.1:443,并且在 Nginx 中添加 SSL 配置。


最终我再三思考,觉得问题没有出在路由器以及 ssr-server 服务端这边,应该是手机这边 shadowrocket 客户端配置上。我又使用 Quanx 添加了同样的配置,然后我看这边默认是走的策略路由,于是我想到,应该使用 IP CIDR 规则添加一条 10.10.10.0/24,让来自这个目标网络的请求也走 proxy 就行了,之前域名能成功是因为全局代理可以将 dns 请求放在我 OpenWrt 的 dnsmasq 上进行。

于是

分流规则1.jpg

添加了这条分流规则后 成功在外网通过 ip+port 访问到家中设备

在外访问到软路由管理页面通过ip形式.jpg

然后我又回到 shadowrocket,添加了同样的 cidr proxy 规则,但是没有生效。

最终发现默认的 default.conf 中的一条通用规则首先就将来自 10.10.10.1 的请求 跳过代理 了,这条 ip cidr 写的是 10.0.0.0/810.10.10.0/24 是被包含的关系,所以直接跳过了代理,我后面新添加的已经不会生效了。

default conf1.jpg

这里很关键,原本有一条 10.0.0.0/8 我给删掉后面再单独添加 10.10.10.0/24 走代理就也解决了 shadowrocket 上遇到的问题。

跳过代理1.jpg

至此,我的需求都完美实现。