找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2651|回复: 19

[其它X86系统] IPv6 NAT1回家 WireGuard组网 DNS分流 Clash网关 openwrt PVE PaoPaoGateWay PaoPaoDN

[复制链接]
发表于 2024-3-2 15:23 | 显示全部楼层 |阅读模式
本帖最后由 Dk 于 2024-5-26 13:45 编辑

!!!本教程不涉及IPv6 DDNS,请先按其他人教程在部署DNS的机器上配置好!!!
!!!本教程不涉及IPv6 DDNS,请先按其他人教程在部署DNS的机器上配置好!!!
!!!本教程不涉及IPv6 DDNS,请先按其他人教程在部署DNS的机器上配置好!!!




先说下背景,我个人的需求是
1. 电信宽带,没有v4公网ip
2. 我自己的手机和pc走富强网关。家里人的手机走默认的网关和dns,不进行富强
3. 在外使用流量/其他的wifi的时候,通过wireguard组网回家,连接nas并且富强

我家配置好后的网络拓扑大概如下


绿色设备代表本身不走分流+富强,红色设备代表本身走PaoPaoDNS+PaoPaoGateway的分流和富强


设备信息:
路由器 红米ax6 openwrt固件使用https://openwrt.ai/ 无插件
PVE版本为8,一个虚拟机跑PaoPaoGateway,另一个运行Ubuntu 22.04,通过docker host模式运行PaoPaoDNS

我这里就不开回复可见来骗回复了,有问题直接说 我有空了就会看论坛回复


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2024-3-2 15:23 | 显示全部楼层
本帖最后由 Dk 于 2024-3-24 20:34 编辑

part 1 内网分流+富强

这部分的危险操作:

编辑dhcp文件的时候不要点保存并应用,会导致路由器挂掉,我是重启之后恢复的
个人建议检查没问题之后保存+手动重启


这里主要参考这篇文章 https://github.com/kkkgo/PaoPaoGateWay/discussions/39

先将设备静态地址分配好,避免后面分配出问题
把需要富强的设备都加上同样的tag,这样就不用手动指定dns


PaoPaoDNS搭建
没有修改ubuntu源的话,记得修改下apt源,不然国内下载很慢
https://mirror.sjtu.edu.cn/docs/ubuntu

安装docker-ce
  1. apt install docker-ce -y
复制代码


修改docker源
  1. cat <<EOT >> /etc/docker/daemon.json
  2. {
  3.   "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"]
  4. }
  5. EOT
复制代码


拉取最新的docker镜像
  1. docker pull sliamb/paopaodns:latest
复制代码


创建paopaodns docker-compose配置文件
这里我把需要改的地方加了注释,其余配置可以参考github文档 https://github.com/kkkgo/PaoPaoDNS
  1. cd ~;
  2. mkdir paopao;
  3. cd paopao;
  4. cat <<EOT >> docker-compose.yml
  5. version: "3"

  6. services:
  7.   paopaodns:
  8.     image: sliamb/paopaodns:latest
  9.     container_name: paopaodns
  10.     network_mode: "host" # 这里使用host模式有更好的nat,但是要注意有没有端口冲突,具体端口参考下方防火墙规则
  11.     restart: always
  12.     volumes:
  13.       - /home/paopaodns:/data #配置文件挂载目录,我这里用的/home/paopaodns
  14.     environment:
  15.       - TZ=Asia/Shanghai
  16.       - UPDATE=weekly
  17.       - DNS_SERVERNAME=PaoPaoDNS,blog.03k.org
  18.       - DNSPORT=53
  19.       - CNAUTO=yes
  20.       - CNFALL=yes
  21.       - CN_TRACKER=yes
  22.       - USE_HOSTS=no
  23.       - IPV6=no
  24.       - SOCKS5=192.168.31.100:1080 # 这里修改为后续PaoPaoGateway网关的ip
  25.       - SERVER_IP=192.168.31.52 # 运行PaoPaoDNS虚拟机的ip
  26.       - CUSTOM_FORWARD=192.168.31.100:53 # 这里修改为后续PaoPaoGateway网关的ip
  27.       - AUTO_FORWARD=yes
  28.       - AUTO_FORWARD_CHECK=yes
  29.       - USE_MARK_DATA=yes
  30.       - ADDINFO=yes
  31.       - HTTP_FILE=yes # http服务,提供PaoPaoGateway配置文件下载,后续修改ppgw.ini配置文件不需要重新打包镜像
  32.       - SHUFFLE=lite
  33. EOT
