家里只有 ipv6 公网 ip ,注册了个域名做 DDNS
服务端用黑群晖,装了 wireguard 套件和 wg-easy 镜像
路由装了 openwrt 固件,把黑群晖上的 wireguard 服务端口映射到公网上,路由器上的防火墙也已经给端口放行了
客户端现在只试了 iOS
客户端(iPhone)使用流量,连接上 wireguard 后,wg-easy 后台能看到流量,但是上行速度高达 192 B/s ,访问不了内网上的服务
ps:iPhone 连上 wifi 后是可以通过域名和 ipv6 地址访问到内网服务的
有老哥遇到过类似的问题吗?
服务端配置大致如下
docker run --detach \ --name wg-easy \ --env WG_HOST=x \ --env PASSWORD_HASH='x' \ --env WG_DEFAULT_ADDRESS="192.168.6.x" \ --env WG_ALLOWED_IPS="192.168.6.0/24" \ --env WG_MTU=1420 \ --volume ~/.wg-easy:/etc/wireguard \ --publish 51820:51820/udp \ --publish 51821:51821/tcp \ --cap-add NET_ADMIN \ --cap-add SYS_MODULE \ --sysctl 'net.ipv6.conf.all.forwarding=1' \ --restart unless-stopped \ ghcr.io/wg-easy/wg-easy
]]>如果用 upd2raw 加套如果手机客户端也要启用,那这个方案不大合适我了。
]]>启动后可以看到
utun5 : 10.70.0.4 utun6 : 198.18.193.71
在本机上 ping 10.70.0.4
不通为什么
有 dalao 熟悉墙内组网方案吗?
]]>但是,当我通过域名(nas.example.com)访问 NAS 时,无法成功访问 NAS 。这个 nas.example.com 的域名是指向家里的内网地址 192.168.10.10 的(已注册在 dnspod )。也就是我在目前的组网条件下,wireguard 组网的设备上,能够通过 192.168.10.10 访问 nas ,但无法通过 nas.example.com 访问 nas 。
ABC 三台设备上通过 nslookup 查询域名能够得到期望的局域网 ip(192.168.10.10)。在 ABC 上的 wireguard 配置上尝试使用系统 dns 和 223.5.5.5 都没法解决 通过域名无法访问 nas 的问题。
这个是哪里的问题,或者该怎么继续排查呢?
]]>peer2(debian)————openwrt 路由器 1————peer1(公网服务器)————openwrt 路由器 2————peer3(unraid) 11.0.8.2 192.168.5.1 wg 地址:11.0.8.1 192.168.11.1 11.0.8.7 192.168.5.98 192.168.11.97
两个刷了 openwrt 的路由器是网关,peer1 、peer2 、peer3 是运行 wireguard 的设备,外层套 udp2raw ,udp2raw 正常连接。在 openwrt 上建立 peer 能正常互访,但是我换到其他设备( debian 和 unraid )就不行了,peer1 能 ping 通 peer2 或 peer3 ,握手也成功,peer2 和 peer3 就 ping 不通 peer1 。在 peer1 上用 tcpdump 查看,只有 echo request ,没有 echo reply 的包。不知道是 peer1 的问题还是路由器防火墙的配置问题?
配置如下: peer1: [Interface] PrivateKey = ****** Address = 11.0.8.1/24 MTU = 1200 PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o %i -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o %i -j MASQUERADE ListenPort = 51856 [Peer] PublicKey = ****** AllowedIPs = 11.0.8.7/32 ,192.168.11.0/24 [Peer] PublicKey = ****** AllowedIPs = 11.0.8.2/32 ./udp2raw_amd64 -s -l 0.0.0.0:12345 -r 127.0.0.1:51856 -k "******" --raw-mode faketcp --seq-mode 1 --cipher-mode xor -a
peer2: [Interface] PrivateKey = ****** Address = 11.0.8.2/24 MTU = 1200 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp2s0 -j MASQUERADE [Peer] PublicKey = ****** Endpoint = 127.0.0.1:6666 AllowedIPs = 11.0.8.0/24 ./udp2raw_amd64 -c -l 0.0.0.0:6666 -r a.b.c.d:12345 -k "******" --raw-mode faketcp --seq-mode 1 --cipher-mode xor -a
peer3(由 unraid 自动生成): [Interface] PrivateKey=****** Address=11.0.8.7 ListenPort=51820 MTU=1200 PostUp=logger -t wireguard 'Tunnel WireGuard-wg0 started' PostUp=iptables -t nat -A POSTROUTING -s 11.0.8.0/24 -o br0 -j MASQUERADE PostDown=logger -t wireguard 'Tunnel WireGuard-wg0 stopped' PostDown=iptables -t nat -D POSTROUTING -s 11.0.8.0/24 -o br0 -j MASQUERADE PostUp=ip -4 route flush table 200 PostUp=ip -4 route add default via 11.0.8.7 dev wg0 table 200 PostUp=ip -4 route add 192.168.11.0/24 via 192.168.11.1 dev br0 table 200 PostDown=ip -4 route flush table 200 PostDown=ip -4 route add unreachable default table 200 PostDown=ip -4 route add 192.168.11.0/24 via 192.168.11.1 dev br0 table 200 [Peer] PublicKey=****** Endpoint=127.0.0.1:5555 AllowedIPs=11.0.8.0/24 ./udp2raw_amd64 -c -l 0.0.0.0:5555 -r a.b.c.d:12345 -k "******" --raw-mode faketcp --seq-mode 1 --cipher-mode xor -a
感谢!
]]>最近迷上了 ChatGPT ,刚出来就注册了。但是因为节点问题,不能使用客户端。偶然一次,在这家 VPN 官网上看到可以配置 wireguard 、openVPN 、IKEv2 等协议的其他节点。尝试了下 wireguard 的新西兰或澳大利亚节点,连接的很顺畅。手机端也可以 ChatGPT 客户端了,mac 电脑端也配置了客户端了。
但是,最近几天,wireguard 客户端的启动后,只有上行数据,就 144B 一点点的增加,没有下限数据了。这是 wireguard 被封了吗?真心求教各位大神。
另外,听大家经常说的小火箭,这个 app 可以支持其他协议的配置吗?好用吗?我看 App Store 上要花 2.99 刀买。
]]>毕竟是动态公网 IP ,所以 WG 配置里的 endpoint 肯定是写的域名+端口形式。
不太懂这个 WG 协议或者客户端,在连回家请求里带不带类似 http 请求头里的域名信息? 是否会被运营商知道是通过域名一直请求连接的?增加被查的风险?
还是说客户端在公司本地先解析了 DDNS 域名的 IP 后,在一直使用 IP 去连回家?
]]>我在公司上班笔记本都是开着三个 vpn 软件:工作的 vpn ,wireguard (访问家里),clash-verge (用的 meta 核心)。
因为工作时要连接公司的 vpn ,所以在 clash-verge 配置文件里 .dns.nameserver-policy 我指定了工作使用的域名走工作的 dns ,工作上我使用起来是正常的。
dns: enable: true ipv6: false enhanced-mode: redir-host fake-ip-range: 198.18.0.1/16 proxy-server-nameserver: - 8.8.8.8 default-nameserver: - 8.8.8.8 nameserver: - 8.8.8.8 - 10.30.1.29 #工作 dns - 192.168.20.74 #家里 dns nameserver-policy: '+.xxx.com.cn': '10.30.1.29' #工作域名 '+.xxx.com': '192.168.20.74' #家里域名 tun: enable: true stack: system dns-hijack: - any:53 auto-route: true auto-detect-interface: true inet4_route_address:
我使用 wireguard 连接内网,同样在配置文件里 .dns.nameserver-policy 设置内网域名走家里内网 dns ,但是没有效果。
在 powershell 中使用 nslookup 指定家里域名和家里 dns 提示:DNS request timed out.
我在部署家里内网 dns 前一直都是使用 wireguard 直连的,ip 都能正常访问。
( clash-verge 一直都是使用 tun 模式)
我关闭了工作 vpn 和 clash-verge ,并配置 wireguard dns 为内网 dns
[Interface] PrivateKey = Address = 10.66.99.21/32 DNS = 192.168.20.74 [Peer] PublicKey = PresharedKey = AllowedIPs = 192.168.20.0/24, 192.168.3.0/24, 192.168.100.0/24, 10.66.99.0/24 Endpoint =
此时使用 nslookup 指定家里域名和家里 dns 还是提示:DNS request timed out.
]]>/etc/wireguard # wg set wg0 table off Invalid argument: table
特意寻求大佬们有没有什么版本,实现这个操作,因为我要用 ospf 路由,必须要关掉掉 allowed ips: 10.9.3.1/32
]]>#官方链接库地址: https://github.com/WireGuard/wireguard-android
#编译报错 Task failed with an exception.
首先要了解,wireguard 协议增加的开销是 16 字节头加 16 字节尾,一共 32 字节。
如果你的 wireguard 两端都是 IPv4 地址连接,一个包(假设长度为 x Bytes )到达对方的 wireguard 虚拟网卡之后:
如果我们是直接在两台 LAN 连接的电脑上架设 wireguard ,考虑到以太网卡的 MTU 是 1500, 这时候可以选择的 wireguard MTU 就是
1500 - 32 - 8 - 20 = 1440
如果是通过 PPPoE 上网的,本身 PPPoE 的协议开销会占掉 8 个字节,所以上述数据要再减 8 。
1500 - 32 - 8 - 8 = 1432
如果你中间使用了 IPv6 协议连接两端,因为 v6 的地址长,协议开销变大,这时候在以太网和 PPPoE 下的最大 MTU 分别成了
1500 - 32 - 8 - 40 = 1420 1500 - 8 - 32 - 8 - 40 = 1412
缺省情况下,Linux 的 wg-quick 脚本会按照使用了 IPv6 的最大包络,从系统中各个网卡的 MTU 找到一个最小的,减去 80, 作为缺省 MTU 。这也就是 Linux 上常见到 wireguard 接口的 MTU 是 1420 的缘故。
实质上你用这个在纯 v4 网络上是有一点浪费的,但无所谓了,更保险。
这个时候还应该想到:你在本地是 PPPoE 连接,但是你的海外 VPS 人家可是 LAN 连接,所以会发生你这里 1492-80=1412 人家那里 1500-80=1420 的情况。好在这个-80 是按照 IPv6 最大包罗万象来选的,对于 IPv4 线路而言还有足够的余量,不至于产生影响。
核心是承载 wireguard 流量的 UDP 数据包不能被分包。
但是为了安全起见,还是应该在两端的配置文件里都指定同一个 MTU 数值为好(这种情况下 1412 是一个合理的选择)。
因为 wireguard 是走 UDP 协议的,会受到运营商 QoS 策略的限制,一段时间后断线或者限流,于是出现了一些把 UDP 伪装成 TCP 的办法。这些办法的配置各有不同,但重点是:它们都会添加额外的协议开销字节数,减少了 wireguard 的有效 MTU ,所以在使用了这些手段之后,必须要减少 wireguard 接口 MTU 配置。
对于最常用的两种伪装手段而言,udp2raw 是 44 字节,phantun 是 12 字节。于是,在普通 PPPoE 宽带上使用的 wireguard 接口 MTU 就应该是 udp2raw : 1412 - 44 = 1368 phantun: 1412 - 12 = 1400
最后,更戏剧性的来了,笔者丧心病狂购买了所谓的"国际精品网",还是 PPPoE 拨号,然而 MTU 却大幅度缩水成了 1442, 被电信内部的网络白白吃掉了 50 个字节(恐怖的是 MTU 小了,MRU 还是 1492 )。那么可怜的 wireguard MTU 就变成了:
UDP:1442 - 32 - 8 - 40 = 1362
所以,这时候你就需要按照自己的情况,选择合适的 MTU ,保证网络畅通了。
在下有段时间心血来潮,想着既然 VPS 和本地都已经有 IPv6 地址,那么顺序切换 IPv4 和 IPv6 地址来建立 wireguard 连接应该是一个有希望的方案。然而当时没有仔细考虑这个 MTU 设置,设成 IPv6 连接后各种不舒服……
再加上发现精品网只是 IPv4 部分,IPv6 走的路由依旧是普通的 163 线路,延迟巨大,所以彻底打消了这个念头。
但如果你一直是用普通的 163 线路或者其他运营商,那倒是可以一试。163 线路的 PPPoE MTU 还是 1492 呢。
总结一下:
正常普通 PPPoE 宽带:1412 正常普通 PPPoE 宽带套 phantun: 1400
精品网: 1362 精品网套 phantun: 1350 像我一样的洁癖强迫症:1280 + 32 + 32 = 1344 (算是个整数?)
]]>如图,现在有一个云服务器,具备公网 IP ;然后两边 Router0 和 Router2 分别代表两个 NAT 网络,都不具备公网 IP 。
那么请教一下:
#tailscale #headscale
现在家庭宽带有 v6 的越来越多了,内穿回家也越来越方便了
不过还有一些场合(如在公司里、出差在酒店里,没有 v6 地址 或者跟朋友们搞私服玩不想暴露家里地址等),内穿回家确实也存在问题
我在想做一个 Wireguard 中继节点服务,用公网 IP 给 wg 数据包中转一下
这种服务大家觉得有用/必要吗? 或者说有上述场景需求的人多吗?
]]>