Closed xf110 closed 1 month ago
设置dns也不行解析不了 参考这里 ip4p存在的问题 帖子中标注的 不过确实txt记录更全面 通用性更强 ,通过ddns脚本 将生成的ip 端口 解析域名 就方便多了
IP4P在一些操作系统上使用系统内置的DNS解析API的确会有依赖配置IPv6地址的问题,不过这可以换DNS解析实现来解决。
之前我是比较担心运营商的DNS服务器对TXT记录可能不会像A/AAAA记录那样进行友好的缓存,导致解析延迟会比较大。我这实测了一下TXT记录,运营商的DNS服务器有比较高的概率不返回结果,而AAAA记录则非常稳定。(不知道是不是个例
这个组网插件 增加了txt域名地址 使用起来很方便 没有延迟的问题 将natmap生成的ip和端口 以IP:端口解析到域名的txt记录 这个插件就填写域名 就能链接到服务器了 很方便 所以很期望增加wireguardAPP的txt记录
DNS 已经存在指示 port 的SRV (type 64) 记录了,建议直接使用 SRV 记录
作为记录ip和端口,建议使用SRV记录更为合适
SRV要做两次解析,IP地址一次,端口一次。当初的考虑是倾向于只做一次解析,缓存友好,且客户端解析实现简单。
https://cloud.tencent.com/document/product/302/12648
SRV做两次解析,IP地址一次,端口一次。最初的考虑是倾向于只做一次解析,缓存方式,且客户端解析实现简单。
其实解析这个不需要担心,只要适配了,他们有办法去更新记录,如果可以的话 txt srv ip4p都有最好
应该可以通过下面的项目解决向客户端或对端共享/报告打洞后的出口IP地址及端口的问题,而且对脚本更友好 https://github.com/Violet-sword/Exchange-Variable
应该可以通过下面的项目解决向客户端或对端共享/报告打洞后的出口IP地址及端口的问题,而且对脚本更友好 https://github.com/Violet-sword/Exchange-Variable
这种法子有点过于麻烦了,好的做法还是应该在dns上做解析而不是用第三方
可以试试我魔改的版本 https://github.com/zhcode-fun/wireguard-android
如果需要windows版本的,在这 https://github.com/zhcode-fun/wireguard-windows
大佬 可否改下这个wg工具
不好意思,我对 C 一窍不通
编译的时候 提示 WARNING: ./ui/build/intermediates/merged_java_res/googleplay/mergeGoogleplayJavaResource/base.jar: R8: Unexpected reference to missing service class: META-INF/services/java.net.spi.InetAddressResolverProvider.
编译的时候 提示 WARNING: ./ui/build/intermediates/merged_java_res/googleplay/mergeGoogleplayJavaResource/base.jar: R8: Unexpected reference to missing service class: META-INF/services/java.net.spi.InetAddressResolverProvider.
我在README加了编译步骤,如果还有问题,在wireguard-android/issues里问吧
wireguard (ip4p,txt,srv).zip 已经做出来了,支持ip4p,ipv6,txt,srv记录解析,端口填0是srv,填1是txt,ip4p记录填0、1以外的端口。感谢zhcode-fun
附带一个github的云编译模板,方便自行修改代码打包apk
name: build-android-wireguard
on:
workflow_dispatch:
inputs:
password:
description: '请输入签名证书密码:(不支持中文密码,且最少6位字符)'
required: false
default: 'password'
env:
password: "${{ github.event.inputs.password }}"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 检查仓库
uses: actions/checkout@v4
with:
repository: zhcode-fun/wireguard-android #使用zhcode-fun大佬的wireguard-android仓库
ref: dev-v1.0.20231018.1 #使用dev-v1.0.20231018.1分支
submodules: true
- name: 设置JDK环境
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: 构建 APK
run: |
sed -i '/signingConfig = signingConfigs.getByName("release")/d' ./ui/build.gradle.kts
sed -i 's|//\s*\(abiFilters.add("armeabi-v7a")\)|\1|' ./ui/build.gradle.kts
sed -i 's|//\s*\(abiFilters.add("armeabi-v7a")\)|\1|' ./tunnel/build.gradle.kts
bash ./gradlew assembleRelease
- name: 签名
run: |
mkdir -p /opt/wg
mv ./ui/build/outputs/apk/release/ui-release-unsigned.apk /opt/wg/app-release-unsigned.apk
cd /opt/wg
#生成签名文件keystore.jks
keytool -genkey -v -keystore keystore.jks -storepass $password -alias key -keypass $password -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android, OU=Android, O=Android, L=BeiJing, ST=BeiJing, C=CN"
#启用谷歌v1 v2 v3 v4 签名方式同时签名
/usr/local/lib/android/sdk/build-tools/34.0.0/apksigner sign --ks keystore.jks --ks-key-alias key --ks-pass pass:$password --key-pass pass:$password --out wireguard-android.apk --in app-release-unsigned.apk --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --v4-signing-enabled true
rm app-release-unsigned.apk
- name : 上传
uses: actions/upload-artifact@master
if: always()
with:
name: wireguard-apk
path: /opt/wg/*
wireguard安卓客户端能直接解析IP4P很不错,但是在没有v6的环境中还需手动设置dns服务器为223.5.5.5,不方便。能不能在安卓客户端加入直接解析txt记录的功能?比如域名123.abc.com的txt记录为打洞获取的公网地址和端口123.45.23.66:7899 ,就像直接解析ip4p一个效果,这样无论在什么环境下都不用特殊设置。