Skip to content

Commit bd9e9be

Browse files
committed
feat: 更新 wrangler.toml 配置文件,修改名称和兼容性日期;在 _worker.js 中添加 DNS64 服务器支持
1 parent e859c06 commit bd9e9be

3 files changed

Lines changed: 31 additions & 20 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ Telegram交流群:[@CMLiussss](https://t.me/CMLiussss)
164164
| HTTP | `user:password@127.0.0.1:8080``127.0.0.1:8080` | 优先作为访问CFCDN站点的HTTP代理(支持多HTTP代理之间使用`,``换行`作间隔) |
165165
| SOCKS5 | `user:password@127.0.0.1:1080``127.0.0.1:1080` | 优先作为访问CFCDN站点的SOCKS5代理(支持多socks5, socks5之间使用`,``换行`作间隔) |
166166
| GO2SOCKS5 | `blog.cmliussss.com`,`*.ip111.cn`,`*google.com` | 设置`SOCKS5``HTTP`变量之后,可设置强制使用socks5访问名单(设置为`*`可作为全局代理) |
167+
| NAT64 | `dns64.cmi.ztvi.org``2001:67c:2960:6464::/96` | 作为PROXYIP失效后的应急兜底,自行查询[nat64.xyz](https://nat64.xyz/)的`DNS64 Server`或`NAT64 Prefix` |
167168
| ADD | `www.csgo.com:2087`,`icook.hk` | 本地优选域名/优选IP(支持多元素之间`,``换行`作间隔) |
168169
| ADDAPI | [https://raw.github.../addressesapi.txt](https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/addressesapi.txt) | 不解释, 懂得都懂 |
169170
| ADDCSV | [https://raw.github.../addressescsv.csv](https://raw.githubusercontent.com/cmliu/WorkerVless2sub/main/addressescsv.csv) | 不解释, 懂得都懂 |

_worker.js

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { connect } from "cloudflare:sockets";
33

44
let password = '';
55
let proxyIP = '';
6+
let DNS64Server = '';
67
//let sub = '';
78
let subConverter = atob('U1VCQVBJLkNNTGl1c3Nzcy5uZXQ=');
89
let subConfig = atob('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0FDTDRTU1IvQUNMNFNTUi9tYXN0ZXIvQ2xhc2gvY29uZmlnL0FDTDRTU1JfT25saW5lX01pbmlfTXVsdGlNb2RlLmluaQ==');
@@ -75,7 +76,7 @@ export default {
7576
proxyIP = env.PROXYIP || env.proxyip || proxyIP;
7677
proxyIPs = await ADD(proxyIP);
7778
proxyIP = proxyIPs[Math.floor(Math.random() * proxyIPs.length)];
78-
79+
DNS64Server = env.DNS64 || env.NAT64 || (DNS64Server != '' ? DNS64Server : atob("ZG5zNjQuY21saXVzc3NzLm5ldA=="));
7980
socks5Address = env.HTTP || env.SOCKS5 || socks5Address;
8081
socks5s = await ADD(socks5Address);
8182
socks5Address = socks5s[Math.floor(Math.random() * socks5s.length)];
@@ -2059,9 +2060,9 @@ async function resolveToIPv6(target) {
20592060

20602061
// 查询NAT64 IPv6地址
20612062
async function queryNAT64(domain) {
2062-
const socket = connect(atob('ZG90Lm5hdDY0LmRrOjg1Mw=='), {
2063-
secureTransport: 'on',
2064-
allowHalfOpen: false
2063+
const socket = connect({
2064+
hostname: isIPv6(DNS64Server) ? `[${DNS64Server}]` : DNS64Server,
2065+
port: 53
20652066
});
20662067

20672068
const writer = socket.writable.getWriter();
@@ -2190,25 +2191,34 @@ async function resolveToIPv6(target) {
21902191
return answers;
21912192
}
21922193

2193-
try {
2194-
// 判断输入类型并处理
2195-
if (isIPv6(target)) {
2196-
return target; // IPv6直接返回
2194+
function convertToNAT64IPv6(ipv4Address) {
2195+
const parts = ipv4Address.split('.');
2196+
if (parts.length !== 4) {
2197+
throw new Error('无效的IPv4地址');
21972198
}
21982199

2199-
let domain;
2200-
if (isIPv4(target)) {
2201-
domain = target + atob('LmlwLjA5MDIyNy54eXo='); // IPv4转换为NAT64域名
2202-
} else {
2203-
// 域名先解析IPv4再转NAT64
2204-
const ipv4 = await fetchIPv4(target);
2205-
domain = ipv4 + atob('LmlwLjA5MDIyNy54eXo=');
2206-
}
2200+
// 将每个部分转换为16进制
2201+
const hex = parts.map(part => {
2202+
const num = parseInt(part, 10);
2203+
if (num < 0 || num > 255) {
2204+
throw new Error('无效的IPv4地址段');
2205+
}
2206+
return num.toString(16).padStart(2, '0');
2207+
});
2208+
2209+
// 构造NAT64
2210+
return DNS64Server.split('/96')[0] + hex[0] + hex[1] + ":" + hex[2] + hex[3];
2211+
}
22072212

2208-
return await queryNAT64(domain);
2213+
try {
2214+
// 判断输入类型并处理
2215+
if (isIPv6(target)) return target; // IPv6直接返回
2216+
const ipv4 = isIPv4(target) ? target : await fetchIPv4(target);
2217+
const nat64 = DNS64Server.endsWith('/96') ? convertToNAT64IPv6(ipv4) : await queryNAT64(ipv4 + atob('LmlwLjA5MDIyNy54eXo='));
2218+
return isIPv6(nat64) ? nat64 : atob('cHJveHlpcC5jbWxpdXNzc3MubmV0');
22092219
} catch (error) {
22102220
console.error('解析错误:', error);
2211-
return `解析失败: ${error.message}`;
2221+
return atob('cHJveHlpcC5jbWxpdXNzc3MubmV0');;
22122222
}
22132223
}
22142224

wrangler.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
name = "t20250621"
1+
name = "t20250626"
22
main = "_worker.js"
3-
compatibility_date = "2025-06-21"
3+
compatibility_date = "2025-06-26"

0 commit comments

Comments
 (0)