亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

基于Cloudflare Workers和Pages自建加密DNS網(wǎng)關(guān):DoH原理與實(shí)戰(zhàn)

基于Cloudflare Workers和Pages自建加密DNS網(wǎng)關(guān):DoH原理與實(shí)戰(zhàn) 過去幾年很多開發(fā)者把個(gè)人主頁(yè)或項(xiàng)目文檔放到了 GitHub Pages、Gitee Pages 上以為“Pages”只是托個(gè)靜態(tài)網(wǎng)頁(yè)。但如果把目光放到 Cloudflare Pages你會(huì)發(fā)現(xiàn)它和 Workers 共用同一套邊緣運(yùn)行環(huán)境還能跑真正的服務(wù)端邏輯。一個(gè)很典型的玩法就是用 Workers 或 Pages Functions 自建一個(gè)加密 DNS 解析網(wǎng)關(guān)。先說一個(gè)明確判斷這篇文章要搭的“加密 DNS 服務(wù)器”并不是傳統(tǒng)意義上的權(quán)威 DNS 服務(wù)器而是一個(gè)帶隱私和可控策略的DoH 網(wǎng)關(guān)。它接收客戶端發(fā)來(lái)的 HTTPS 加密 DNS 請(qǐng)求再轉(zhuǎn)發(fā)給上游遞歸解析服務(wù)最后把結(jié)果返回給客戶端。通過這一層你可以擁有一個(gè)自定義域名的加密 DNS 入口還能統(tǒng)一加緩存、鑒權(quán)和解析策略。讀完這篇文章你能跑通兩件事一是用 Cloudflare Worker 實(shí)現(xiàn)一個(gè)支持 JSON 格式的 DoH 解析 API二是用 Cloudflare Pages 實(shí)現(xiàn)“靜態(tài)頁(yè)面 DNS 轉(zhuǎn)發(fā)函數(shù)”的一體化部署。文章里還會(huì)講 wire format 方式的實(shí)現(xiàn)思路、常見坑、鑒權(quán)和緩存策略方便你在生產(chǎn)環(huán)境中落地。1. 這篇文章真正要解決的問題不少人會(huì)有這樣的經(jīng)歷打開電腦連上 WiFi 后DNS 查詢默認(rèn)走路由器下發(fā)的地址在某些網(wǎng)絡(luò)環(huán)境下DNS 響應(yīng)被篡改、被加廣告、長(zhǎng)時(shí)間無(wú)響應(yīng)問題排查起來(lái)非常被動(dòng)。普通 DNS 請(qǐng)求是明文傳輸?shù)闹虚g設(shè)備確實(shí)有可能看到你在查詢哪些域名。所以現(xiàn)在越來(lái)越多人開始關(guān)注加密 DNS也就是 DoHDNS over HTTPS、DoTDNS over TLS這類方案。但直接使用公共 DoH 服務(wù)也有不舒服的地方公共地址大家都在用不方便統(tǒng)計(jì)自己的查詢量想在里面加一層“域名過濾”或“本地緩存”也比較麻煩。于是就有了“自建加密 DNS 網(wǎng)關(guān)”的需求。云服務(wù)商里Cloudflare Workers 和 Pages 是很適合做這件事的載體。它們不需要你買服務(wù)器不需要自己管證書和守護(hù)進(jìn)程寫完代碼直接發(fā)布到邊緣節(jié)點(diǎn)幾十行代碼就能把 DNS 查詢包一層 HTTPS。這篇文章真正適合的讀者有三類想搞懂 DoH 原理并希望用 Serverless 方式落地一個(gè)真實(shí)服務(wù)的開發(fā)者家里有多臺(tái)設(shè)備、多個(gè)網(wǎng)絡(luò)環(huán)境想統(tǒng)一一個(gè)自定義 DNS 入口的工程師Page 托管用戶想知道 Cloudflare Pages 除了托管靜態(tài)頁(yè)面還能做什么的人。也要提前說清楚邊界Cloudflare Workers 上跑的是“DNS 代理/轉(zhuǎn)發(fā)器”不是權(quán)威 DNS。你不能在這里面管理自己的域名記錄也不適合把它當(dāng)作大規(guī)模內(nèi)部 DNS 基礎(chǔ)設(shè)施。它的定位是“加密 DNS 入口 策略控制層”。2. 加密 DNS 基礎(chǔ)DoH、DoT、DoQ 概念與區(qū)別在進(jìn)入代碼之前先把幾個(gè)概念理清楚。很多文章把 DoH、DoT、DoQ 混著說初學(xué)者很容易被繞暈。2.1 明文 DNS 的問題普通 DNS 一般是客戶端向 53 端口發(fā)起 UDP 查詢。這個(gè)請(qǐng)求從你的電腦到路由器再到運(yùn)營(yíng)商遞歸 DNS中間經(jīng)過的鏈路如果被監(jiān)聽對(duì)方可以看到你查詢的域名。更麻煩的是如果響應(yīng)被篡改客戶端可能被引導(dǎo)到錯(cuò)誤的 IP 地址。2.2 三種主流加密 DNS 方式協(xié)議全稱傳輸方式默認(rèn)端口優(yōu)點(diǎn)弱點(diǎn)DoHDNS over HTTPSHTTPSHTTP/2 或 HTTP/3443和普通網(wǎng)頁(yè)流量混在一起難以被單獨(dú)識(shí)別瀏覽器支持度高實(shí)現(xiàn)相對(duì)復(fù)雜要求服務(wù)端支持 HTTPSDoTDNS over TLSTLS 專屬連接853實(shí)現(xiàn)簡(jiǎn)單連接生命周期穩(wěn)定專用端口容易被網(wǎng)絡(luò)設(shè)備識(shí)別和封鎖DoQDNS over QUICQUIC基于 UDP853低延遲多路復(fù)用正在被主流客戶端逐步支持生態(tài)系統(tǒng)還不夠成熟客戶端支持較少這里最容易混淆的是 DoH 和 DoT。簡(jiǎn)單記DoH 的流量是“HTTPS 請(qǐng)求”和你看網(wǎng)頁(yè)用的是同一個(gè)模型DoT 是“為 DNS 單獨(dú)開設(shè)一條 TLS 通道”。兩者都做了加密但在網(wǎng)絡(luò)中的“可見性”不同。2.3 DoH 的兩種數(shù)據(jù)格式文章后面會(huì)頻繁提到兩種格式application/dns-jsonJSON 格式適合開發(fā)調(diào)試、腳本調(diào)用也適合在 Worker 里直接處理 JSON 對(duì)象。瀏覽器地址欄直接訪問也能看到可讀結(jié)果。application/dns-message二進(jìn)制 DNS 消息格式和傳統(tǒng) DNS 報(bào)文結(jié)構(gòu)一致只是外面包了一層 HTTPS。系統(tǒng)級(jí)的原生 DoH 功能比如 Windows 上的自定義 DoH 模板通常使用這種格式。做網(wǎng)關(guān)時(shí)最簡(jiǎn)單的是先做 JSON 格式因?yàn)榇a好寫、驗(yàn)證方便。但如果想讓手機(jī)系統(tǒng)或?yàn)g覽器原生 DoH 直接用就需要支持 wire format。2.4 加密 DNS 網(wǎng)關(guān)的請(qǐng)求鏈路用 Cloudflare Worker 實(shí)現(xiàn)的自建加密 DNS 網(wǎng)關(guān)請(qǐng)求鏈路是這樣的客戶端設(shè)備/瀏覽器 ↓ HTTPSDoH 請(qǐng)求 Cloudflare Worker自定義域名 ↓ 上游 DoH 請(qǐng)求 Cloudflare 公共 DNS 或其他遞歸 DNS ↓ DNS 明文解析 互聯(lián)網(wǎng)權(quán)威 DNS 服務(wù)器關(guān)鍵點(diǎn)在于客戶端和 Worker 之間是加密的Worker 和上游之間也走 DoH那么從網(wǎng)關(guān)出去的查詢也是加密的。中間只多了一層自己的策略邏輯。3. Workers 還是 Pages方案選型與適用場(chǎng)景很多讀者會(huì)問標(biāo)題里又說 Workers 又說 Pages到底該用哪個(gè)其實(shí) Cloudflare Pages Functions 底層就是 Workers 運(yùn)行時(shí)寫法也很接近。區(qū)別主要在于“你還需要不需要托管靜態(tài)資源”。維度Cloudflare WorkersCloudflare Pages部署目標(biāo)純函數(shù) / API靜態(tài)資源 Functions項(xiàng)目類型wrangler deploy發(fā)布 Worker構(gòu)建靜態(tài)站點(diǎn)后發(fā)布Functions 放在functions/目錄適用場(chǎng)景只想快速發(fā)布一個(gè) API、網(wǎng)關(guān)、代理已有靜態(tài)站點(diǎn)希望站點(diǎn)接口也跑在同一域名下自定義域名通過 Worker 路由綁定Pages 自定義域名綁定免費(fèi)額度有每日請(qǐng)求量限制超出會(huì)停止服務(wù)同樣有免費(fèi)額度適合中小流量項(xiàng)目本地開發(fā)wrangler devwrangler pages dev選型建議很直接如果你只是想要一個(gè) DNS API 或一個(gè)隱藏服務(wù)直接選 Worker項(xiàng)目結(jié)構(gòu)最簡(jiǎn)潔。如果你想做一個(gè)“帶管理后臺(tái)的加密 DNS 控制臺(tái)”或者已經(jīng)有一個(gè)靜態(tài)站點(diǎn)希望把接口合到同一個(gè)域名下用 Pages 更舒服。不過要注意二者都跑在 Cloudflare 邊緣節(jié)點(diǎn)上。默認(rèn)域名是*.workers.dev或*.pages.dev這兩個(gè)域名雖然免費(fèi)但如果要做生產(chǎn)環(huán)境 DNS 入口建議綁定自己的域名。一來(lái)行為更可控二來(lái)在客戶端配置 DoH 地址時(shí)也更像正式服務(wù)。4. 環(huán)境準(zhǔn)備與前置條件開始寫代碼前先把環(huán)境準(zhǔn)備好。這里的核心依賴是 Cloudflare 的 wrangler 命令行工具。4.1 需要準(zhǔn)備的東西Cloudflare 賬號(hào)如果沒有先去官網(wǎng)注冊(cè)一個(gè)。免費(fèi)版足夠完成本文章的所有實(shí)驗(yàn)。Node.js 環(huán)境建議使用當(dāng)前 LTS 版本。wrangler 是 npm 包需要 Node 環(huán)境來(lái)安裝和運(yùn)行。一個(gè)域名可選但推薦如果域名已經(jīng)托管在 Cloudflare后面綁定自定義域名會(huì)非常方便。本地開發(fā)工具VS Code 或任意編輯器都可以。4.2 安裝 wrangler安裝命令npm install -g wrangler安裝完成后確認(rèn)版本wrangler --version如果網(wǎng)絡(luò)環(huán)境不允許全局安裝也可以把 wrangler 裝到項(xiàng)目本地npm init -y npm install -D wrangler然后通過npx wrangler使用本地命令。4.3 登錄 Cloudflare在項(xiàng)目目錄執(zhí)行wrangler login命令會(huì)打開瀏覽器讓你授權(quán) wrangler 訪問你的賬號(hào)。授權(quán)完成后wrangler 會(huì)把憑證保存到本地后續(xù)發(fā)布和部署都可以直接用。如果是在 CI/CD 環(huán)境中使用一般會(huì)用CLOUDFLARE_API_TOKEN環(huán)境變量代替交互登錄。本文章的家庭/個(gè)人部署場(chǎng)景直接wrangler login就夠了。4.4 創(chuàng)建項(xiàng)目目錄以最常用的 Worker 方案為例mkdir my-doh-gateway cd my-doh-gateway npm init -y后續(xù)代碼都放在這個(gè)目錄里。5. 方案一用 Worker 實(shí)現(xiàn) DoH JSON 解析 API這是最簡(jiǎn)單、也最容易跑通的方案。整個(gè) Worker 就是一段 JavaScript處理 GET 請(qǐng)求從 URL 參數(shù)里讀取域名和記錄類型再請(qǐng)求上游 DoH 服務(wù)把結(jié)果轉(zhuǎn)成 JSON 返回給客戶端。5.1 創(chuàng)建 wrangler.toml在項(xiàng)目根目錄創(chuàng)建wrangler.tomlname my-doh-gateway main src/index.js compatibility_date 2024-01-01name是 Worker 名稱會(huì)出現(xiàn)在部署后的默認(rèn)域名里。main指定入口文件。compatibility_date是 Cloudflare Workers 的兼容性日期按 wrangler 提示填寫即可不需要過度糾結(jié)。5.2 Worker 核心代碼創(chuàng)建src/index.jsconst UPSTREAM_DOH https://cloudflare-dns.com/dns-query; const VALID_TYPES [ A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, HTTPS ]; function isValidDomain(name) { return /^(?.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)[a-zA-Z]{2,63}$/.test(name); } export default { async fetch(request, env, ctx) { const url new URL(request.url); if (request.method ! GET) { return new Response(Method Not Allowed, { status: 405 }); } const name url.searchParams.get(name); const type (url.searchParams.get(type) || A).toUpperCase(); if (!name || !isValidDomain(name)) { return new Response(Invalid name param, { status: 400 }); } if (!VALID_TYPES.includes(type)) { return new Response(Unsupported type: ${type}, { status: 400 }); } const upstreamUrl ${UPSTREAM_DOH}?name${encodeURIComponent(name)}type${type}; try { const upstreamResponse await fetch(upstreamUrl, { headers: { accept: application/dns-json, user-agent: cloudflare-worker-doh/1.0, }, }); if (!upstreamResponse.ok) { return new Response(Upstream error: ${upstreamResponse.status}, { status: 502, }); } const payload await upstreamResponse.json(); const body JSON.stringify(payload, null, 2); return new Response(body, { headers: { content-type: application/dns-json; charsetutf-8, cache-control: max-age60, access-control-allow-origin: *, }, }); } catch (error) { return new Response(Upstream request failed: ${error.message}, { status: 502, }); } }, };這段代碼的核心邏輯有四個(gè)部分參數(shù)校驗(yàn)只接受 GET 請(qǐng)求并且校驗(yàn)name和type。域名不合法或記錄類型不支持時(shí)直接返回 400避免把無(wú)效請(qǐng)求轉(zhuǎn)發(fā)到上游。上游轉(zhuǎn)發(fā)通過fetch請(qǐng)求cloudflare-dns.com/dns-query并說明自己要application/dns-json格式。異常處理上游連接失敗或返回非 2xx 狀態(tài)時(shí)返回 502并保留原始錯(cuò)誤狀態(tài)碼。響應(yīng)頭設(shè)置了 CORS 頭方便瀏覽器側(cè)的腳本直接跨域調(diào)用同時(shí)設(shè)置了cache-control給客戶端一點(diǎn)緩存空間。5.3 本地調(diào)試在項(xiàng)目目錄執(zhí)行wrangler dev默認(rèn)會(huì)在本地開一個(gè)服務(wù)一般是http://localhost:8787。打開瀏覽器訪問http://localhost:8787/dns-query?nameexample.comtypeA如果一切正常你會(huì)看到一個(gè) JSON 響應(yīng)里面包含 DNS 查詢的Status、Answer等字段。5.4 發(fā)布到 Cloudflare執(zhí)行wrangler deploy發(fā)布成功后控制臺(tái)會(huì)輸出一個(gè)*.workers.dev地址。比如https://my-doh-gateway.xxxxxxxx.workers.dev/dns-query這個(gè)地址就是你的 DoH JSON API 入口。5.5 綁定自定義域名推薦如果你的域名已經(jīng)接入 Cloudflare在 Cloudflare 控制臺(tái)進(jìn)入 Worker 詳情頁(yè)找到“設(shè)置”里的“域名和路由”添加一條路由dns.example.com/*然后選擇這個(gè) Worker。等 DNS 生效后就可以通過https://dns.example.com/dns-query?nameexample.comtypeA訪問自己的加密 DNS 網(wǎng)關(guān)。6. 方案二用 Pages Functions 實(shí)現(xiàn) DNS 轉(zhuǎn)發(fā)與靜態(tài)頁(yè)面一體化如果你除了 DNS API還想在同一個(gè)站點(diǎn)下放一個(gè)簡(jiǎn)單的查詢頁(yè)面Pages 是更好的選擇。Pages 項(xiàng)目把靜態(tài)資源放在根目錄把函數(shù)放在functions/目錄文件名就是路由路徑。比如functions/dns-query.js對(duì)應(yīng)的路由就是/dns-query。6.1 項(xiàng)目結(jié)構(gòu)my-pages-doh/ ├── public/ │ └── index.html └── functions/ └── dns-query.jspublic/目錄是靜態(tài)資源根目錄functions/目錄中的 JS 文件會(huì)被當(dāng)作服務(wù)端函數(shù)編譯運(yùn)行。6.2 編寫 DNS 轉(zhuǎn)發(fā)函數(shù)創(chuàng)建functions/dns-query.jsconst UPSTREAM_DOH https://cloudflare-dns.com/dns-query; const VALID_TYPES [ A, AAAA, CNAME, MX, NS, TXT, SOA, SRV, CAA, HTTPS ]; function isValidDomain(name) { return /^(?.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)[a-zA-Z]{2,63}$/.test(name); } export async function onRequestGet(context) { const { request } context; const url new URL(request.url); const name url.searchParams.get(name); const type (url.searchParams.get(type) || A).toUpperCase(); if (!name || !isValidDomain(name)) { return new Response(Invalid name param, { status: 400 }); } if (!VALID_TYPES.includes(type)) { return new Response(Unsupported type: ${type}, { status: 400 }); } const upstreamUrl ${UPSTREAM_DOH}?name${encodeURIComponent(name)}type${type}; try { const upstreamResponse await fetch(upstreamUrl, { headers: { accept: application/dns-json, user-agent: cloudflare-pages-function-doh/1.0, }, }); if (!upstreamResponse.ok) { return new Response(Upstream error: ${upstreamResponse.status}, { status: 502, }); } const payload await upstreamResponse.json(); const body JSON.stringify(payload, null, 2); return new Response(body, { headers: { content-type: application/dns-json; charsetutf-8, cache-control: max-age60, access-control-allow-origin: *, }, }); } catch (error) { return new Response(Upstream request failed: ${error.message}, { status: 502, }); } }Pages Functions 的入口約定是onRequestGet、onRequestPost這樣的命名導(dǎo)出。context對(duì)象里包含了request、env、params等字段和 Worker 的fetch回調(diào)參數(shù)不完全一樣但核心邏輯可以復(fù)用。6.3 可選的靜態(tài)查詢頁(yè)面在public/index.html放一個(gè)最簡(jiǎn)單的頁(yè)面方便在瀏覽器里測(cè)試!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleMy DoH Gateway/title /head body h1My DoH Gateway/h1 p這是一個(gè)示例頁(yè)面。DNS API 入口為 /dns-query。/p /body /html6.4 本地運(yùn)行 Pages在項(xiàng)目根目錄執(zhí)行wrangler pages dev public它會(huì)同時(shí)啟動(dòng)靜態(tài)資源和 Functions。訪問http://localhost:8788/dns-query?nameexample.comtypeA就能看到 JSON 響應(yīng)。6.5 發(fā)布 Pages 項(xiàng)目先構(gòu)建靜態(tài)資源如果只是上面的純靜態(tài)頁(yè)面不需要打包然后發(fā)布wrangler pages deploy public命令執(zhí)行后wrangler 會(huì)提示你創(chuàng)建 Pages 項(xiàng)目并返回一個(gè)*.pages.dev地址。之后在 Cloudflare Pages 控制臺(tái)可以綁定自定義域名。7. 進(jìn)階支持 Wire Format讓系統(tǒng)原生 DoH 也能用JSON 格式方便調(diào)試但一個(gè)關(guān)鍵問題是Windows、Android 等系統(tǒng)自帶的 DoH 客戶端通常不會(huì)發(fā) JSON 請(qǐng)求而是發(fā)標(biāo)準(zhǔn)的二進(jìn)制 DNS 消息。為了讓系統(tǒng)原生 DoH 也能享受自建網(wǎng)關(guān)網(wǎng)關(guān)需要處理application/dns-message。7.1 Wire Format 工作原理系統(tǒng)發(fā)起 DoH GET 請(qǐng)求時(shí)一般會(huì)帶上一個(gè)dns查詢參數(shù)參數(shù)值是 DNS 二進(jìn)制消息的 base64url 編碼。網(wǎng)關(guān)接收到這個(gè)參數(shù)后需要把 base64url 字符串解碼成二進(jìn)制 DNS 消息把二進(jìn)制 DNS 消息作為 bodyPOST 到上游 DoH 服務(wù)拿到上游返回的二進(jìn)制 DNS 響應(yīng)把它原樣返回給客戶端響應(yīng)類型為application/dns-message。7.2 支持 Wire Format 的 Worker 代碼const UPSTREAM_DOH https://cloudflare-dns.com/dns-query; function b64UrlToArrayBuffer(input) { const b64 input.replace(/-/g, ).replace(/_/g, /); const padding b64.length % 4 0 ? : .repeat(4 - (b64.length % 4)); const base64 b64 padding; const binary atob(base64); const bytes new Uint8Array(binary.length); for (let i 0; i binary.length; i) { bytes[i] binary.charCodeAt(i); } return bytes.buffer; } export default { async fetch(request, env, ctx) { const url new URL(request.url); const b64DnsMessage url.searchParams.get(dns); if (!b64DnsMessage) { return new Response(Missing dns parameter, { status: 400 }); } let dnsMessage; try { dnsMessage b64UrlToArrayBuffer(b64DnsMessage); } catch (error) { return new Response(Invalid dns message encoding, { status: 400 }); } try { const upstreamResponse await fetch(UPSTREAM_DOH, { method: POST, headers: { content-type: application/dns-message, accept: application/dns-message, }, body: dnsMessage, }); if (!upstreamResponse.ok) { return new Response(Upstream error: ${upstreamResponse.status}, { status: 502, }); } const responseBuffer await upstreamResponse.arrayBuffer(); return new Response(responseBuffer, { status: 200, headers: { content-type: application/dns-message, cache-control: max-age60, }, }); } catch (error) { return new Response(Upstream request failed: ${error.message}, { status: 502, }); } }, };這段代碼的細(xì)節(jié)在于 base64url 解碼URL 安全的 base64 會(huì)把換成-把/換成_并且可能不帶 padding。這里先補(bǔ)回標(biāo)準(zhǔn)字符再補(bǔ)上 padding最后用atob解碼成二進(jìn)制字節(jié)。7.3 在系統(tǒng)里使用如果你的系統(tǒng)支持自定義 DoH 服務(wù)器 URL可以填https://dns.example.com/dns-query系統(tǒng)會(huì)自動(dòng)使用標(biāo)準(zhǔn) DNS-over-HTTPS 格式請(qǐng)求。注意不同系統(tǒng)對(duì)“自定義 DoH”的支持程度不一樣。有些瀏覽器只允許填公共 DoH 提供商的下拉選項(xiàng)有些則允許輸入模板 URL。如果系統(tǒng)不支持自定義模板也可以通過第三方客戶端工具來(lái)二次轉(zhuǎn)發(fā)。8. 運(yùn)行驗(yàn)證與效果檢查代碼寫完之后不要急著收工。逐個(gè)驗(yàn)證 JSON、wire format、自定義域名和日志。8.1 驗(yàn)證 JSON 格式 API假設(shè) Worker 地址是https://my-doh-gateway.xxxxxxxx.workers.dev執(zhí)行curl -s https://my-doh-gateway.xxxxxxxx.workers.dev/dns-query?nameexample.comtypeA預(yù)期輸出類似{ Status: 0, TC: false, RD: true, RA: true, AD: true, CD: false, Question: [ { name: example.com, type: 1 } ], Answer: [ { name: example.com, type: 1, TTL: 3600, data: 93.184.216.34 } ] }Status: 0表示解析成功。如果Answer字段為空說明該域名沒有對(duì)應(yīng)記錄需要檢查記錄類型是否正確。8.2 驗(yàn)證非法參數(shù)curl -i https://my-doh-gateway.xxxxxxxx.workers.dev/dns-query?namenot-a-domaintypeA預(yù)期返回400 Invalid name param。這一步很關(guān)鍵能確認(rèn)參數(shù)校驗(yàn)邏輯生效。8.3 查看 Worker 日志部署到 Cloudflare 后可以用以下命令查看實(shí)時(shí)日志wrangler tail my-doh-gateway日志里能看到每次請(qǐng)求的 URL、是否命中異常分支、上游響應(yīng)狀態(tài)等。如果用戶訪問報(bào)錯(cuò)先從這里找線索。8.4 驗(yàn)證 Pages 版本Pages 部署完成后同樣執(zhí)行curl -s https://your-project.pages.dev/dns-query?namecloudflare.comtypeAAAA驗(yàn)證返回結(jié)果。如果整個(gè)頁(yè)面是靜態(tài)站點(diǎn) 函數(shù)模式需要同時(shí)確認(rèn)/路徑能打開頁(yè)面/dns-query能返回 API JSON。8.5 失敗時(shí)的第一排查步驟一個(gè)常見錯(cuò)誤是訪問 502。此時(shí)按順序做三步看 URL 參數(shù)是否包含非法字符或空格看 Worker 日志里有沒有上游 DNS 返回錯(cuò)誤碼在本地用同樣 URL 請(qǐng)求 Cloudflare 公共 DNS確認(rèn)上游本身可以訪問。如果上游正常、本地也有權(quán)限那大概率是代碼里的參數(shù)拼接或響應(yīng)解析出了問題。9. 常見問題與排查方法問題現(xiàn)象可能原因排查方式解決方案返回 400 Invalid name域名格式不對(duì)或帶了協(xié)議頭先用瀏覽器訪問確認(rèn)參數(shù)去掉https://只保留主機(jī)名返回 502 Upstream error上游 DoH 服務(wù)暫時(shí)不可用或請(qǐng)求頭不被接受查看 Worker 日志記錄上游返回的狀態(tài)碼切換上游地址比如改用https://dns.google/resolve返回 405 Method Not Allowed客戶端使用了 POST/PUT 等方法確認(rèn) curl 或系統(tǒng)客戶端發(fā)的是 GET代碼中只開放 GET或按實(shí)際需求增加 POST 處理自定義域名訪問不了Worker 路由未生效或 DNS 記錄解析到了其他地方Cloudflare 控制臺(tái)檢查 Worker 路由和 DNS 記錄添加dns.example.com/*路由等待 DNS 生效Pages 函數(shù)的/dns-query返回 404functions/文件名或路徑不對(duì)查看項(xiàng)目結(jié)構(gòu)和文件名確保文件路徑是functions/dns-query.js對(duì)應(yīng)路由/dns-query系統(tǒng)原生 DoH 無(wú)法使用系統(tǒng)需要application/dns-message但你的 Worker 只支持 JSON用 curl 模擬dns參數(shù)請(qǐng)求測(cè)試部署支持 wire format 的版本請(qǐng)求量大了后 Worker 被暫停免費(fèi)版額度耗盡Cloudflare 控制臺(tái)查看用量增加鑒權(quán)、加緩存或考慮升級(jí)付費(fèi)版大多數(shù)問題都出在三處參數(shù)校驗(yàn)、上游地址、響應(yīng)格式。排查時(shí)先用瀏覽器和 curl 走一遍通道路徑再進(jìn)入代碼邏輯。10. 最佳實(shí)踐與工程建議自建 DoH 網(wǎng)關(guān)雖然代碼量不大但從“能跑”到“能穩(wěn)定服務(wù)”中間還差很多工程細(xì)節(jié)。10.1 加鑒權(quán)避免被陌生人當(dāng)公共 DNS如果 Worker 地址公開且沒有任何鑒權(quán)任何人都能拿它當(dāng)公共 DoH 用免費(fèi)額度很快會(huì)被耗盡。最輕量的做法是加一個(gè)請(qǐng)求頭 Tokenconst AUTH_TOKEN your-secret-token; export default { async fetch(request, env, ctx) { const token request.headers.get(x-auth-token); if (token ! AUTH_TOKEN) { return new Response(Unauthorized, { status: 401 }); } // 繼續(xù)處理請(qǐng)求 } };Token 不要放在 URL 參數(shù)里避免出現(xiàn)在訪問日志中。更規(guī)范的做法是使用 Cloudflare 的 Access 服務(wù)做身份認(rèn)證但那種方案更適合內(nèi)部系統(tǒng)。10.2 合理使用緩存DoH 請(qǐng)求天然適合做緩存。同一個(gè)域名可能會(huì)在短時(shí)間內(nèi)被多次查詢可以用 Cloudflare KV 或 Cache API 緩存解析結(jié)果減少上游請(qǐng)求。需要注意DNS 解析結(jié)果有 TTL緩存時(shí)間不宜超過上游返回的 TTL否則會(huì)拿到過期的解析結(jié)果。10.3 日志與隱私策略自建網(wǎng)關(guān)意味著你會(huì)看到所有通過它查詢的域名。對(duì)個(gè)人用戶來(lái)說這是“掌握自己的數(shù)據(jù)”如果開放給別人使用就要承擔(dān)隱私責(zé)任。建議只記錄統(tǒng)計(jì)信息比如查詢數(shù)量和類型分布不要完整記錄用戶查詢的域名。如果公司內(nèi)部使用要先明確合規(guī)要求。10.4 上游故障切換不要只依賴一個(gè)上游。可以在 Worker 里配置多個(gè)上游地址當(dāng)主上游返回 5xx 或超時(shí)時(shí)自動(dòng)切到備用上游。簡(jiǎn)單的做法是const UPSTREAM_LIST [ https://cloudflare-dns.com/dns-query, https://dns.google/resolve ];循環(huán)嘗試列表中的上游成功就返回失敗就換下一個(gè)。10.5 控制請(qǐng)求速率即使加了 Token也要在邏輯上限制單個(gè) IP 的調(diào)用頻率。Cloudflare 免費(fèi)版對(duì)單 Worker 的請(qǐng)求量有額度限制你可以在代碼中用 KV 做簡(jiǎn)單的滑動(dòng)窗口計(jì)數(shù)。注意 KV 的寫入是最終一致的不適合做高并發(fā)精確限流。更嚴(yán)格的限流方案需要結(jié)合 Cloudflare WAF Rate Limiting。10.6 面向生產(chǎn)環(huán)境域名、證書與穩(wěn)定性建議不要長(zhǎng)期依賴*.workers.dev或*.pages.dev作為生產(chǎn)入口。雖然它們免費(fèi)但對(duì)外提供服務(wù)時(shí)綁定自己的域名能統(tǒng)一證書策略和訪問控制也能避免默認(rèn)域名被人猜測(cè)后濫用。域名接入 Cloudflare 后證書自動(dòng)由 Cloudflare 管理不需要自己處理 HTTPS 配置。11. 總結(jié)與后續(xù)學(xué)習(xí)方向到這里你已經(jīng)用 Cloudflare Workers 和 Pages 分別實(shí)現(xiàn)了加密 DNS 網(wǎng)關(guān)。方案一適合快速跑通 API方案二適合靜態(tài)站點(diǎn)和 API 一起部署進(jìn)階版本則可以讓系統(tǒng)原生 DoH 客戶端直接接入?;仡^看幾個(gè)關(guān)鍵收獲Cloudflare Pages 并不只是“靜態(tài)托管平臺(tái)”它和 Workers 共用一套運(yùn)行時(shí)DoH 網(wǎng)關(guān)的核心是參數(shù)校驗(yàn)、上游轉(zhuǎn)發(fā)和響應(yīng)格式轉(zhuǎn)換自建網(wǎng)關(guān)真正帶來(lái)的價(jià)值是“自定義入口 策略控制層”。下一步可以繼續(xù)深入的方向有三個(gè)第一把 DNS 解析結(jié)果寫到 Cloudflare KV 里做持久化緩存第二在 Worker 里加入域名黑名單/白名單邏輯做成一個(gè)簡(jiǎn)短的家庭 DNS 過濾規(guī)則第三加上一個(gè)可視化管理頁(yè)面讓你在瀏覽器里查看查詢統(tǒng)計(jì)和配置上游地址。最后提醒一點(diǎn)把網(wǎng)關(guān)開放給外部用戶時(shí)要先想清楚鑒權(quán)、日志和額度問題。先用本地wrangler dev把完整邏輯跑通再部署到線上遇到問題優(yōu)先查看wrangler tail的日志輸出。這套思路適合輕量級(jí)自用和個(gè)人項(xiàng)目如果要用到企業(yè)生產(chǎn)環(huán)境還需要結(jié)合更完整的監(jiān)控、限流和權(quán)限體系。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91丨九色丨大屁股| 日日狠狠久久偷偷色综合免费| 久久激情亚洲精品无码?V| 日韩99神马视频播放片在线播放| 中文字幕一区二区三区人妻不卡 | 欧美热图99| 熟女人妻一区二区三区| 91久久国产精品| 亚洲操操操| 熟女久久久| 欧美顶级黄色大片免费| 青草成人免费视频一COm| 女优视频第10页| 国产又大又粗又长视频| 狠狠色婷婷777| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 人妻少妇av在线观看| 成人小说视频在线精品欧美| 97国产精选| 全免费a敌肛交毛片免费| 中文字幕免费看| 亚洲中文国际强奸字幕| 男人天堂2030| 91 手机在线播放 绯色| 国产懂色精品国产av| 最新9久久久9免费视频| 国内三级自拍小视频在线观看| 日韩中文9| 91小视频| 精品人妻一区二区三区日产| 青青草成人视频在线观看二区| 国产午夜精品理论片一二三区区| 九九英色视频| 日韩激情啪啪啪| 国产性爱欧美性爱在线| 人人天天欧洲| .精品人妻一区二区三| 91国产美女丝袜足交精品视频| 内射小黄片| 久偷拍欧美日韩三区| 粉嫩粉嫩一区性色AV片| AV女优男人的天堂| 亚洲精品天天影视综合网 | 看免费的黄片| 少妇久久久久| 中文字幕无码不卡啪啪| 欧美亚洲综合色| 试看60秒 爽| 久久久久七视频| 日韩,欧美,中文在线| 欧美姓爱综合网| 欧美中文字幕男人天堂久久精品| 曰韩精品视频一区二区| 91少妇人妻| 中文字日本乱码| 欧美性爱视频免费一区一A | 一本一道vs波多野结衣| 老司机香蕉久久久久| 老熟女熟妇| 性爱乱伦一区| 一级片视频啪啪| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 999综合色| 色综合99| 九九黄色网| 国产精品福利视频播放| 日韩97在线| 国产久久日| 天天欧美欧美亚洲网| 在线A日本| 极品极品色影院| 欧美99999| 午夜操操操| 熟妇亚洲一区二区三区| www.夜夜| 亚洲男人天堂2019| 日本123区操B视频| 中文操嬖片。| 久久丁香五月天| 国产AV激情无码久久无码| 男人的天堂网页| 毛片麻豆91糖心精品毛情片| 蜜屁Av| 青青国产精品在线| 五月天婷婷色色| 日本亚洲熟女视频| 欧美日韩国产高清在线一二三区| yw尤物av无码点击进入麻豆| 欧美日韩亚洲天堂| 夜夜爽夜夜操| 欧美丝袜中文字幕07在线| 五月天欧美色图| 自拍亚洲综合| 久久男人的天堂| 无码99| 91综合熟女| 爱丝福利| 欧美久久婷婷| 欧美 日韩 国产传媒| 日韩欧美女求操每天更新| 91N欧美| 无码WWW免费视频网站| 亚洲一区日韩精品| 18啪啪手机免费性爱| av网站免费看| 人人操人人色网| 丰满少妇乱子伦精品无| 影音先锋日本乱伦| 午夜男女爽爽大片免费观看| 欧美色www亚洲国产阿娇要播| 久久9久久| 东京男人天堂| 天久久久噜噜噜久久国产精品爽爽| 欧美后入式| 精品一区二区2| 欧美综合综合| 亚洲在线网站| 久草视频观看视频在线| A片 AV一级在线播放观看免费| 亚洲97久久精品亚洲| 天天看精品动漫视频一区| 蜜臀av网址| 天天干天天舔| 亚洲高潮少妇| 丁香婷婷五月| 美女的肌被草喷水视频| 久草电影网| 午夜福利国产欧美日韩夜夜| 青青操97| 強姦亂倫a| 久久鲁夜| a v网站在线播放| 夜夜骑操视频| 欧美综合区| 亚洲一区中文精品| 日日噜噜夜夜久久亚洲一区二区 | 中文字幕在线免费观看 | 欧美91视频| 曰本91情色| 91丨豆花丨熟女| 亚洲资源网| 亚洲AV无线| 9久9久9久9久视频网站| 99激情| 丰满人妻一区二区三区免费| 欧美情色贴图| 国产精品农村妇女精品| 熟妇视频一区二区三区在线观看| ,成人免费啪啪视频| 久久蜜色情在线视频xxx免费观看| 天天爽夜夜爽夜夜爽精| 狠狠爱夜夜干| 吻戏激情性巴克| 日韩精品碰碰| 草草草视频在线免费看| 狠狠97| 99国产天美| 日本五十路熟女一区二区| 加勒比综合在线| 97 亚洲 日韩 欧美 在线| 黄色人人| 色欲天天婬色婬香WWW夜色| 欧洲亚洲人人爽爽视频| 久操 高清| 香蕉久久国产AV一区二区| 少妇综合网| 亚洲drav色图| 成人AV素股で擦久久| 岛国大片在线观看网站入口| 国产网站在线播放| 日韩极品无码B| 四虎av在线| 狠色婷婷久久一区二区三区_| 黑操B| 欧美极品性爱天天射| 欧美最婬乱婬爆婬牲视频| 亚洲人精| 久操综合在线| 久草综合京东| 资源在线观一 二| 性爱Av免费| 校园春色五月天| 另类老少妇| 青青草色情网站视频| 婷婷色婷婷| 日韩久久.一级黄色片| 免费AV中文网在线观看| 国内毛片四区| 自拍第一页| 美女黑人91神马| 你操综合| 久久黄黄| 色播五月丁香| 蜜桃臀AV在线| 青青草色插素人| 操我啊啊啊啊啊| 99精品无码| 天天躁日日躁XXXXYY| 性久久久| 国产隔壁老王影院在线| 欧美性爱精品七区| 先锋色眉乱伦资源| www.av在线视频| 91免费看一区二区三区 | 丁香五月偷拍| 亚洲激情AV| 国产日韩欧美三级片| 在线综合色| 日韩欧美字幕亚洲一区二区| 婷婷五月天激情网| 亚洲日韩精品在线播放| 日产狠狠干| AA丁香综合激情| 立川理惠加勒比无码| 午夜国产成人福利视频| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 激情文学亚洲| 91热色| 欧美综合色图片| 久久久久久无码人妻中文字幕| 亚洲色图 图片| 蜜桃午夜视频一区二区| 一区二区高清视频| 中文字幕精品一区欧美| 黄页网站免费高清在线观看| 8050无码八戒| 色穴精品| 欧美色图人妻| 老女人综合| 欧美日韩在线视频网站| 日韩乱中文| 欧美性爱在线无码| 图色综合网| 使劲用力艹少妇视频一区二区| 欧美第二页午夜| 99视频自拍区| 2023天天操夜夜操| 久草视频在线视频在线视频在线观看| 色噜噜狠狠色综合日日| 亚洲成人一二三区| 色哟哟av| 国内毛片国产欧美拍| 亚洲 日本 国产 综合| 亚洲日韩精品一区视频在线| 色99色| 观看免费区二区三区二| 我要色综合网站| 国产黄色剧情影片麻豆免费播放| 超碰在线观看av不卡| 久久精彩免费视频| 伊人久久亚洲色欲综合网站 | 四虎视频在线观看| 日韩人妻一区二区精品| 午夜成人福利影视| 国产熟女精品一区二区| 精品一区二区成人动漫| 91色鬼| 91在线国产后入风骚翘臀美女素人| www男人天堂| 最近2018中文字幕在线高清第一页 | 99自拍视频在线观看| 大香蕉在线视频15| 97在线观看免费| 亚洲无码超碰免费| 欧美日韩m| 欧美图片校园春色| 乱伦系列一区二区| 插入综合网| 国产男人又猛又粗又爽| 精品久久久久黄少妇| 五月婷婷五月天| 青青草在线视频人人想人人上| 国产高清1234区| 亚洲激情 欧美色图| 欧美精品不卡一二三四在线91| 国内偷拍精品一区二区| 加勒比大香蕉视频在线| 91精品国产91熟女| 伊人女女资源在线观看| 日韩中文9| 福利社区午夜一区二区| 日韩内射视频| 日本淫乱女一区二区三区视频| 亚洲码专区| 超碰97最新人妻| 久久这里只精品免费福利| 九九伊人网| 欧美性五月| 日本天天操| 欧美日韩大陆黑人少妇99| 98久久| 欧美在线干| 安微少妇操BBB| caoni国产亚洲av| 久久久久久久久国产| 三级特黄60分钟播放| 国产大片精久久久久久| 亚洲图片激情综合另类| 国产免费久久精品99re韩国| 免费一级黄色录像影片| 超碰日韩美妻| 色色婷婷丁香| 天堂性色| 天天香香欲综合| 自怕偷自怕亚洲精品| 久久有码| 亚洲第一黄色av网站 | 中 文字幕一区二区三四 五 区日 日 骚 | 强乱老妇中文字幕| 偷拍亚洲高清图片| 人人干人人搞人人摸| 日韩丨制服丨中文|在线| 粉嫩不卡一区二区性爱 | 2020国产精品| 少妇久久| 黑人精品久久97| 日韩黄色一区二区三区| 亚洲 欧美 第一页| 欧美亚洲20p| 日韩人妻免费精品| 九九九九免费| 九一精品牛牛一区二区| 国产精品久久久鸭无码的功能| 蜜臀99久久精品久久久久久| 被体育老师抱着c到高潮| 久久亚洲AV无码专区国产精品| 九一综合网| 欧美精品自慰系列寂寞少妇 | 男女猛烈无遮掩视频免费软件| 91在线美女| 国产一级137片内射麻豆| 久久久少妇诱惑精品视频| 大香蕉人妻| 测评在线观看AV| #NAME?| 色婷婷六月| 日本熟女不卡视频| 骚货操死你| 麻豆久久久久久久久丝袜| 女人 A一级| 男人的天堂2019| 91嫩草欧美| 色综合色欲色综合色综合色综合| 国产自制av蜜乳| 国产AV线| 丰满搜索结果 -第18页- 久久高清无码| 国产专区第一页| 操人妻视频| 色香伊人| 99天天超碰| 五月天色图| 久久久久久人妻一区精品色欧美| 亚洲精品久久久久毛片A片拉屎| 美女AV一区二区| 日日日日日| 亚洲高清无码在线桃色| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 大象AV在线| 999热日韩精品| 久久伊人青青草| 少妇高潮99p| 婷婷激情五月综合| 欧美系列在线一区二区| 无遮挡一级毛片视频免费的| 超碰午夜| 99久久99久久免费精品蜜臀| 精产品久久| 懂色影视久久| 91劲爆| 91老熟女老女人国产老太 | 成人av在线播放| 97在线观| 97亚洲中文| 久久大香蕉97| 深喉吞精| 亚洲激情视频| 蜜臀AV午夜精品久| 精品午夜福利| 欧美精品宗合| 国产精品久久久啊| 免费自拍三级综合| 人人操肉肉| 国产操伦| 国产69精品久久久久99尤物| 国产精品免费美女视频| 亚洲欧洲日韩国产自在线| 人人操人人插人www| 亚洲成人在线高清| 波多野42部无码喷潮在线观看 | 91黑丝露脚| 狠狠狠狠狠狠| 人人澡人人爽人人精品| 97国伦国色| 欧美操逼视频二区| 婷婷五月天无码| 97超碰超欧美。| 青青青草伊人精品| 另类小说欧美激情校园春色| 97超碰日韩| 亚洲乱码精品一区二区| 免费啪啪av| 国产日韩欧美亚洲精品95| 亚欧无码在线| 67194国产| 欧亚综合一卡二卡中文字幕| 色老汉色| 97资源视频| 精品国产一区二区三区四区在线看| 九九精品99| 操B在线观看| 大香蕉人妻| 800zy一区二区| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 天天干电影| 免费αV在线视频| 亚洲av无线观看| 激情深爱五月天| 欧美最婬乱婬爆婬性视频 | 变态另类专区| 亚洲色电影在线| 亚洲人成在线放东京热| 91午夜无码| 一区二区娱乐网站| 日韩丝袜人妻AV| 五月久久HDAV| 青青草色情网站视频| 97视频在线免费| 内射夫妻三片| 亚洲aV无码成人在线观看| 玖玖人人爱| 干B| 性色综合网| 久久久久亚洲AV无码专区少妇| AV和黑人在线播放| 超碰国产在线| 一区二区国产视频在线观看| 欧美 亚洲 在线| 中国国产精品一区视频| 亚洲精品 欧美精品| 无码操逼网| 6080yy午夜理论三级一区二区三区无码| 国产性刺激| 久操免费电影| 日韩色| 欧美天堂日韩三级国产传媒| 天天久久久久久| 亚洲熟女精品| 麻豆国产av网| 亚洲色交| 偷窥自拍亚洲天堂网爆| wuyechaopeng| 免费αⅴ在线观看| 蜜桃色院一区久久| 五月天婷婷在线看| 91xingse| 色悠久| 九九在线视频| 欧美操逼录像国产黄色国产| a天堂视频| 97色色,97综合| 国产操逼网站亚洲一级黄色| 天天拍天天操| 强乱老妇中文字幕| 久久曰曰| 快灬快灬 一下爽蜜桃在线观看| 人妻 中文 日韩| 五月天综合网| 无码高清操逼网址| 亚洲码和欧洲精品激情系列| w w w.久久精品| 久久天天摸| 久久春色| 啊啊啊啊啊在线观看网址 | 黄片qw| 中文字幕视频一区视频二区| 久艹视频在线| www久| 黄色十八禁| 大香蕉视频一二三区| 国产精品久久久久久久电影渣男| 五十路六十路七十路熟婆| 国产欧美美女免费观看视频| 青青在线视频日韩欧美| 91狠狠综合久久久久久| 中国AV美女| 91欧美长吊| 天天做日日做| 久久精品无码不卡| 美女超碰978| 欧美激情久操网| 欧美久久久15P| 亚洲日本激情| 久久后入制服| 日韩精品.久久精品.AV女优.天美传媒| 青青久久艹| 久久国产99精品72福利| 黄片国产精品一区二区| 免费草草草草草视频| 最新亚洲人成网站在线影院| 色噜噜人妻丝袜a∨先锋影| 欧美亚洲情色| 800zy一区二区| 草莓精品视频在线免费观看| 国产精品久久久久久久久久二区三区| 日本精品高清一二区一本到| 久久人妻熟女一区二区| 第二页中文字幕| 日本不卡高清视频| 蜜臀网 一区| 91新在线欧美| 人人插人人搞人人操| 亚洲欧洲激情卡通另类文学四射小说网站| 亚洲男人的天堂V| 国产性爱乱伦AV| 色香欲影| 韩国嫰模上门援交视频| 亚州操操穴网| 日韩人妻一区二区精品| 人妻偷拍一区二区三区| 亚洲久久天堂| 欧美 日韩 婷婷 五月| 99色色网| JIZZJIZZ国产精品喷水| 日韩有码 一区二区三区| 亚洲精品国产熟女久久久| 91亚·色| av中文在线| 少妇无码av专区线| 欧美色999| 日韩色图 一区二区| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 久久一二三四不卡| 欧日韩不卡视.频| japan日本高清乱xxxx| 蜜臀一区二区三区在线 | 综合网色| 蜜乳AV一区二区三区四| 青草草免费网站av| 秋霞怕怕片| 风韵犹存大大大大香蕉| 嗯~啊~轻一点 视频| 99国内熟女露脸视频| 中文字幕少妇色| 野狼激情网| 久久草大香蕉| 国内精品久久久久影院亚洲| 亚洲中文国际强奸字幕| 99国产在线 精品 视频| 搡老女人911熟妇老熟女| 97亚洲色图| 日本道人妻久久久在线不卡色视频| 啊啊啊啊二区好大| 二对二中文字幕。| 九九热超碰97亚洲最新香蕉| 中文AV制服乱伦| 色69大色97香蕉| julia在线观看久久| 丁香五月激情综合| 久久综合婷婷| 国产这里只有精品| 欧美精品第3页| 亚洲成人色情五月天丁香花| 欧美性色综合网| juliaann精品熟女一区| 日韩精品人妻中文字幕有码午| 超碰资源亚洲97| 亚洲青青青视频在线| 麻豆 欧美 日韩| 日韩97视频!在线| 国产天天骚| 97干色天堂| 欧美后入视频| 亚洲高清男人天堂| 青青操日韩| 欧美色图综合网| 亚洲福利影院一区久久| 四虎国产精品永久在线囯在线| 亚洲一区二区三区在线激情| 婷婷五月色| 色五月婷婷麻豆在| 97这里都是精品| 欧美夜色| 久久大香蕉97| 国产激情视频一区区三区| 国产偷拍网站| 少妇无码av专区线| 亚州综合AⅤ| 四虎视频在线观看| 亚洲91网。| 福利视频网站| 日韩免费a级毛片无码a∨| 日韩免费在线观看不卡| 97精品熟女少妇一区| 日韩去日本高清在| 艳美熟妇先锋一二三区| 91高跟美女在线播放| 国产女主播视频在线观看| 久久一区二区蜜桃| 91亚洲色人| 亚欧高清在线| 天天弄欧美| 色综合1991| 日韩亚洲欧美中文字幕| av午夜影院在线播放| 五月天大香蕉| 国产精品。| 欧洲视频在线| 色官网色综合| 国产精品九9| 女人18精品一区二区三区| 97亚洲欧美| 日韩黄色一区二区三区| 佐山爱中文字幕| 91国产丝袜白虎| 韩国一级婬片A片无码天美| 六月激情网| 国产精品午夜福利视频| 立川理惠被中出无码| 日韩精品视频在线观看一卡二卡| 国产精品久久久久绯色| 91热| 欧美久久人人网| 中文字幕精品丝袜| 久久中文字幕在线观看| 久久99午夜精品一区人妻| 揉揉日日日日| 女人喷水视频在线观看| 人人超碰在线观看黄| 亚洲黑人在线| 狠狠色色| 精品在线78| 顶级丝袜熟女一区二区三区| 久久精品一区| 又粗又长又大国产不卡| 五月婷婷激情| 色老大| www.色婷婷色综合| 五月天欧美色图| 欧美极品性爱天天射| 亚洲官网在线| 国产操逼网站亚洲一级黄色| 婷婷五月成人| 亚洲第一视频 欧美风情 日韩| 草草网站影院白丝内射| 超碰97最新人妻| 74成人在线| 熟女欧美日韩综合婷婷| 国产精品分类在线观看| 免费看污网站| 色综合V| 330Dv国产女人终合视频极品人与兽 | 中文字幕视频在线观看| 婷婷99狠狠| 性91| 超碰公开久久网| 加勒比综合网| 亚洲色图20p| 成人一道本免费视频| 国产60区。| 人人操人人操人人人操| 久草在| 午夜影美女日鸡鸡天天视频国产| 日本顶级天天操狠狠操夜夜操中文字幕| 国产福利电影| 激情四射熟女丝袜| 精品人人插人人操| 亚洲无码日韩电影| 蜜桃久久久久久| 肏逼福利网站| 亚洲和欧美裸体美女双飞视频| 亚洲一区二区三区中文字幕| 九99久久| 无码免费一区二区三区啪啪| 91啦人妻| 色香欲天天天天综合色| www.久久久久| 秋霞网无码| 老女人老91妇女老热女| 久久性爱城| 9久精品| 福利一级版子| 丁香五月影院| 欧美人人操人人插| 97视频在线免费| 亚洲AV无码天美传媒一区| 亚洲AV成人无码一二三久久| 99re在线视频| 九色 人妻 大香蕉| 黄片色区软件| 亚洲丝袜诱惑| 久久草视频污视频| 屌逼麻豆| 精品偷拍13p欧美dodk视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 视频二区美腿丝袜制服人妻欧美| 一级性爱视频免费观看| 婷婷精品国产欧美精品亚洲人人爽| 亚洲男人的天堂亚洲| 先锋激情∨在线视频播放| 精品少妇一区二区| 少妇69中文| 五月婷婷六月丁香| 人人操人人插人www| 一级毛片电影免费看| 欧美性爱另类综合| 欧美性性性| 久草热制服丝袜在线观看| 丁香五月偷拍| 一起草日韩| 国产h小视频在线观看免费| 女上位精品在线| 爱干爱射网啊啊啊| 26uuu欧美| 中文字幕aⅴ在线视频| 亚洲麻豆av一区二区| 欧美综合综合| 超碰久久网| 亚洲射综合网| 国产熟女少妇一区| 一区二区三区机械有限公司| 国产日韩在线播放av| 加勒比综合| 97伊人超碰| 丝袜色综合| 亚洲青色欧美| 韩国三级三级BD在线| 美女尤物福利视频| www.久久爱| 欧美在线观看综合国产| 天天操夜夜嗨| 亚洲激情综合另类男同| 国语对白露脸XXXXXX | 亚欧性爱ab| 国产成人精品无码久久| 人人操人人摸avav| 麻豆三极片| 国产精品96久久久久久| 狠狠躁伊人中文字幕| 精品制服美女中文一区二区三区| 校园春色宗合网| 亚洲欧洲第二视频在线观看色图| 69精品人人人人| 男人干美女| 99抽插| 伊人青青草久久| 国产五码丝袜屁眼| 97欧美久久久久久久| 久久久久久午夜男人的天堂| 熟女突然公开看18禁影片| 狠狠色狠狠色狠狠五月| 无码精品啪啪啪一区二区三区三州| 中文啪啪视频| 亚洲欧美一区二区三区在钱蜜桃| 天天干天天插| 精品夜夜澡人妻无码| 夜夜中出国产| 超碰 另类 欧美 | 色综合超碰超| 夜夜爽夜夜摸夜夜操免费视频| 蜜臀aV午夜一区二区三区| 久九9精品| 高清无码学生妹高潮| 久久久啊啊啊| 国产成人亚洲精品无| a片久久久久久久久久久久| 亚洲无码精品AV久久久| 91av一区二区在线观看| 人人人人插| 色99在线| 久视频在线观看| 亚码人妻| 夫妻日逼| 大香蕉免费3| 欧美日韩操逼动图| 丁香激情网| 伊人国产av| Julia Annxxxxx| 日本 情色 1区| 欧美成年人性爱视频免费观看| 偷拍亚洲熟女视频播放| 色牛牛AV| 国内黄色精品| 久久久久久免费电影| 日本不卡五区| 伊人久久综合精品欧美| 玖玖在线视频| 丰满精品人妻少妇久久字幕| 99热这里只有精品1| 97操| 亚洲人妻中文高清| 久超碰在| 亚洲色图第一页| 最新日本中文字幕| 日本精品成人无码| 91伊人大香蕉| 亚洲视频精选| 精品视频免费在线一区| 青青草视频这里只有精品| 99黄页网站| 久久中出| 探花精品视频| 亚洲美女 晚间男人天堂| 国产成人五月天丁香花| 欧美日日操| 亚洲天堂性爱| 丝袜美腿操av| 亚洲 日韩 丝袜 熟女 变态| 久久大香蕉手机高清视频| 超碰社区97| 老司机天天操| 亚洲熟妇乱女区二区三区| 97在线欧| 国产成人一级av88| 日本午夜福利视频| 91岛国动作片| 国产成人自拍视频在线| 秋霞一区二区三区四区五区六区七区| 高清孕妇孕交 交| 日韩成人大片一区二区| 欧美性生活内射| 久久超碰国产一区二区三区| 婷婷久草一区二区三区| 欧美色图小说综合| 免费在线黄片视频| 丁香婷婷激情五月天无毒不卡 | 丁香五月激情五月| 91天天综合在线| 草莓精品视频| 91n免费处女| 国产黄色影片在线观看| 操香逼| 国产精品人妻无码久久久老鸭窝| 久久草大香蕉| 国产又粗又长又大的视频| 日韩性爱小视频在线观看 | 国产高清成人传媒影视| 一二视频神马久久传媒| 日本丝袜人妻内射| 97精品97久久| 中文操嬖片。| 免看60秒涩涩视频| 国产成人在线观看综合| 国产熟女自拍| 天天躁日日躁AAA片李宗瑞| 久操视频免费观看| 亚洲国产一级精品毛一级精品看免费视频 | 青娱乐手机日韩在线视频| 久久成人国产精品| 久久99999| 日韩无码a片| 久久精品视| 日韩av不卡在线观看| nuu12国产麻豆精品| www成人啪啪18秘 免费| 玖玖无码超碰| 91熟女熟妇视频网站| 亚洲国产精品无码AV久久| 99re6国产精品99re在线| 亚洲视频中文一区| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 久久久久久久久久va| 操逼逼中文字幕| 久久久久久久久国产| 操B在线观看| 色哟哟av| 久久亚洲不卡| 日韩精彩视频| 五月丁香综合啪啪| 国产剧情在线| 国产中文福利| 国产日本久久免费精品| 欧美性夜| 青青久操| 国产精品视频精品一二| 精品久| 日韩精品99久久久久久中文字幕| 乱论91| 伊人麻豆传媒| 欧美性爱一区二区三区四区| 久久午夜色播影院免费高清| 超碰碰激情97+久| 男女激情黄色网址| 亚洲人综合19| 330Dv国产女人终合视频极品人与兽| 国模不卡| 亚洲丝袜综合| 使劲用力艹少妇视频一区二区| 精品区国产区一区二区三区| 国产99999| 少妇色综合| 天天影视网综合少妇| 伊人久久大香线蕉无码| 嗯嗯啊啊操我| 久草线上视频免费看| 亚洲。日韩。欧美| 全球成人中文在线| 9国产超碰| 99久在线精品99re8蜜桃| 久久少妇视频| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 都市激情人妻一区二区青青操视频| 精品国产肉丝袜在线拍国语| 丝袜人妻av一区二区| 2018天天干在线视频| 传媒在线观看一区二区三区| 超碰天天操| 少妇蜜汁| 97在线视频观看| 亚洲AV无码AV吞精久久久久| 欧洲在线性爱视频| 国语精品对白| 伊人在线大香蕉视频久久| 97中文字幕色| 美女超碰978| 91超级碰碰碰| 91强热人妻| 国产成人99久久亚洲综合| 久久少妇| 欲综合网| 天天干1区2区在线| 青青草啪啪网| 日韩一999精品| 91视频国品一二三区| 色爱三区| 人妻人人做人人澡人人爽欧美一区| A级国产欧美激情在线| 凹凸精品熟女在线观看| 清纯唯美亚洲另类| 亚洲91射| 后入式999| 国产成人精品一区| 中文字幕在线2| 99re99视频在线免费观看| 91欧美长吊| 强上我不卡卡| 九九九综合精品| 一区黄二区黄| 日韩精品三区四区| 天天色悠悠激情| 亚州精人品大香蕉| 人人乐大香蕉| 亚洲精品 欧美精品| 偷拍超碰| 99色日| 神马午夜久久久| 一区麻豆 高清中文字幕| 黑丝91视频| 男女91| 久久国99999| 热久久99999| 欧美在线视频播放| 天天草AV| 97日韩欧美亚洲| 97国产|免费| 麻豆91熟妇人妻中文字幕茄子| 欧美色干| 久久狠狠色噜噜狠狠狠狠97| 久久久久久网址| 亚洲成人黄色在线观看| 51久久夜色精品国产麻豆| 色天使亚洲综合在线观看| 日韩美女操b| 精品性爱无码在线播放| 男人天堂2019亚洲| 亚洲熟妇丝袜在线观看| 97日视频| 天天综合站| 久久97精品久久久久久久不卡| 91夜色| 欧美一级特黄淫片在线观看| 天天视频综合在线观看视频| 巨爆乳肉感一区二区三区竹菊影视| 久久思思热| 校园春色综合色| 国产精品国产| 欧美天天射| 国产极品精品美女视频| 久久精品国产72国产精品福利| 欧美激情综合| 白丝AV网站| 色97国产69香蕉| 色欧美亚洲| 日韩人妻制服丝袜av| 伊人婷婷五月天| 婷婷色香| 在线洲亚线| 强奸乱伦 亚洲一区| 日本色色色视频| 亚洲色图大香| 天天影视射综合网| 国产一区二区精品久久久不卡蜜臀| 97超碰资源网| 欧美三四五区| 精品久久无码午夜福利| 日韩av在线免费网站| 丝袜美腿诱惑亚洲欧美视频在线观看| 婷婷色香伊人| 国产精品视频麻豆入口| 99热精品在线观看| 中文字幕久久亚州无码| 上特色A在线| 国产美女mm131爽爽爽爽| 人妻夜夜爽天天爽麻豆三区网站| 午夜福利在线合集| 97爱爱爱| 国产AV久久久蜜爱影集| 欧美美女在线高潮999| 国产97av| 亚洲无码?第一页| 97这里都是精品| 992视频一区| 逼逼逼逼操操操操操操操操操午夜剧场 | 五月丁香啪啪啪| 超碰伊人在线| 国产多人在线观看视频| 夜色五月天| 大白逼三四级| 岛国大片在线观看网站入口| 淫色网综合| 久久久四区| 丁香色色网| 日本一级不卡一二区| 三级特黄60分钟播放| 少妇免费视频| 啊啊啊免费| 日本99视频| 久肏视频字幕| 国产树林里野战在线看| 先锋音影AV| 天天干天天燥| 美女裸体麻豆天美蜜桃91| 国产色产精品在线观看| 日韩AV片| 欧美姓爱综合网| 狠狠爱综合| 亚洲精品乱码久久久久久蜜桃麻豆| 一级黄色性爱A级片| 超碰97最新人妻| 免费av高清无码| yazhousetuoumei| 亚洲熟伦熟妇AV无码春色| 久久a久久| 日韩无码一级黄色av片| 91女网站| 亚洲 无码 偷拍| 狠肏骚人妻| 999精品国产高清一区二区| 开心六月色| 亚洲精品免费中文字幕| 啊啊啊97视频| 国产99精品一区二区三区免费| 在线观看A啊啊啊| 久久这里是精品| 亚洲综合射| 成人三级片无码| 人妻熟女一区二区三区视频| 九九热精品在线| 欧美大片91| 久久精品视频28| 日韩精品 视频一区二区| 蜜臀久久精品久久久久视频| 日本精品不卡一二三区| av影院十区| www.97在线| 欧美一区二区福利在线| 精品一二三区女同| 韩国一级婬片A片AAAAA| 97chaopengongkai| 亚洲熟女乱色| 岛国大片在线观看网站入口| 日日嗷| 久操B网| av天堂精品久久| 桑老女人九区| 成人AV素股で擦久久| 天天草夜夜草高潮片| 色偷偷综合91久久噜噜| 又大又白奶子| 亚洲无无码αⅴ每日更新| 国产91丝袜在线播放蜜月| 青青草中文-久久青草精品一区二区三| 免费精品无码一级毛片牛牛影视| 亚洲 欧美 小说| 婷婷亚洲五月***久久| 亚洲情色综合| 久久久禁| 大香樵伊人网| 国产高清免费不卡av| 综合少妇网| 麻豆福利视频导航| 国模精品娜娜一二三区| 日韩熟女三十乱伦| 欧美偷偷网| 精品久久久久瑟瑟| 日韩不卡a级视频专区| 欧美性xxxxx狂欢| 熟女91网| 亚洲AV资源| 亚洲人妻av| 精品中文字幕一区二区| 精品国产乱码久久久| 综合天天网| 久久天天性久久伊人| 亚洲国产高清福利视频| 中国熟女老妇仑乱一区二区三区| 国产精品在线一区二区| 久久精彩视频9| 曰韩无码777| 日本无码1| 午夜福利国产欧美日韩夜夜| 亚洲性刺激| 91欧美综合在线| 欧洲Au麻豆| 天天综合色| 人人摸人人叼| 91精品久久久久五月天精品| 久久人| 风间由美日韩欧美久久| 欧美 日韩 婷婷 五月| 97中文天堂| 91在线丝袜| 5月婷婷6月六月丁香| 精品人妻一区二区三区日产乱码| 国产亚州日韩欧美看片| 国产兽交视频在线播放| 欧美日韩亚洲少妇寂寞影院正在播放| 神马午夜久久久| 91小视频| 9长久久精品| 天美国产精品| 婷婷丁香五月综合| 久久国产精品m码| 农村妇女一级二级三级视频| 午夜精品五区| 亚洲好看强奸乱伦| 国产无马在线| 大学生美女口爆| 亚洲图片91| 日韩日韩日韩-国产乱码精品一区二区| 日韩精品人妻中文字有码在线| 欧美香蕉视xxx| 天天欧美| juliaann精品熟女一区| 日本在线一二| 人妻少妇一区二区| 五月婷婷激情网| 9久热| 极品色www影院| 久久性视频| 欧美日韩性爱精品| 久操大香蕉| 日本色婷婷| 欧美日韩m| 久操99| 亚洲熟妇无码一区二区三区| 禁止观看美女黄| 精品人妻丰满熟妇一区二区三| 国产 热久久久久国产精品| 九九九九免费| 欧美第二页|