复制代码

启动docker容器(后续修改配置文件后都需要重新启动)
  1. # 进入compose目录
  2. cd ~/paopao;
  3. docker-compose up -d;
复制代码


开启防火墙,允许内网设备访问端口
  1. # 允许内网网段访问PaoPaoDNS的相关端口
  2. ufw allow from 192.168.31.0/24 to any port 53;
  3. ufw allow from 192.168.31.0/24 to any port 5301;
  4. ufw allow from 192.168.31.0/24 to any port 5302;
  5. ufw allow from 192.168.31.0/24 to any port 5303;
  6. ufw allow from 192.168.31.0/24 to any port 5304;
  7. ufw allow from 192.168.31.0/24 to any port 7889;

  8. # 允许wireguard组网网段访问dns端口
  9. ufw allow from 10.10.10.0/24 to any port 53;
复制代码


PaoPaoGateway搭建
参考github的教程,自行编译clash-meta核心的镜像
配置文件不用管,只需要一个clash核心
release最新版的1.18.1有bug不能用,需要下载最新的alpha版
https://wiki.metacubex.one/startup/#__tabbed_1_2

版本问题参考这个 https://github.com/kkkgo/PaoPaoGateWay/discussions/65

打包完成后就可以按照github教程,创建pve虚拟机启动

为PaoPaoGateway增加配置

  1. cat <<EOT >> /home/paopaodns/ppgw.ini
  2. # 我这里用的是airportclash订阅,选择的是suburl模式
  3. mode=suburl
  4. fake_cidr=7.0.0.0/8
  5. # 修改为PaoPaoDNS虚拟机ip
  6. dns_ip=192.168.31.52
  7. dns_port=5304
  8. clash_web_port="80"
  9. clash_web_password="clash面板密码"
  10. # clash的1080混合端口 socks+http mixed
  11. openport=yes
  12. udp_enable=no
  13. sleeptime=30
  14. # linux快速转码 jq -rn --arg x '订阅地址' '$x|@uri'
  15. # 订阅转换 替换 ${sub_url}为你URL转码后的订阅地址
  16. suburl="https://sub.xeton.dev/sub?target=clash&new_name=true&url=${sub_url}&insert=false&config=https%3A%2F%2Fraw.githubusercontent.com%2FACL4“师夷长技以制夷”%2FACL4“师夷长技以制夷”%2Fmaster%2FClash%2Fconfig%2FACL4“师夷长技以制夷”_Online_Full_AdblockPlus.ini&emoji=true&list=false&tfo=false&scv=false&fdn=false&sort=false"
  17. # 订阅更新间隔
  18. subtime=1d
  19. fast_node=check
  20. test_node_url="https://www.youtube.com/generate_204"
  21. ext_node="Traffic|Expire| GB|Days|Date"
  22. cpudelay="3000"
  23. dns_burn=yes
  24. # 修改为PaoPaoDNS虚拟机ip
  25. ex_dns="192.168.31.52:53"
  26. # Network traffic records
  27. net_rec=yes
  28. max_rec=5000
  29. EOT
复制代码


配置增加之后进入PaoPaoDNS docker-compose目录,重启容器
  1. # 进入compose目录
  2. cd ~/paopao;
  3. docker-compose up -d;
  4. service docker restart;
复制代码


检查dns是否配置成功,在PaoPaoDNS所在的虚拟机执行
  1. nslookup google.com 127.0.0.1
复制代码

如果解析到fakeip下就是成功了


检查网关是否配置成功,进入pve后台控制台,应该会看到下载配置成功的提示,并且check 204成功



修改路由器的路由配置,将fakeip网段路由到网关的ip上


修改设备dns为paopaodns的ip,随后访问google检查是否可用



编辑DHCP配置,增加一个tag规则,给这个tag下的设备指定dns
注意修改关键词,论坛把这个屏蔽了
  1. config tag 'passwa11'
  2.         option dhcp_option '6,192.168.31.52'
  3.         option force '1'
复制代码



然后拉到最上面,把DNS重定向关掉



