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

推荐订阅源

C
Check Point Blog
AI
AI
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
F
Full Disclosure
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
Recorded Future
Recorded Future
N
News and Events Feed by Topic
雷峰网
雷峰网
V
Vulnerabilities – Threatpost
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Project Zero
Project Zero
罗磊的独立博客
G
GRAHAM CLULEY
腾讯CDC
P
Privacy International News Feed
V
V2EX
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
H
Heimdal Security Blog
L
LINUX DO - 热门话题
Forbes - Security
Forbes - Security
美团技术团队
MongoDB | Blog
MongoDB | Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
宝玉的分享
宝玉的分享
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog

yyhhyyyyyy

Surge for Mac 配置教程:自用配置详解与 iOS 版差异 Surge for iOS 配置教程:自用配置文件逐段详解(General / 策略组 / 规则) Mac小企鹅输入法+雾凇拼音配置指南:从安装到同步 Winodws 双网卡实现内外网分流 VSCode 配置Ruff Cursor修改垂直布局 Clash Party/Clash Verge Rev/Sparkle 覆写与扩展脚本指南 解决 WSL2 与 Tunnel 模式网络冲突:MTU 设置妙招 Mihomo 配置教程:从零写一份完整配置文件(DNS / TUN / 分流规则详解) TUN 模式详解:System / gVisor / Mixed 三种堆栈的区别与选择 解决MoviePy保存视频时的视频质量降低问题 Tailscale+Headscale+自建Derp踩坑记录 解决Moviepy剪辑视频画面卡帧,但有声的问题 重装系统 -- Windows11 Win10/11配置fnm:解决PowerShell脚本运行受限问题 Ai 原画系统 基于社交媒体大数据的智慧政务系统 Miniconda安装教程 Doker-compose 网络互通 建立菲律宾台风损害模型
Surge Or Mihomo通过WireGuard回家
yyhhyyyyyy · 2024-07-30 · via yyhhyyyyyy

1.起因

家里一直有一台软路由,且一直都携带着公网V4,之前有装openwrt的时候,都会开个ss用来回家用,但是现在不是很想装openwrt。于是有了以下的一些折腾。

因为我使用的是ios,也购买了Surge,同时其支持WireGuard协议,最后再去看了下mihomo,也支持WireGuard那么使用WireGuard回家将是最好的选择啦~

最后简单介绍下自己的设备吧。

软路由:5105 (ikuai 主路由、 Debian 、Windows10) – all in boom

Debian - > 服务端

装有ios的Surge - > 客户端

2.安装

为了保证系统的稳定性,将WireGuard安装在Debian上。使用root权限执行以下命令:

apt install wireguard

3.生成公钥私钥

所有的公钥私钥 都是从服务端来生成的 这点是重中之重

3.1 服务端公钥私钥生成

先生成服务端的公钥私钥

cd /etc/wireguard
wg genkey | tee server_private.key | wg pubkey > server_public.key

3.2 客户端公钥私钥生成

其实就看你有多少个客户端,比如你想用一台装有surege的iphone 和 一台装有mihomo的windows 那就是生成2对公钥私钥

简单理解 几个设备 -> 几对公私钥对

同样的命令 也是 在 /etc/wireguard 这个目录下 执行

wg genkey | tee ios_private.key | wg pubkey > ios_public.key

4.编写wg*.conf

wg的conf 必须在 /etc/wireguard 下,且命名必须是 wg*.conf 的形式 * 放数字就行,比如 wg0.conf

[Interface]
# 服务端的IP地址和子网掩码,定义了WireGuard接口的网络范围
Address = 192.168.63.1/24
# WireGuard服务器监听的UDP端口(注意 端口需要放行)
ListenPort = 22334
# 服务器的私钥,用于加密和身份验证
PrivateKey = <服务端私钥 也就是 server_private.key 的值>

# ens18是网卡 需要自己查看
# 在WireGuard启动时执行的命令,设置防火墙规则以允许流量转发和NAT
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
# 在WireGuard关闭时执行的命令,移除之前添加的防火墙规则
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE

# 以一台装有surge的iphone为例
[Peer]
# 客户端的公钥,用于验证客户端身份
PublicKey = <ios公钥 也就是 ios_public.key 的值>
# 允许此客户端使用的IP地址,/32表示单个特定IP
AllowedIPs = 192.168.63.2/32

# 以一台装有mihomo的windows为例
[Peer]
# 客户端的公钥,用于验证客户端身份
PublicKey = <windows公钥 也就是 windows_public.key 的值>
# 允许此客户端使用的IP地址,/32表示单个特定IP
AllowedIPs = 192.168.63.3/32

接下来说说自己的踩坑点

4.1 注意点

  1. 端口一定要放行,只需要放行udp就行了
  2. 密钥的一些交互,一定不要错了,简单理解 服务端的conf只需要放 服务端自己的私钥其他客户端的公钥 即可
  3. 网卡 一定要看自己出口的是哪张网卡,一般不能照抄!!!
  4. 如果对子网掩码有疑问,简单理解就是,服务端包含整个网段,所以是24;客户端因为指代的就是一个设备,所以是32

至此 wg0.conf 配置完毕

5. 服务端启动

cd /etc/wireguard
wg-quick up wg0

启动完可以 输入 wg 看下是否确实启动了

6. 配置Surge

一共有三个地方需要配置,具体如下:

[Proxy]
Home = wireguard, section-name = Home

[Rule]
IP-CIDR,192.168.88.0/24,Home,no-resolve

[WireGuard Home]
private-key = <ios私钥 也就是 ios_private.key 的值>
self-ip = 192.168.63.2
mtu = 1280
peer = (public-key = <服务端公钥 也就是 server_public.key 的值>, allowed-ips = "0.0.0.0/0, ::0/0", endpoint = ddns.cn:22334, keepalive = 25)

6.1 注意点

  1. 因为我实现的是通过wg就能访问家里所有设备 我家里是88网段,所以[Rule]是88网段 (这点很重要 我之前把 Interface 的网段也写进来了 但是 不能访问家里所有设备)
  2. self-ip 需要与 Interface 同一个网段
  3. endpoint 家里公网ip的 ddns:端口 即可

7.1 配置mihomo

参考的官方的 与 surge 其实类似

proxies:
  - name: wg
    type: wireguard
    ip: 192.168.63.3
    # 我不用V6 所以不开
    # ipv6: fd01:5ca1:ab1e:80fa:ab85:6eea:213f:f4a5
    private-key: <windows私钥 也就是 windows_private.key 的值>
    peers:
      - server: ddns.cn
        port: 22334
        public-key: <服务端公钥 也就是 server_public.key 的值>
        allowed-ips: [0.0.0.0/0]
      # pre-shared-key: 31aIhAPwktDGpH4JDhA8GNvjFXEf/a6+UaQRyOAiyfM=
      # reserved: [209,98,59]  # 字符串格式也是合法的,如"U4An"
    udp: true
  # mtu: 1408
  # dialer-proxy: "ss1"  # 一个出站代理的标识。当值不为空时,将使用指定的 proxy/proxy-group 发出连接
  # remote-dns-resolve: true # 强制dns远程解析,默认值为false
  # dns: [ 1.1.1.1, 8.8.8.8 ] # 仅在remote-dns-resolve为true时生效

至此教程结束