给DHCPv6的dns下发配置一个无效的dns,否则设备优先走v6的dns会无法解析到正确的fakeip,电脑能关闭v6 我的小米手机不能关


如果需要全家设备走分流的话,DHCP直接下发PaoPaoDNS也可以,但是那些bt pt域名解析可能会走代理

http://192.168.31.100/ui/#/proxies
进入网关的clash控制面板可以手动切换节点,,我一般喜欢手动选择节点

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-2 15:24 | 显示全部楼层
本帖最后由 Dk 于 2024-3-9 21:47 编辑

part2 wireguard ipv6回家
危险操作:这里不要乱调AllowedIPs,配置的ip段会强制走wireguard
如果配了本机的ip网段会导致外面访问不了,ssh会立马断开,只能走主机vnc来连接


这里可以参考这个教程 https://zocoxx.com/debian-wireguard.html

安装wireguard resolvconf,Ubuntu 22.04 resolvectl二进制文件位置变了,需要重新装
  1. apt install wireguard resolvconf -y
复制代码


进入wireguard目录,生成密钥
  1. cd /etc/wireguard/;
  2. # 生成节点公钥以及私钥
  3. wg genkey | tee privatekey | wg pubkey > publickey;
  4. wg genkey | tee client_privatekey | wg pubkey > client_publickey;
复制代码


查看公钥私钥,拿出来单独保存,后面写配置文件有用
  1. cat privatekey #服务端私钥;
  2. cat publickey  #服务端公钥;
  3. cat client_privatekey #客户端私钥;
  4. cat client_publickey  #客户端公钥;
复制代码



wireguard其实并不区分服务端或客户端,这里为了方便配置所以做了区分

查询本机网卡名,后面会用到


增加服务端配置
  1. cat <<EOT >> /etc/wireguard/wg0.conf
  2. [Interface]
  3. PrivateKey = 服务端私钥
  4. Address = 10.10.10.1/24 # IP address

  5. # enp6s18 替换为本机网卡名
  6. PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp6s18 -j MASQUERADE; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -A FORWARD -o %i -j ACCEPT; ip6tables
  7. -t nat -A POSTROUTING -o enp6s18 -j MASQUERADE

  8. # 强制所有域名走PaoPaoDNS 替换ip
  9. PostUp = resolvectl dns %i 192.168.31.52#paopao.dns; resolvectl domain %i ~.

  10. # enp6s18 替换为本机网卡名
  11. PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp6s18 -j MASQUERADE; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -D FORWARD -o %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o enp6s18 -j MASQUERADE

  12. #监听端口
  13. ListenPort = 55555

  14. [Peer]
  15. PublicKey = 客户端公钥
  16. AllowedIPs = 10.10.10.2/32
  17. PersistentKeepalive = 25
  18. EOT
复制代码


启动并检查
  1. wg-quick up wg0 #启动
  2. wg-quick down wg0 #停止

  3. systemctl start wg-quick@wg0 #启动
  4. systemctl stop wg-quick@wg0 #停止
  5. systemctl restart wg-quick@wg0 #重启
  6. systemctl enable wg-quick@wg0 #开机自启

  7. wg #查看信息
复制代码


增加客户端配置
  1. cat <<EOT >> /etc/wireguard/client.conf
  2. [Interface]
  3. PrivateKey = 客户端私钥
  4. Address = 10.10.10.2/32
  5. # 修改为PaoPaoDNS的ip
  6. DNS = 192.168.31.52

  7. [Peer]
  8. PublicKey = 服务端公钥
  9. # 这里让内网 fakeip和所有ipv6都走wireguard
  10. AllowedIPs = 192.168.31.0/24, 7.0.0.0/8, ::/0
  11. PersistentKeepalive = 25
  12. # 修改为PaoPaoDNS虚拟机DDNS的域名
  13. Endpoint = your.domain:55555
  14. EOT
复制代码


客户端配置不用启动,这里使用二维码导入到手机
  1. # 安装二维码生成软件
  2. apt install qrencode -y;
  3. qrencode -t ansiutf8 -r /etc/wireguard/client.conf
复制代码


安卓端软件我推荐用wgtunnel https://github.com/zaneschepke/wgtunnel/releases
苹果的话就装官方软件+捷径自动化
装好之后按+选QR code扫码就能添加了

我推荐这样设置,这样离开家里的wifi之后就会自动连上wireguard


防火墙配置

打开配置端口的v6防火墙,这里只开udp协议
  1. ufw allow from ::/0 to any port 55555 proto udp
复制代码

检查ufw防火墙默认设置,这里需要打开转发,否则配置了转发也不会生效

默认是拒绝的话需要打开
  1. ufw default allow routed
复制代码

开启流量转发
  1. echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
  2. echo net.ipv6.conf.all.forwarding=1 >> /etc/sysctl.conf
  3. sysctl -p
复制代码


路由器也需要打开转发,有两种方式,一个是打开全部的转发,一个是只开PaoPaoDNS的v6转发
我这里走的是通信规则只转发PaoPaoDNS



路由器 IPv6配置
如果用的是 openwrit.ai 的固件,初始化的时候勾选ipv6就行了,我这里需要修改几个配置

1. 配置lan口的ipv6


2. 下发无效ipv6 dns 关闭NDP代理


3. 关闭SLAAC


4. DHCP绑定ipv6地址


5. 新增通信规则,根据ipv6后缀开放设备防火墙,这样就不需要开放设备全部ipv6防火墙,避免安全问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5.0
何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5
  发表于 2024-3-9 00:41

评分

参与人数 2恩山币 +3 收起 理由
lixu*** + 1 一看就是觉得高端、大气、上档次!.
dai*** + 2 一看就是觉得高端、大气、上档次!.

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-26 15:16 | 显示全部楼层
part3 ipv4内网穿透
这里同样需要一个托管在cf的域名用来ddns

如果你的nat类型为fullcone,也就是nat1类型的,那么大概率可以通过打洞的方式回家

先下载下方的nat类型测试软件,下6m大小的那版就行,不用下其他的
并且把dns修改为223.5.5.5或者其他的公共dns,不要走paopaodns就行
然后测试nat类型就可以了
https://github.com/HMBSbige/NatTypeTester/releases



达标的话就可以按照natmap的wiki操作了
https://github.com/heiher/natmap/wiki/wireguard

我这里把一些要注意的点说下
1. 有问题先看openwrt的系统日志,进去之后ctrl+f搜索natmap,从最近的看起,有啥问题很容易分析的,不懂的直接关键词谷歌
2. openwrt可能没有内置curl包,会导致ddns脚本跑失败,在软件包那里安装curl就行了,或者命令行opkg install curl
3. ddns的脚本不太好使,我这里手动改了下,放到下面了

站内也有相关的教程,可以参考一下
https://www.right.com.cn/forum/thread-8289365-1-1.html

  1. #!/bin/sh

  2. IP4P=${3}

  3. ZONE='' # cf域名对应zone
  4. RECORD='' # 记录对应的id,在cf处修改对应的ipv6记录,打开F12 network,点保存,找到那条请求最后一段就是这个记录的id可
  5. NAME='' # 完整的ddns域名
  6. AUTH='' # https://dash.cloudflare.com/profile/api-tokens 使用Edit zone DNS模板申请的token

  7. while true; do
  8.     curl --request PATCH \
  9.           --url https://api.cloudflare.com/client/v4/zones/${ZONE}/dns_records/${RECORD} \
  10.           -H 'Content-Type: application/json' \
  11.           -H "Authorization: Bearer ${AUTH}" \
  12.           --data "{ "content": "${IP4P}", "name": "${NAME}", "proxied": false, "type": "AAAA", "ttl": 60 }" > /dev/null 2> /dev/null
  13.     if [ $? -eq 0 ]; then
  14.         break
  15.     fi
  16. done
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复 支持 反对

使用道具 举报

发表于 2024-3-8 23:09 | 显示全部楼层
太好了,一直在找的paopaodns刚好遇见了
回复 支持 反对

使用道具 举报

发表于 2024-3-9 00:26 | 显示全部楼层
好详细的教程,研究一下
回复 支持 反对

使用道具 举报

发表于 2024-3-12 09:32 来自手机 | 显示全部楼层
请问需要富强的设备网关要改成paopaogateway的ip192.168.31.100吗吗?还是用主路由的192.168.31.1即可?

点评

Dk
需要富强的设备只有dns需要变,在路由器上把7.0.0.0/8这个段路由到网关的上就行了 他这个原理就是通过paopaodns解析出fakeip,访问fakeip就会走clash网关  详情 回复 发表于 2024-3-12 11:52
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-12 11:52 | 显示全部楼层
daisuki 发表于 2024-3-12 09:32
请问需要富强的设备网关要改成paopaogateway的ip192.168.31.100吗吗?还是用主路由的192.168.31.1即可? ...

需要富强的设备只有dns需要变,在路由器上把7.0.0.0/8这个段路由到网关的上就行了
他这个原理就是通过paopaodns解析出fakeip,访问fakeip就会走clash网关

点评

明白了,谢谢。 还有我看paopaodns github上的案例分享,基本没提到开防火墙。你一楼教程里Ubuntu开墙是必须操作吗?如果我从系统层面关闭Ubuntu(paopaoDNS宿主机)的防火墙就不用加这些规则了?  详情 回复 发表于 2024-3-12 16:08
回复 支持 反对

使用道具 举报

发表于 2024-3-12 16:08 来自手机 | 显示全部楼层
Dk 发表于 2024-3-12 11:52
需要富强的设备只有dns需要变,在路由器上把7.0.0.0/8这个段路由到网关的上就行了
他这个原理就是通过pao ...

明白了,谢谢。
还有我看paopaodns github上的案例分享,基本没提到开防火墙。你一楼教程里Ubuntu开墙是必须操作吗?如果我从系统层面关闭Ubuntu(paopaoDNS宿主机)的防火墙就不用加这些规则了?

点评

Dk
可以是可以,但是我不太推荐这样搞,相当于v6直接暴露到公网了,比较危险  详情 回复 发表于 2024-3-13 13:07
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-13 13:07 | 显示全部楼层
daisuki 发表于 2024-3-12 16:08
明白了,谢谢。
还有我看paopaodns github上的案例分享,基本没提到开防火墙。你一楼教程里Ubuntu开墙是 ...

可以是可以,但是我不太推荐这样搞,相当于v6直接暴露到公网了,比较危险

点评

我暂时还没弄ipv6,先把paopaodns跑起来感受下,用起来还不错。多谢分享!  详情 回复 发表于 2024-3-13 22:22
回复 支持 反对

使用道具 举报

发表于 2024-3-13 22:22 | 显示全部楼层
Dk 发表于 2024-3-13 13:07
可以是可以,但是我不太推荐这样搞,相当于v6直接暴露到公网了,比较危险 ...

我暂时还没弄ipv6,先把paopaodns跑起来感受下,用起来还不错。多谢分享!
回复 支持 反对

使用道具 举报

发表于 2024-3-30 09:06 | 显示全部楼层
不知道为什么我改成fast_node=check其他配置不变的情况下,网关虚拟机控制台日志提提示找不到DNS,最终重复打印failed to dial websocket

点评

原因找到了,转换的订阅链接有问题  详情 回复 发表于 2024-4-2 19:45
Dk
网关应该走路由器的dhcp才对吧,dns也是路由器下发的  详情 回复 发表于 2024-4-1 16:50
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-4-1 16:50 | 显示全部楼层
buhonghao 发表于 2024-3-30 09:06
不知道为什么我改成fast_node=check其他配置不变的情况下,网关虚拟机控制台日志提提示找不到DNS,最终重复 ...

网关应该走路由器的dhcp才对吧,dns也是路由器下发的
回复 支持 反对

使用道具 举报

发表于 2024-4-2 19:45 | 显示全部楼层
buhonghao 发表于 2024-3-30 09:06
不知道为什么我改成fast_node=check其他配置不变的情况下,网关虚拟机控制台日志提提示找不到DNS,最终重复 ...

原因找到了,转换的订阅链接有问题
回复 支持 反对

使用道具 举报

发表于 2024-4-3 01:38 | 显示全部楼层
最近也在用ppdns+ppgw方案,确实比之前openwrt下面跑open克拉什+mosdns要快
回复 支持 反对

使用道具 举报

发表于 2024-4-8 00:15 | 显示全部楼层
请问楼主,ppgw用clash的pre核心,可以吗?

点评

Dk
自己试试呗,我反正用的clash-meta核心 实在不行到github问作者  详情 回复 发表于 2024-4-9 01:31
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-29 11:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表