免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

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

STUN協(xié)議深度解析:從NAT穿透原理到P2P連接實(shí)戰(zhàn)排障

STUN協(xié)議深度解析:從NAT穿透原理到P2P連接實(shí)戰(zhàn)排障 我最早意識(shí)到必須把STUN協(xié)議啃明白是因?yàn)橐粋€(gè)特別普通的故障兩臺(tái)客戶端都連著同一個(gè)信令服務(wù)狀態(tài)欄也都顯示在線可一旦要建立點(diǎn)對(duì)點(diǎn)通道數(shù)據(jù)包發(fā)出去就像石沉大海。排查了整整兩天最后定位到的問(wèn)題不在你我寫(xiě)的代碼而是雙方都躲在NAT后面彼此根本不知道對(duì)方暴露在公網(wǎng)上的真實(shí)地址。STUN協(xié)議全稱Session Traversal Utilities for NAT就是專(zhuān)門(mén)回答我的公網(wǎng)映射地址到底是什么這個(gè)問(wèn)題的協(xié)議。這篇文章我會(huì)從NAT的底層行為講起拆解一次完整的STUN交互報(bào)文給你一份能直接跑起來(lái)的最小客戶端代碼然后講清楚STUN的邊界在哪、TURN和ICE分別補(bǔ)了什么最后是在實(shí)際接入過(guò)程中積累的調(diào)試經(jīng)驗(yàn)和運(yùn)維教訓(xùn)。做音視頻應(yīng)用、P2P傳輸或者只是單純被NAT問(wèn)題折騰過(guò)的同學(xué)這篇應(yīng)該能幫上忙。1. 從一次失敗的P2P連接說(shuō)起NAT才是真正的攔路虎1.1 兩個(gè)客戶端明明在線為什么就是連不上假設(shè)A同學(xué)在家里B同學(xué)在辦公室兩人用同一個(gè)App聊天、傳文件。信令服務(wù)器兩邊都連通好友狀態(tài)也是綠的。但A向B發(fā)一個(gè)UDP包B收不到B回一個(gè)A也收不到。問(wèn)題不在應(yīng)用邏輯而在IP包從A出發(fā)那一刻就變樣了。A的電腦通常在192.168.1.0/24這類(lèi)內(nèi)網(wǎng)網(wǎng)段家里的路由器做了網(wǎng)絡(luò)地址轉(zhuǎn)換。A發(fā)出一個(gè)源地址為192.168.1.10:50000的包路由器會(huì)把它改寫(xiě)成公網(wǎng)IP加臨時(shí)端口比如203.0.113.7:54321然后在自己的映射表里記一筆內(nèi)網(wǎng)(192.168.1.10:50000)對(duì)應(yīng)公網(wǎng)(203.0.113.7:54321)。B收到的任何來(lái)自這個(gè)地址的流量A才能收到其他陌生地址打進(jìn)來(lái)的包大概率會(huì)被路由器按過(guò)濾策略丟棄。這就是NAT的核心矛盾它只對(duì)由內(nèi)向外主動(dòng)發(fā)起的會(huì)話做一個(gè)臨時(shí)的、有狀態(tài)的門(mén)禁對(duì)外部來(lái)說(shuō)這個(gè)門(mén)禁地址是動(dòng)態(tài)分配的。兩個(gè)客戶端都在NAT后面時(shí)A不知道自己在公網(wǎng)眼里的身份是203.0.113.7:54321B也不知道自己是198.51.100.9:60001各自拿自己網(wǎng)卡上的私網(wǎng)地址去通信自然誰(shuí)也找不到誰(shuí)。簽入信令服務(wù)器只能證明你能連上服務(wù)器完全不能證明你能被別人直連。打個(gè)比方NAT就像一個(gè)公司的前臺(tái)秘書(shū)。內(nèi)網(wǎng)員工只能讓秘書(shū)幫忙撥外線電話外線打進(jìn)來(lái)必須先報(bào)出分機(jī)號(hào)可分機(jī)號(hào)是秘書(shū)臨時(shí)分配的外面的人不知道而且秘書(shū)默認(rèn)不轉(zhuǎn)接陌生來(lái)電。1.2 四種NAT行為決定了STUN能不能派上用場(chǎng)既然NAT是核心障礙那NAT的類(lèi)型不同打通路徑的難度也完全不同。早期RFC 3489把NAT分成四種經(jīng)典類(lèi)型現(xiàn)在看有點(diǎn)粗糙但用來(lái)建立直覺(jué)依然非常好用。NAT類(lèi)型映射行為過(guò)濾行為STUN能搞定嗎全錐形 Full Cone內(nèi)網(wǎng)IP:端口固定映射為一個(gè)公網(wǎng)IP:端口不限制來(lái)源誰(shuí)都能往這個(gè)映射地址發(fā)包最容易拿到映射地址就能直連受限錐形 Restricted Cone同上只允許我主動(dòng)發(fā)過(guò)包的目標(biāo)IP給我回包需要先讓對(duì)端發(fā)探測(cè)包時(shí)序配合端口受限錐形 Port Restricted Cone同上只允許我主動(dòng)發(fā)過(guò)包的目標(biāo)IP:端口回包打洞要精確卡端口難度提升一截對(duì)稱型 Symmetric每個(gè)目標(biāo)IP:端口都會(huì)新建一個(gè)不同映射通常也是端口受限過(guò)濾STUN學(xué)到的映射地址只在和該服務(wù)器通信時(shí)有效基本廢了現(xiàn)在RFC 5389和RFC 8489的視角更精細(xì)把NAT行為拆成兩個(gè)獨(dú)立的軸一個(gè)是映射行為一個(gè)是過(guò)濾行為。映射行為回答同一個(gè)內(nèi)網(wǎng)元組去訪問(wèn)不同目標(biāo)時(shí)公網(wǎng)映射是否一樣過(guò)濾行為回答別人往這個(gè)映射地址發(fā)包NAT放不放行。家庭路由器絕大多數(shù)是端點(diǎn)無(wú)關(guān)映射 端點(diǎn)相關(guān)過(guò)濾也就是平時(shí)說(shuō)的錐形NATSTUN能發(fā)揮價(jià)值。但運(yùn)營(yíng)商級(jí)NATCGNAT為了節(jié)省公網(wǎng)IPv4地址往往會(huì)做地址端口相關(guān)映射指向每一臺(tái)對(duì)端服務(wù)器時(shí)都臨時(shí)開(kāi)出不同的公網(wǎng)端口行為接近對(duì)稱NAT。這也是為什么同樣的客戶端家庭寬帶下直連成功率尚可切到手機(jī)4G/5G網(wǎng)絡(luò)后成功率驟降——不是代碼壞了是NAT的映射行為變了。提示判斷一個(gè)環(huán)境是否對(duì)稱NAT最省錢(qián)的辦法就是拿兩個(gè)不同的STUN服務(wù)器分別查一次映射地址如果兩次學(xué)到的公網(wǎng)端口不一致說(shuō)明映射行為與目標(biāo)地址相關(guān)基本可以斷定是對(duì)稱NAT。2. 一次Binding請(qǐng)求的完整解剖20字節(jié)頭部和一堆TLV2.1 STUN的核心邏輯讓公網(wǎng)服務(wù)器告訴你你看起來(lái)是誰(shuí)STUN的設(shè)計(jì)思路非常直白你無(wú)法從內(nèi)網(wǎng)看到自己公網(wǎng)映射那就找一個(gè)站在公網(wǎng)上的服務(wù)器幫你照鏡子。客戶端從某個(gè)UDP socket發(fā)出一個(gè)Binding Request請(qǐng)求經(jīng)過(guò)NAT時(shí)被路由器改寫(xiě)源地址STUN服務(wù)器收到這個(gè)包時(shí)看到的源IP和源端口就是這臺(tái)機(jī)器在公網(wǎng)上的臨時(shí)身份。服務(wù)器把這個(gè)身份塞進(jìn)響應(yīng)報(bào)文的屬性里返回客戶端收到后自然就知道原來(lái)自己被映射成了什么樣子。這一個(gè)簡(jiǎn)單的回聲機(jī)制解決的是信息問(wèn)題。但記住一個(gè)關(guān)鍵前提服務(wù)器看到的映射是對(duì)應(yīng)這條五元組的映射。具體來(lái)說(shuō)是(本地IP, 本地端口, 服務(wù)器IP, 服務(wù)器端口)這一組關(guān)系。將來(lái)客戶端想跟另一個(gè)對(duì)端B通信B的地址和服務(wù)器地址不同NAT可能為這個(gè)新目標(biāo)分配完全不同的公網(wǎng)端口。這個(gè)映射和目標(biāo)綁定的思想貫穿整個(gè)NAT穿透STUN也好、ICE也好都在圍著它打轉(zhuǎn)。2.2 報(bào)文結(jié)構(gòu)頭部與屬性STUN報(bào)文最前面是一個(gè)固定20字節(jié)的頭部所有字段都是大端序網(wǎng)絡(luò)字節(jié)序。字段長(zhǎng)度說(shuō)明消息類(lèi)型2字節(jié)0x0001是Binding Request0x0101是成功響應(yīng)0x0111是錯(cuò)誤響應(yīng)消息長(zhǎng)度2字節(jié)從Magic Cookie之后的負(fù)載長(zhǎng)度按字節(jié)計(jì)Magic Cookie4字節(jié)固定值0x2112A442用來(lái)快速識(shí)別STUN包Transaction ID12字節(jié)隨機(jī)值客戶端用來(lái)把響應(yīng)和請(qǐng)求對(duì)應(yīng)起來(lái)很多人看到Magic Cookie會(huì)覺(jué)得奇怪為什么一個(gè)協(xié)議要固定放這么個(gè)常數(shù)原因是它能讓接收方在同一個(gè)UDP端口上快速區(qū)分不同協(xié)議。在實(shí)時(shí)通信里同一端口上往往同時(shí)跑著RTP、RTCP、DTLS和STUN包RTP第一個(gè)字節(jié)高兩位是0b10DTLS也有自己的內(nèi)容類(lèi)型取值而STUN頭部前四個(gè)字節(jié)是0x00 0x01 0x21 0x12識(shí)別起來(lái)極其廉價(jià)一個(gè)位運(yùn)算就能完成分流。這在WebRTC這類(lèi)高并發(fā)場(chǎng)景里是實(shí)打?qū)嵉男阅軆?yōu)化。頭部之后是一個(gè)接一個(gè)的屬性每個(gè)屬性都是TLV結(jié)構(gòu)2字節(jié)類(lèi)型、2字節(jié)長(zhǎng)度、若干字節(jié)的值不足4字節(jié)對(duì)齊時(shí)補(bǔ)零。屬性類(lèi)型的最高位是有含義的如果置位表示必須理解服務(wù)器遇到不認(rèn)識(shí)但帶此位的屬性要返回420 Unknown Attribute否則可以靜默跳過(guò)。屬性類(lèi)型值作用MAPPED-ADDRESS0x0001舊協(xié)議時(shí)代使用的映射地址只用于兼容老客戶端XOR-MAPPED-ADDRESS0x0020新標(biāo)準(zhǔn)推薦的映射地址做了異或編碼RESPONSE-SOURCE-ADDRESS0x002B響應(yīng)實(shí)際發(fā)出的源地址多出口場(chǎng)景下排障很有用ERROR-CODE0x0009錯(cuò)誤響應(yīng)里攜帶的具體錯(cuò)誤碼USERNAME / REALM / NONCE0x0006 / 0x0014 / 0x0015長(zhǎng)程憑證鑒權(quán)用的用戶信息MESSAGE-INTEGRITY0x0008HMAC摘要用于校驗(yàn)請(qǐng)求和響應(yīng)未被篡改FINGERPRINT0x8028CRC-32異或0x5354554E幫助接收端確認(rèn)這是STUN包2.3 XOR-MAPPED-ADDRESS的編碼為什么要繞一圈早期RFC 3489時(shí)代用的是MAPPED-ADDRESS直接明文返回IP和端口屬性值第一個(gè)字節(jié)是保留的0x00后面跟著地址族和地址。問(wèn)題在于有些老式的NAT設(shè)備和中繼盒子會(huì)傻乎乎地掃描數(shù)據(jù)包只要看到長(zhǎng)得像內(nèi)嵌公網(wǎng)IP的4字節(jié)就自作主張改寫(xiě)導(dǎo)致明文地址被破壞。于是RFC 5389引入了XOR編碼把地址和端口跟固定值做異或后再傳輸讓數(shù)據(jù)不再長(zhǎng)得像IP躲開(kāi)那些不守規(guī)矩的中間設(shè)備。具體編碼規(guī)則是端口值先和Magic Cookie的高16位做異或也就是0x2112IPv4地址共4字節(jié)和Magic Cookie的4字節(jié)0x2112A442做異或IPv6地址共16字節(jié)則和Magic Cookie(4字節(jié)) Transaction ID(12字節(jié))拼接出的16字節(jié)整體做異或。解碼時(shí)再做一次同樣的異或就能還原。這也是為什么新寫(xiě)的客戶端務(wù)必讀XOR-MAPPED-ADDRESS它對(duì)老NAT設(shè)備的兼容性更好也是RFC 8489時(shí)代的主流實(shí)現(xiàn)。3. 手寫(xiě)一個(gè)最小STUN客戶端從構(gòu)造請(qǐng)求到解析映射地址的完整代碼3.1 準(zhǔn)備工作直接看文檔總歸隔靴搔癢我建議你動(dòng)手寫(xiě)一個(gè)最小實(shí)現(xiàn)。代碼只用Python標(biāo)準(zhǔn)庫(kù)不需要裝任何第三方依賴目標(biāo)是把請(qǐng)求構(gòu)造、發(fā)送、響應(yīng)解析整條鏈路跑通。生產(chǎn)環(huán)境不推薦這么裸寫(xiě)語(yǔ)言生態(tài)里有成熟的開(kāi)源STUN庫(kù)可以用但用最原始的方式過(guò)一遍你對(duì)協(xié)議的理解會(huì)完全不同。假設(shè)本機(jī)已經(jīng)安裝Python 3.8以上版本能聯(lián)網(wǎng)能發(fā)UDP包。測(cè)試用的服務(wù)器地址我先用stun.example.com占位實(shí)際部署時(shí)替換成你自己的服務(wù)地址或者云服務(wù)商公開(kāi)提供的測(cè)試服務(wù)器地址。3.2 構(gòu)造Binding Request并發(fā)送先構(gòu)造20字節(jié)頭部。消息類(lèi)型是0x0001Binding Request沒(méi)有負(fù)載所以長(zhǎng)度字段為0再拼上4字節(jié)Magic Cookie和12字節(jié)隨機(jī)Transaction ID。import socket import struct import random MAGIC_COOKIE 0x2112A442 STUN_SERVER (stun.example.com, 3478) def make_binding_request(): msg_type 0x0001 # Binding Request msg_len 0 txn_id bytes(random.randrange(256) for _ in range(12)) header struct.pack(!HHI, msg_type, msg_len, MAGIC_COOKIE) txn_id return header, txn_id sock socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(1.0) request, txn_id make_binding_request() sock.sendto(request, STUN_SERVER) try: data, addr sock.recvfrom(2048) except socket.timeout: print(timeout, retry...) sock.close()注意一點(diǎn)UDP不保證可靠交付生產(chǎn)代碼必須自帶重傳。STUN規(guī)范里還規(guī)定了按指數(shù)退避重發(fā)這個(gè)我們后面專(zhuān)門(mén)講。這里為了演示先保持單次收發(fā)后續(xù)補(bǔ)上重傳循環(huán)。3.3 解析Binding Response收到響應(yīng)后先校驗(yàn)Transaction ID是否一致再遍歷屬性找到XOR-MAPPED-ADDRESS并解碼。下面是完整的解析函數(shù)。def parse_stun_response(data, txn_id): if len(data) 20: return None msg_type, msg_len, cookie struct.unpack(!HHI, data[:8]) resp_txn data[8:20] if resp_txn ! txn_id: print(transaction id mismatch) return None if msg_type 0x0111: print(got error response) return None mapped None offset 20 while offset 4 len(data): attr_type, attr_len struct.unpack(!HH, data[offset:offset 4]) value data[offset 4: offset 4 attr_len] if attr_type 0x0020: family value[1] port struct.unpack(!H, value[2:4])[0] ^ (MAGIC_COOKIE 16) if family 0x01: ip_int struct.unpack(!I, value[4:8])[0] ^ MAGIC_COOKIE ip socket.inet_ntoa(struct.pack(!I, ip_int)) else: key struct.pack(!I, MAGIC_COOKIE) txn_id raw bytes(a ^ b for a, b in zip(value[4:20], key)) ip socket.inet_ntop(socket.AF_INET6, raw) mapped (ip, port) offset 4 attr_len (attr_len % 4 ! 0 and (4 - attr_len % 4) or 0) return mapped mapped parse_stun_response(data, txn_id) if mapped: print(fmapped address: {mapped[0]}:{mapped[1]})解碼的關(guān)鍵點(diǎn)在前面說(shuō)過(guò)IPv4地址與Magic Cookie異或IPv6地址與Magic Cookie加Transaction ID的16字節(jié)組合異或。端口則與0x2112異或。解析時(shí)要同時(shí)處理屬性值補(bǔ)齊到4字節(jié)的情況漏掉這個(gè)會(huì)導(dǎo)致后續(xù)屬性全部錯(cuò)位。3.4 跑通后怎么判斷自己是不是在NAT后面拿到映射地址后再取一下本地socket在網(wǎng)卡上的實(shí)際地址兩個(gè)值對(duì)比一切就明了了。local_addr sock.getsockname() print(flocal address : {local_addr[0]}:{local_addr[1]}) print(fmapped address: {mapped[0]}:{mapped[1]})如果本地是192.168.x.x或10.x.x.x而映射地址是公網(wǎng)地址說(shuō)明你確實(shí)在NAT后面而且你獲得了NAT分配的臨時(shí)公網(wǎng)端口。如果兩個(gè)地址完全一致說(shuō)明這臺(tái)機(jī)器擁有公網(wǎng)IP沒(méi)有NAT參與。我實(shí)際測(cè)試過(guò)在云主機(jī)公網(wǎng)實(shí)例上運(yùn)行時(shí)兩個(gè)地址一致在家里寬帶下運(yùn)行時(shí)必然不一致。這個(gè)差異本身就是一個(gè)很好的線上環(huán)境判斷手段。4. 邊界與分工為什么對(duì)稱NAT會(huì)打敗STUNTURN和ICE又補(bǔ)了什么4.1 對(duì)稱NAT下STUN獲取的地址為什么沒(méi)法直接用現(xiàn)在把場(chǎng)景切換到對(duì)稱NAT這是STUN翻車(chē)最典型的場(chǎng)合。A在對(duì)稱NAT后面向STUN服務(wù)器S發(fā)請(qǐng)求。A的NAT為發(fā)往S這個(gè)目標(biāo)創(chuàng)建了一個(gè)映射假設(shè)是公網(wǎng)203.0.113.7:58452。S把這個(gè)地址告訴AA以為這就是自己的公網(wǎng)身份。接著A把這個(gè)地址作為候選發(fā)給BB往203.0.113.7:58452發(fā)包。問(wèn)題來(lái)了B發(fā)給這個(gè)地址的流量目標(biāo)IP:端口雖然命中了A的NAT公網(wǎng)地址但A的NAT在此之前從未朝B的地址發(fā)過(guò)包沒(méi)有對(duì)應(yīng)目標(biāo)為B的映射入站包直接被丟棄。更擰巴的是A此時(shí)向B主動(dòng)發(fā)包NAT會(huì)再為發(fā)往B這個(gè)目標(biāo)分配一個(gè)新的公網(wǎng)端口比如203.0.113.7:58455。B拿著58452當(dāng)然找不到A。STUN學(xué)到的地址只對(duì)服務(wù)器S這一個(gè)目標(biāo)是真實(shí)有效的對(duì)整個(gè)公網(wǎng)并不通用。對(duì)稱NAT下STUN給了你一個(gè)正確但沒(méi)法用的答案。這背后是一個(gè)自舉悖論你想通過(guò)一個(gè)地址讓對(duì)端找到你但這個(gè)地址本身取決于對(duì)端是誰(shuí)而對(duì)端是誰(shuí)恰恰是你還沒(méi)法預(yù)先告訴NAT的一件事。想跳出這個(gè)循環(huán)只能靠服務(wù)器中轉(zhuǎn)。4.2 TURN把包袱甩給服務(wù)器的中繼方案TURN的全稱是Traversal Using Relays around NAT思路很粗暴既然直連路徑建不起來(lái)就讓雙方都連到一臺(tái)公網(wǎng)服務(wù)器由服務(wù)器幫兩邊轉(zhuǎn)發(fā)數(shù)據(jù)??蛻舳讼騎URN服務(wù)器發(fā)起Allocate請(qǐng)求申請(qǐng)一個(gè)中繼地址之后對(duì)端只要往這個(gè)中繼地址發(fā)包服務(wù)器就把負(fù)載再通過(guò)一條已建立的通道轉(zhuǎn)發(fā)給客戶端。代價(jià)非常實(shí)在所有媒體數(shù)據(jù)都要經(jīng)過(guò)中繼服務(wù)器帶寬成本翻倍延遲多一跳服務(wù)器要扛巨大的轉(zhuǎn)發(fā)流量。所以TURN在系統(tǒng)工程里從來(lái)是最后手段而不是第一選擇。ICE協(xié)議設(shè)計(jì)的核心目標(biāo)就是盡量?jī)?yōu)先直連其次走STUN打洞最后才退到TURN。4.3 ICE把STUN從查地址變成打通路徑的探針I(yè)CEInteractive Connectivity Establishment把這套流程串成了一個(gè)完整框架。它先讓雙方各收集三類(lèi)候選地址本機(jī)網(wǎng)卡上的host候選通過(guò)STUN從公網(wǎng)看到的server-reflexive候選以及通過(guò)TURN得到的中繼relay候選。然后雙方互換候選列表按照優(yōu)先級(jí)組成候選對(duì)逐對(duì)做連通性檢測(cè)。這個(gè)連通性檢測(cè)用的就是STUN Binding Request。兩個(gè)候選地址之間互發(fā)STUN請(qǐng)求請(qǐng)求里帶PRIORITY、USE-CANDIDATE等屬性以及ICE的短期憑證。能收到響應(yīng)的候選對(duì)就是可通的路徑最后根據(jù)優(yōu)先級(jí)選出一條最優(yōu)路徑作為媒體通道。所以STUN在ICE里不僅是查自己的公網(wǎng)地址更大價(jià)值是作為輕量可靠的探測(cè)工具持續(xù)驗(yàn)證某條路徑是否真的通。這也是為什么STUN和ICE耦合得這么深I(lǐng)CE檢測(cè)期間雙方用的是短期憑證請(qǐng)求里帶USERNAME和MESSAGE-INTEGRITY字段任何一方拿不出正確摘要的STUN包都會(huì)被丟棄從而防止第三方注入偽造的連通性檢測(cè)響應(yīng)。WebRTC、VoIP系統(tǒng)里這套流程每天都在海量運(yùn)行。5. 接入STUN后的調(diào)試實(shí)戰(zhàn)抓包、鑒權(quán)與錯(cuò)誤碼里的門(mén)道5.1 第一件事永遠(yuǎn)是抓包驗(yàn)證接入STUN之后別急著看業(yè)務(wù)層日志先抓包。抓包能一次性回答三個(gè)問(wèn)題請(qǐng)求是不是真的發(fā)出去了、響應(yīng)是不是真的回來(lái)了、服務(wù)器回給我的地址跟我以為的地址是否一致。抓包工具我習(xí)慣用命令行工具配合圖形化協(xié)議分析器過(guò)濾規(guī)則直接寫(xiě)udp port 3478就行STUN報(bào)文一般能被自動(dòng)識(shí)別并解析出屬性列表。我踩過(guò)一個(gè)很典型的坑服務(wù)器部署在有多出口的網(wǎng)絡(luò)里客戶端把請(qǐng)求發(fā)給了A出口IP但響應(yīng)卻從B出口IP回來(lái)。單看應(yīng)用層一切正常但某些NAT設(shè)備對(duì)源和目的不是同一地址的UDP會(huì)直接丟棄導(dǎo)致線上成功率忽高忽低。后來(lái)是抓包發(fā)現(xiàn)響應(yīng)來(lái)源地址不一致趕緊在服務(wù)器側(cè)固定出口鏈路才解決問(wèn)題。STUN響應(yīng)里的RESPONSE-SOURCE-ADDRESS屬性就是為這種排查設(shè)計(jì)的。另外建議自測(cè)腳本里同時(shí)打印發(fā)給誰(shuí)和從誰(shuí)那里收到響應(yīng)出現(xiàn)不對(duì)稱時(shí)優(yōu)先懷疑路由、負(fù)載均衡和多出口問(wèn)題而不是STUN本身。5.2 鑒權(quán)機(jī)制401、438這些錯(cuò)誤碼背后是一整套憑證流程公共STUN服務(wù)器通常不需要鑒權(quán)誰(shuí)都能來(lái)問(wèn)一句我的映射地址是什么。但TURN服務(wù)器和某些私有化部署的STUN服務(wù)會(huì)要求身份認(rèn)證走的是STUN的長(zhǎng)程憑證機(jī)制客戶端第一次裸請(qǐng)求服務(wù)器回401同時(shí)在響應(yīng)里帶上REALM和NONCE客戶端根據(jù)用戶名密碼和NONCE計(jì)算出HMAC摘要放到MESSAGE-INTEGRITY屬性里重發(fā)服務(wù)器校驗(yàn)通過(guò)后才返回正常響應(yīng)。NONCE是有狀態(tài)的過(guò)期后服務(wù)器會(huì)回438 Stale Nonce客戶端應(yīng)當(dāng)丟棄舊NONCE用響應(yīng)里的新NONCE重新計(jì)算摘要再重試一次。這跟HTTP認(rèn)證里的challenge-response非常像區(qū)別在于STUN用UDP承載整個(gè)流程要自己處理丟包重發(fā)。調(diào)試時(shí)如果一上來(lái)就報(bào)401別慌先看自己是不是漏了帶憑證的第二次請(qǐng)求。錯(cuò)誤碼含義應(yīng)對(duì)300Try Alternate按OTHER-ADDRESS換服務(wù)器重試400Bad Request請(qǐng)求格式錯(cuò)誤檢查報(bào)文401Unauthorized需要長(zhǎng)程憑證重發(fā)時(shí)帶上認(rèn)證屬性403Forbidden憑證無(wú)效或無(wú)權(quán)限420Unknown Attribute服務(wù)器不認(rèn)識(shí)必須理解的屬性減少自定義屬性438Stale NonceNONCE過(guò)期換新NONCE重試500 / 600Server Error / Global Failure服務(wù)器問(wèn)題換節(jié)點(diǎn)或稍后重試5.3 重傳與超時(shí)比你想象的要耐心STUN規(guī)范里的UDP重傳算法是初始間隔500毫秒之后逐次翻倍分別在0、0.5、1.5、3.5、7.5、15.5、31.5秒這幾個(gè)時(shí)間點(diǎn)各發(fā)一次總共7次。這意味著一趟完整的重傳序列可能持續(xù)三十多秒。很多客戶端自己設(shè)2秒超時(shí)一旦網(wǎng)絡(luò)抖動(dòng)就直接判定失敗這是典型的配置不合理。正確的做法是讓STUN的重傳邏輯按指數(shù)退避走同時(shí)應(yīng)用層另外設(shè)定一個(gè)更寬的業(yè)務(wù)超時(shí)比如40秒。對(duì)ICE連通性檢測(cè)反而要激進(jìn)得多檢測(cè)是并行、快速試錯(cuò)的不能等30秒所以ICE用自己的短超時(shí)和重試次數(shù)甚至不等重傳就立刻換下一對(duì)候選。兩者目的不同參數(shù)設(shè)計(jì)也因此完全不同。我實(shí)際開(kāi)發(fā)時(shí)還會(huì)注意一點(diǎn)重傳時(shí)絕不新建socket或換本地端口。STUN的映射和五元組綁定你換一個(gè)源端口NAT就給你開(kāi)一個(gè)新映射重傳等于白傳。固定同一個(gè)socket重傳才有意義。6. 服務(wù)器選型與運(yùn)行經(jīng)驗(yàn)文檔不會(huì)寫(xiě)的那幾件事6.1 自建還是使用公開(kāi)服務(wù)器開(kāi)發(fā)階段用公開(kāi)STUN服務(wù)器測(cè)試很方便但生產(chǎn)環(huán)境強(qiáng)烈建議自建。公開(kāi)服務(wù)器是別人家的基礎(chǔ)設(shè)施沒(méi)有SLA承諾隨時(shí)可能限流、變更地址或下線更實(shí)際的問(wèn)題是地理距離離用戶太遠(yuǎn)的服務(wù)器會(huì)讓RTT高到幾十甚至上百毫秒而STUN查詢是交互鏈路的一部分每多一次往返都拖慢首屏體驗(yàn)。自建時(shí)最常見(jiàn)的方案是部署成熟的開(kāi)源TURN/STUN一體服務(wù)監(jiān)聽(tīng)3478端口同時(shí)支持UDP和TCP。服務(wù)器要按地域分點(diǎn)部署有條件就做任播讓用戶就近接入。DNS里配置STUN服務(wù)的SRV記錄客戶端解析到多個(gè)IP后輪詢使用這樣可以避免單點(diǎn)故障。STUN服務(wù)器的健康檢查特別簡(jiǎn)單周期性發(fā)一個(gè)Binding Request確認(rèn)能在預(yù)期RTT內(nèi)收到響應(yīng)即可這個(gè)探活腳本應(yīng)該納入監(jiān)控體系。有一個(gè)容易被忽略的負(fù)載均衡問(wèn)題UDP不像TCP那樣有連接會(huì)話多臺(tái)STUN服務(wù)器前面掛負(fù)載均衡器時(shí)必須保證請(qǐng)求和響應(yīng)走同一臺(tái)后端否則客戶端會(huì)收到來(lái)源地址對(duì)不上的響應(yīng)某些NAT會(huì)直接把這樣的包丟掉。最穩(wěn)妥的策略是按五元組做一致性哈?;蛘咴诿颗_(tái)服務(wù)器上固定出口IP。6.2 并發(fā)處理與安全防護(hù)STUN是UDP協(xié)議服務(wù)器面對(duì)的是海量短小請(qǐng)求設(shè)計(jì)上要按事件驅(qū)動(dòng)模型走不要在收包路徑里做任何阻塞操作尤其不能做同步DNS解析。每個(gè)請(qǐng)求拿出Transaction ID和來(lái)源五元組在內(nèi)存里維護(hù)一個(gè)事務(wù)表響應(yīng)發(fā)出后盡快清理過(guò)期記錄。經(jīng)典N(xiāo)ginx式的多進(jìn)程加SO_REUSEPORT監(jiān)聽(tīng)實(shí)測(cè)能頂住非常高的QPS瓶頸更多在網(wǎng)卡和內(nèi)核收包上。安全方面有幾個(gè)細(xì)節(jié)。第一對(duì)同一來(lái)源IP要做限速防止有人拿你的STUN服務(wù)器當(dāng)反射放大器。第二對(duì)非STUN報(bào)文直接靜默丟棄不要回應(yīng)任何錯(cuò)誤很多UDP反射攻擊就是靠未知即回放大的。第三響應(yīng)包大小保持克制不要隨意把大屬性塞進(jìn)響應(yīng)響應(yīng)比請(qǐng)求大太多本身就給了放大攻擊機(jī)會(huì)。我見(jiàn)過(guò)一次線上事故日志里全是未知報(bào)文回包后來(lái)加上靜默丟棄策略才消停。6.3 保活、監(jiān)控與IPv6趨勢(shì)NAT映射不是永久的家用路由器常見(jiàn)空閑超時(shí)是30秒到2分鐘不等。應(yīng)用拿到STUN映射地址后如果不持續(xù)往同一個(gè)目標(biāo)發(fā)UDP包NAT會(huì)默默回收這條映射之后對(duì)端再發(fā)包就找不到你了。所以ICE規(guī)范里要求周期性發(fā)STUN Binding Indication來(lái)續(xù)命這個(gè)包帶Transaction ID但不需要響應(yīng)純粹為了讓NAT刷新老化計(jì)時(shí)器。實(shí)踐中每15秒發(fā)一次比較穩(wěn)妥既能?;钣植粫?huì)因?yàn)樘l繁造成服務(wù)器壓力。運(yùn)維上重點(diǎn)盯四個(gè)指標(biāo)Binding Request成功率、RTT分位數(shù)、超時(shí)重傳比例、錯(cuò)誤碼分布。成功率低于99%就要排查鏈路RTT分位數(shù)突然上抬多半是出口擁堵或目標(biāo)段網(wǎng)絡(luò)問(wèn)題438比例升高說(shuō)明NONCE管理出問(wèn)題了。另外客戶端要處理好DNS解析失敗的情況——很多所謂STUN超時(shí)真相是DNS沒(méi)解析出來(lái)客戶端應(yīng)內(nèi)置多組服務(wù)器IP并支持快速切換。隨著IPv6普及純IPv6環(huán)境里NAT不再是主角但防火墻默認(rèn)仍然丟棄入站流量所以STUN的價(jià)值并沒(méi)有消失它依然可以用來(lái)探測(cè)公網(wǎng)可達(dá)性配合ICE做路徑發(fā)現(xiàn)。部分IPv6接入場(chǎng)景還會(huì)出現(xiàn)運(yùn)營(yíng)商級(jí)NAT行為跟IPv4時(shí)代的CGNAT一模一樣STUN在這些環(huán)境里依然是對(duì)抗NAT的主力工具。最后分享一個(gè)小習(xí)慣每次改完NAT相關(guān)的邏輯我都會(huì)在兩種網(wǎng)絡(luò)環(huán)境下各跑一遍自測(cè)腳本——家庭寬帶和手機(jī)流量。家庭寬帶大概率是錐形NAT能驗(yàn)證STUN正常打洞路徑手機(jī)流量大概率是對(duì)稱NAT或運(yùn)營(yíng)商級(jí)NAT能驗(yàn)證降級(jí)到TURN中繼的兜底邏輯。兩個(gè)環(huán)境交叉驗(yàn)證一遍線上才敢放心發(fā)版本。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷六月激情啪啪| 激情综合五月色在线| 亚洲欧美一区二区三区四区爱爱动图| 热久91| 五月婷婷深爱六月| 婷婷色六月| 996er热| 久久精品女人天堂AAA| 成人丁香五月| 色~性~乱~伦~噜| 久久99网站| 中文字幕在线资源| 99久久户外勾搭| 呦呦v线| 成人αV视频免费观看| 天天干天天 亚洲| 色色五月天丁香| 五月婷婷与六月丁香图片激情| 中文字幕av在线| 欧美黄色一级录像| 停婷丁五月在线| 激情五月天婷婷色色色色色色色色色色色 | 婷婷综合网在线| 丁香五月电影| 精品怡红九九九| 亚洲丁香婷婷| 六月激情婷婷| 五月丁香婷婷人体| 色综合9| 97色天堂| 婷婷亚洲五月丁香综合在线 | 97成人在线视频精品| 日熟女| 国产av基地| 五月天激情小说| 99热精品在线播放观看| 免费操超碰| 五月丁香免费视频| 视色综合| 色丁香五月婷婷| 国产成人精品亚洲线观看| 99热这里只有精品最新| 91精品久久久久| 成人做爰A片免费看视频| 精久久色| 色色操| 精品亚洲国产成AV人片传媒| 日韩人妻无码精品| 狠狠五月天婷婷激情网。| 色婷婷丁香社综合| 久久精品国产精品| 999热在线视频| 久久久久久久久久久久久久人妻视频| 久久人操-久草婷婷-成人AV| 这里有精品| 亚洲成人噜噜| 婷婷六月色丁香视频在线观看| 五月天婷婷无码| 日本一毛片| 色播播之激情五月婷婷| 日韩色久| 九九成年视频| 996热| 99热成人在线观看| 中文人妻主播久久| 超碰在线视屏| 久草丁香婷婷五月天婷| 午夜天天精品视频| 六月激情综合| 婷婷欧美综合| 亚洲视色| 五月丁香花免费视频| 青青草99热久久精品国| 久婷狼色诱惑在线| 日日夜夜干| 丁香五月天啪啪| 国产色色网站网址| 大香网伊人久久综合| 超碰在线日夜| 国产精品电影| 99re8这里只有精品99re8热视频| 国产亚洲精品久久一区二区三区| 99精品22| 五月丁香婷婷国产精品综合| 色色综合无码| 狠狠色狠狠| 两性婷婷丁香五月| 欧美搡BBBBB摔BBBBB| 五月婷婷深深爱| 婷婷六月天精品| 国产精品电影| www九九| 操婷婷基地| 性色做爰片在线观看WW| 丁香六月婷婷综合| 色狠狠综合| 色婷婷激情| 日日操天天| 狠狠婷婷爱| 操B五月天| www.99久久久久99| 超级碰91| 亚洲久艹| 日都一级A片| 九月丁香久久网| 香蕉综合网| 久久人人超| 丁香六月激情国产| 丁香五月激情在线| 五月综合激情视频| 伊人狠狠综合| 五月婷婷丁香六月在线| 99re热视频| 婷婷五月天激情文学小说| 日韩在线视频网站| 黄网网站在线播放| 99久久婷婷五月综合| 色444综合网| 五月天丁香久久综合| 九九aV| 国产精品爽爽久久久久久| 99精吕视频在线观看了| 狠狠干思思热| 丁香成人色情五月天| 思思久久96热在精品国产,| 天天做天天要天天爱| 色呦呦美女| 色婷婷五月天成人网| 97日在线视频| a色色色色色| 色综合婷婷| 轮奸综合网| 色婷婷丁香网| 影音先锋人妻出差| 激情综合网五月婷婷| 思思re99视频在线观看| 国产性爱一级| 久草热在线视频| 99久久五月婷婷| 久久免片| 天天射综合网站| 在线视频另类| 激情五月天色色| 婷婷色导航| 久久98| www.五月天婷婷| 色综合天天综合成人网| 亚洲精品久久久久久久久久飞鱼| 被男人添B超爽视频| 国产做A爰片毛片A片美国| 嫩BBB搡BBBB榛BBBB| 五月天激情国产综合婷婷婷| 青青久久91| 人妻中文av| 日本99视频精品免费播放| 色色丁香五月| WWW五月婷婷| 亚洲爱爱无码婷婷色五月| 狠狠干青青草| 色综合大香蕉| 亚洲精品一区中文字幕乱码| 壅壅儕家a| 婷婷久久爱| 婷婷五月18永久免费网站| 日本五月婷| 色情五月综合婷婷| 婷婷丁香五月天综合在线日韩| 九九aV| 日本精品99| 九九在线精品| 美国不卡视频| 欧美日韓成人亚洲精品另类| 五月天播播中文字幕 | 极品少妇高潮啪啪AV无码| 激情五月婷婷丁香综合网| 三级毛片7979| 亚洲久久婷婷丁香五月天| 亚洲亚洲永久无码777777| 婷婷丁香激情综合色情| 超碰2021| 好吊操这里只有精品| 婷婷丁香人妻天天久久| 色综合天天| 色玖玖玖| 五月天狠狠干| 久热久| 色开心五月丁香| 丁香五月婷婷深五月| 丁香六月无码| 粉嫩AV久久一区二区三区| 久久九九婷婷| 激情小说之五月| 五月婷婷影院| 伊人大香蕉综合在线| 婷婷五月蜜桃成人桃色丁香| 久久久久亚洲AV无码网影音先锋| 色操综合| 五月www| 六月婷婷啪啪| 六月丁香婷婷综合影院| 色色色色色色97| 97在线精品| 亚洲情欲久久| 婷婷丁香五月六月激情| 久久婷婷五月综合| 综合99久久| 色五月婷婷五月丁香五月| 91九九| 久久资源综合| 丁香六月亭亭久久综合| 久久小说| 人人操Av| 五月丁香婷婷综合网| 欧美日韩成人在线网站| 99热在线只有精品| 四虎99热在线观看网站| 就爱干 在线| www.久久| 色欲久久综合| 欧美精品999| 激情丁香五月天图片| 日本va欧美va精品发布视频| 五月激情综合网| 五月婷婷综合影院| 另类图片色五月| 99热6色| AⅤ网站在线看| 五月五婷婷网| 激情图片五月天| 色婷婷丁香综合中文字幕| 色色色色色网站| 成人无码髙潮喷水A片| 级情九色| 99热都是精品| 99热免费网站| 色色99| 日本综合色色| 九九99在线免费在线观看视频| 欧美成人日韩| 色老久久| 黄网在线免费播放| 丁香六月狠狠干| www91精品| 色五月丁香伊人五月| 大香蕉五月婷婷丁香| 久er7久热| 婷婷五月天成人| 91超碰在线观看| 色综合天堂| 欧美人人女女精品综合五月天| 五月天婷婷丁香社区| 热热色色五月天婷婷| 久久婷五月综合色| 婷婷丁香五月综合网| 538久久| 99视频| 国产成人VA| 国产精品18久久久| 天天干天天叉| 成人在线视频一区| 久久6这里只有精品| 欧美性爱五月天| 99热 这里只有精品 国产 日韩| 人妻AV在线| 色婷婷丁香网| 全部老头和老太XXXXX| 玖玖资源网站最新站| 四川BBB搡BBB搡多人乱亂| 色小说婷婷五月天天天| 五月丁香婷婷激情图片| 啪色综合| 色婷婷基地在线| 婷婷久久综合| 久久婷婷亚洲五月天| 69天堂99| 日本色色网站| 开心五月婷婷五月| 日韩AV免费电影在线播放| 99色热视频| 国产毛片操B| 亚洲欧洲中文日韩久久AV乱码| 五月婷婷www| 夜色综合网| 91干视频| 国产精品久久久久久久久久| 亚洲第一第二网站| 国产 码在线成人网站| 91人妻PORNY九色大屁股| 日 日干 日日做| 琪琪狠狠干| 五月婷婷激情| 五月丁香激情五月天| 人妻第九页| 五月丁香在线看| 99超级碰碰| 人人操AV| 婷婷播5月| 久久99久久99精品免观看粉嫩| 天天日日夜夜| 99久久6| 色色色婷婷五月天| 婷婷丁香中文字幕| 婷婷五月丁香91| 成人色五月天婷婷| 艹色18p| 色五月成人| 99热国内| www99久久| 婷婷五月天小说| 久色欧美| 五月激情六月| 久久九九国产| 婷婷99综合| 婷婷激情人妻| 五月色丁香激情| 五月停停999| 五月婷在线| 日本颜色视频人人爱| 在线日韩视频| 丁香六月激情毛片| 日韩AV中文在线观看| 五月婷婷影院| 这里只有精品视频在线看| 婷婷综合视频| 亚洲成人综合网在线免费观看| 欧美va国产va| 伊人久久婷| 九九九激情综合| 丁香 久久| 99久久思思| 六月丁香婷婷综合狠狠爱夜夜爱| 五月丁香综合精品欧美| 日本狠狠干| 天天色亚洲| 天天爽天天爽天天爽天天爽天天爽| 亚洲AV成人无码精品| 99久久9| 亚洲va欧洲va国产va不卡| 开心五月婷婷五月| 五月丁香网站| 久久一操| www五月婷婷| 大香蕉久久| 五月婷婷开心五月| 久久人妻高清中文| 亚洲AAA| 1024手机在线观看看片_日韩精品| 五月天丁香婷婷久久九| 日本三级大片| 天天色亚洲| 五月天婷婷乱论小说| 六月伊人婷婷| 五月激情丁香六月狠狠干| 日本3级片一区2区| 九九色情网五月天| 97操资源婷婷| 婷婷狠狠干| 色色热| 色三级色三级| 天天搞天天色综合| 色婷婷亚洲婷婷在线观看| 色五月婷婷激情五月| 五月激情丁香五月| 1024人妻| 成人精品在线观看| 超碰97人人操| 久久久久久综合88| 翔田千里 50岁 无码| 97爱综合| 狠狠综合区| 九九久久玖玖爱| 婷婷丁香色五月天| 99re欧美精品| av在线婷婷| 成熟妇人A片免费看网站| se99视频| 99热国产免费| 久久综合五月天| 日本五月婷婷| 久久婷综合| 久热99| 五月天丁香网站| 婷婷 伊人 久久| 九九無妻| 999久久久国产精品| 五月天婷婷影院影院观看| 丁香五月av在线| 99在线国| 逼里香不卡| 国产精品五月天婷婷| 久久这里99| 99久久综合精品五月天| cc精品国产性传播| 五月婷婷色五月| 色五婷婷开心缴| 人人摸人人搞| 91久久九久久九久久九久久九久久 | 久久的爱大香蕉| 毛v一区二区视频| 久久99免费视屏| 婷婷五月天丁香久久| 国产精品A片在线| 91丨九色丨老熟女激情| 四季AV综合网| 91精品国产91久久久久青草| 九九热这里只有精品首页| 丁香九月综合| 色情激情五月| 久热这里只有精品6| 亚洲视频色婷婷| 天天综合精品| 亚洲综合激情五月久久| 双性美人被调教到喷水A片| 97精品人人A片免费看| 五月婷婷香蕉| 久久大香免费| 九九国产视频| 另类国产综合| 丁香美女五月天婷婷| 五月丁香色| 激情丁香婷婷| wwww.色婷婷| 14色综合婷婷| 79亚洲精品少妇| 五月天中文网| 亚洲五月天另类小说图片| 色99热| 久草热在线视频| 国产日产亚洲系列最新| 婷婷五月18永久免费网站| 婷婷无码视频| 日批在线看| 五月婷婷开心五月| 激情五月丁香五月| 色五月色综合| 亚洲六月婷婷| 激情激情激情网| 99视频久久| 97操操| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 五月天激情图片| 激情五月婷婷综合| 大香婷婷| 99热日韩这里只有精品| 丁香六月激情国产| 九九综合| 婷香狠狠爱五月| 综合亚洲六月婷婷在线| 深夜A片| 日本啪啪天堂| 色婷婷8| 狼人婷婷久久| 婷婷五月天第四色| 九九热在线视频观看| 久久人妻超碰一区| 美女网黄| 五月天影院| 97操视频| 激情婷婷。| 欧美欧盟性爱网| 婷婷开心激情五月激情网| 色色色99| 婷婷激情综合色五月久久91| 色婷婷精品小视频| 五月天婷婷基地综合网| 99@久久@99精品视频| 大香蕉网站,大香蕉综合| 9这里只有精品| 人妻综合网| 人人肏逼视频在线一区二区| 人妻射精AV| 激情五月婷婷综合| 久久久天堂国产精品女人| 国产五月天婷婷| 影音先锋人妻出差| 五月丁香综合| 亚洲精品影视| 另类激情综合| 天天日日| 五月婷婷香蕉| 亚洲热热视频| 97超碰在线免费观看| 人人干AV| 99精品在线| 大香蕉久久婷婷精品综合| 99只有这里是精品| 激情五月综合网| www.色综合.com| 五月丁香六月婷婷的女人| www.色婷婷| 五月丁香色婷婷久久| 五月丁香花激情综合网| 狠狠精品干练久久久无码中文字幕| 丁香五月六月综合激情| 激情综合五月婷婷| 激情碰碰碰| 久久99热 这里有精品| 丁香五月婷婷色| 99久热精品在线| 久色五月| 国产成人综合亚洲| 91婷婷五月天综合视频| 婷婷中文字幕| 做爱夜夜干天天操| 欧美丁香婷婷五月| 久久综合爱| 婷婷内射视频在线| 色五月激情综合| 日韩视频99| 伊人九九68| 五月色欧洲| 五月丁香激情综合网| 色色五月丁香婷婷| 狠狠夜夜五月丁香| 色情性爱视频网址| 大香AV| 成人电影丁香六月天| 激情综合五月| 99这里只有精品|v| 五月天婷婷乱| 久久综合网免费视频| 亚洲成人高清在线| 国精产品一区二区三区| 啪啪日本欧美| 久久久国产精品黄毛片| 六月丁香五月婷婷| 99色干| 天天插天天插天天插天天插| 色性日本| 九九热99在线视频| 五月天丁香婷婷网| 无码日本精品XXXXXXXXX | 性一交一乱一交A片久久四色| 五月激情久久| 婷婷激情五月天视频在线| 五月婷婷狠天天色综合| 五月丁色AV| 五月久久婷婷| av国产精品偷| 婷婷99狠狠躁天天躁中文| 亚洲超碰中文字幕| 伊人九热| 久久久久久久91| 国产五月视频| 国产又色又爽又黄又免费| 99热色精品| 1024日韩| 丁香五月婷婷色| 丁香九月综合| 五月婷婷中文字幕| 久久狠狠干| 五月亭亭开心网| 色色色图| 五月婷婷丁香婷婷| 99热激情| 日日夜夜狠狠| 色九九九九| 久婷五月| 99精品在线观看视频| 99色| 亚欧州精品视频| 五月狠狠| 女婷久久| 亚洲婷婷免费| 色综合五月天| 99热精品在线观看| 99热国品| 久久九九热38| 大香蕉太香蕉视频97| 久久婷婷五月综合色和| 伊人成综合五月婷婷| 丁香五月天网站| 成人五月丁香社区| 久久久性爱视频| 丁香六月欧美| 国产亚洲在线观看| 人妻丰满精品一区二区A片| 青草视频在线观看视频| 午夜伊人大香蕉| 伊人婷婷99热精品| 91亚洲免费片| 日韩人妻无码精品| 九九热在线观看6| 五月丁香在线视频观看| 婷婷 激情 五月| 久色五月婷婷综合| 婷婷丁香五月高清| 91热视频色网站| 色五月琪琪| 五月天综合在线| AA片在线观看视频在线播放| 激情98色婷婷五| 精品九九久久| 青青草轻轻操| www.天天色综合| 色五月开心五月激情五月| 久久精品永久免费| 中文字幕 中文字幕明步| www..999热久| 激情综合网激情五月天| 国成人网| 色v综合网| 婷婷五月成人色综合| 色欲丁香久久| 九九婷婷网五月天| 国产 码在线成人网站| 99国产精品久久久久久久久久久| 亚洲AV成人在线观看| 超碰国产AV| 97人妻碰碰中文无码久热丝袜| 欧美成人无码高清一区二区三区| 丁香五月色情| 激情图片婷婷| 久久精品国产一区二区三区四区| 丁香婷婷五月天成人| 久久久欧美精品sm网站| 日韩欧美成人网| 精品人妻在线| 色激情综合狠狠婷婷| 特级片神马电影| 亚洲99在线| 狠狠爱综合网| 久久婷婷电影| 六月99天天婷婷激情综合| 夜夜夜叫天天天做| 日本久久人| 人妻人人操| 五月婷婷激情在线| 婷婷导航| 激情五月婷婷丁香综合网| 人人操97| 国产av天天插天天操天天爽| 51成人| 思思热精品免费视频| 五月天成人在线播放| 久久免费精彩视频| 中日韩狠狠色| 五月婷婷,六月激情| 五月丁香婷婷导航视频| 丰满少妇猛烈A片免费看观看| AV大片在线观看| 激情综合色| 五月激情婷婷六月| 99成人| 色五月婷婷影视| 狠狠色噜噜狠狠色噜噜噜999| 色永久| 五月色丁香| 人操人| 亚洲人人96@| 丁五月激情视频免费| 疯狂做受XXXX高潮A片| www.99精品视频| 爱草视频在线观看| 免费亚洲婷婷中文字幕| 婷婷五月激情小说| 国产精品在线视频| 国産精品| 熟女国产在线一区二区三区四区| 这里只有精品99视频| 五月丁香婷婷深深爱| 亚洲精品又粗又大又爽A片| 搡BBBB搡BBB搡18| 99热天堂| 色综合色综合色综合| 国产精品色色| 婷婷久久丁香五月| 夜夜夜夜撸夜夜操| 天堂伊人干| 久久这里精彩免费在线观看| 六月婷婷激情| 一本色道久久综合狠狠躁一二三| 久鲁鲁色网| 久久久五月五丁香| 91日本在线免费| 深爱五月天婷综合| 六月激情婷婷| 五月婷婷偷拍| 99热精品在这里| 电影91久久久| 99re思思精品视频在线观看| Av大香蕉| 精品网站:999WWW| 色综合久久88色综合天天| 国产欧美熟妇另类久久久 | 思思99热在线| 激情综合网五月激情| 久久天堂加勒比| 九九热这里只有精品31| 国外亚洲成AV人片在线观看 | 91在线看片| 天天综合干| 丁香五月婷婷基地| 在线不卡视频| 91超碰人人操| 99 re视频一区| AA丁香综合激情| 五月婷婷 自拍| 色五月综合网| 丁香情色五月| 就爱干 在线| 99精彩视频| 婷婷五月天成人五月天| 婷婷中文字幕| 婷婷久久网| 久久激情五月婷婷| 991精品在线视频| 97色色色| 97日本在线| 九九热99免费视频| 婷婷五月在线视频| 97色图片中文字幕视频在线观看| 韩国激情五月天综合网| 9 1 A v久久久| 色五月婷婷色五月| 97ai婷婷| 欧美婷婷综合| 久久久27操| 丁香婷婷激情| 视频一二区| 激情五月天啪啪| 婷婷综合97| 99精品热视频| 久久香蕉影院| 五月丁香色综合| 五月激情丁香六月狠狠干| 色五月丁香五月| 综合婷婷六月| 嫩草AV久久伊人妇女超级A | 成人AV中文字幕| 91激情五月开心| 啪啪婷婷五月天激情| 一起草Av| 天天爱天天做天天日| 天天爽天天干| 婷婷五月丁香高清无码| 精品成人在线| 天天日天天干天天天| 婷婷色五月天色色| 婷婷婷久久久| 九热视频| 天天操夜夜操| 丁香欧美| 狠狠色九月| 97性视频| 婷婷九月| 国产看真人毛片爱做A片| 九九色99| 激情婷婷网| 激情六月丁香| 成人深爱丁香五月| 日韩av手机在线观看| www.丁香五月| 99熟女啪啪视频| 色五月在线观看| 天天狠狠插| a级毛片一区二区免费视频| 第四色五月天| 九九久久99| 色婷婷成人做爰A片免费看网站| 色色色97| 色情五月婷婷| 五六月丁香激情视频| 亚洲人人艹| 99精品自拍视频| 五月婷婷播| 蜜乳AV成人| 99玖玖在线视频| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月婷婷97| 五月丁香综合| 99热骚货| 狠狠色五月| 色人久久| 桔色成人在线| 激情五月天色网站| 国产精产国品一二三在观看 | 深情六月婷婷综合久久| 亚洲欧洲美女在线观| WWW免费视频碰碰碰碰| 六月丁香视频网站| 欧美偷偷操| 99ri在线观看视频| 婷婷五月丁香五月天| 综合五月丁香97| 婷婷五月丁香五月| 亚洲视频图片婷婷五月| 五月婷色| 任我干视频在线观看| 久久久91| 五月丁香六月婷婷亚洲| 九九re精品视频在线观看 | 人人操91| 激情小说之五月| 亚洲熟女色| 亚洲午夜在线视频| 九九热视频99| 丁香婷婷啪啪啪| 性视频久久| 日韩成人中文| 97碰超级人人看| 精品久久久久久久久久久久人妻| 96精品久久久久久久久| 精品久久久中文字幕大豆网推荐理由| 99综合一区| 操丝袜视频影院导航| 国产综合视频婷婷| 激情五月天天| 性爱视频99| 婷婷五月天久久久| 六月婷婷视频| 9久热在线视频精品| 日本视频不卡123区| 国产精品社区| 天天摸人人摸| 激情深爱婷婷网| av在线免费网站 | 色9999日韩国产| 五月丁香六月婷婷视频| 5月丁香美女影院| 97色婷婷| 婷婷五月婷婷| 激情黄色小说五月天| 另类图片色五月| 无码人妻一区二区一牛影视| 97色碰| 91凹凸在线| 色欲资源网| VA婷婷| 九九精彩久久| 超碰人人插| 国产激情综合五月久久| 色婷婷88| 久久久久久久久人妻| 婷婷色五月天第7色| 大香蕉天堂| 99精彩视频在线观看| 少妇大叫太大太粗太爽了A片| 97色热| 无码人妻一区| 色婷婷五月网| 激情影院内射| 97在线精品视频| 丁香六月婷婷久久亚洲天堂| 天天躁日日躁狠狠躁日日躁2022年5月9日| 91精品久久久久久综合五月天| 五月天久久91| 日本 @ va 免费| 色婷婷丁香五月天在线视频 | 91男人资源站| 国外亚洲成AV人片在线观看| 婷婷综合网| 亚洲乱码在线观看| 激情五月婷婷五月丁香五月开心五月| 成人欧美Va| 久月丁香爱婷婷综合| 久草A片| 婷婷激情四射网| 亚洲人成网站999久久久综合| 免费无码毛片一区二区A片| 婷婷五月婷婷| 五月天激情四射| 五月婷婷|欧美| 99精品性爱| 婷婷色丁香六月| 欧美综合五月丁香六月婷| 丁香六月婷婷高清| 最新午夜理论片| 亚洲无码成人网| 97在线精品| 色婷婷久久综合| 五月丁香六月婷婷啪啪| 97极品在线| 婷婷综合影院| 1999天天操夜夜操| 色五月婷婷激情基地| 伊人热婷婷| 99精品自拍| 婷婷综合色| 五月丁香六月激情综合| 182TV大香蕉| 停停五月色宗合| 97色色色| 色婷婷综合影院| 午夜丁香综合婷婷| 91久久九久久九久久九久久九久久| 亚洲VA口| 亚洲人成色A777777在线观看| 狠狠色成人影片| 欧美激情VA永久在线播放| 婷婷五月天国产在线播放| 五月婷婷综合丁香视频| 天天干天天干天天干天天干天天干| 五月婷婷五月天激情网| 久久伊人五月天| 爽天天天天天天天| 久久999久久999久久999久久| 日本天天操| 婷婷操超碰| www.婷婷亚洲基地| 五月丁香啪啪网| 狠狠干夜夜干| 色婷婷小说| 国产偷人爽久久久久久老妇APP| 精品国产乱码久久久久夜深人妻| 国产在线aaa片一区二区99| 色色色色欧美| 97婷婷五月| 婷婷色基地在线看| 91九色小视频| 大香蕉九九| 思思视频这里是精品| 黄色99网| 丁香美女主播视频在线观看| 激情综合五月婷婷六月丁香| 99综合网| 婷婷操逼| 裸睡玩奶头(高H)| 亚洲宗合激情| 91精品视频男人的天堂| 六月丁香婷婷综合狠狠爱夜夜爱| 色色吧综合| 亚州激情网站无码| 激情综合另类| 丁香六月婷婷综合缴| 久久 婷婷 五月天| 国产精品色| 日韩人妻AV在线| 超碰丁香五月| 五月婷婷啪啪啪| 无码一区二区三区四区五区| 天天日夜夜操五月| 五月丁香六月婷婷开心网| 久久亚洲无码| 五月婷婷啪啪| 狠狠干最新地址| 激情丁香五月AV| 九九五月天| 色欲五月天| 亚洲天堂aaa| 人人澡玖玖一| 中文字幕丰满孑伦无码专区 | 综合激情深爱| 激情网五月天| 涩五月婷婷| 2050人人操免费工开爱| 综合色吧| 99rewww| 色五月天本日| 狠狠爱综合| 青草视频在线观看视频 | 99在线免费视频| 色婷婷狠狠禁18久久| 大香av| 丁香香五月激情免费视频| 婷婷五月丁综合| 伊久久婷婷| 国产真实乱了老女人视频| 人妻操日日| 秋霞黄色一级久久| 激情深爱五月| 99热这里只有精品16| 婷婷五月丁香基| 九九热10| 五月丁香色播| 97婷婷狠狠| 久久精品国产精品| 丁香六月婷婷综合欧美| 婷婷六月开心网| 五月天婷婷激情| 欧美电影在线播放| 国产精品丝| 天天艹夜夜爽| 99热最新精品| 丁香五月婷婷天激情| 久久看婷婷| 色婷婷五月网| 丁香六月久久| 亚洲午夜国产成人电影VA国产欧…| 久草A片| 久久99成人性爱高清视频| 97精品综合久久| 日B日潘金莲BB| 国产精品电影| 久久婷婷五月免费视频| 丁香五月婷婷色| 噜噜狠狠色综合久| 夜夜夜夜操| 无码激情| 丁香花五月天婷婷成人社区 | 欧在线一区| 久久婷婷五月国产激情综合片| 五月婷婷婷婷| 无码少妇高潮喷水A片免费| 婷婷综合色网| 婷婷成人小说综合| 六月婷婷五月天| 丁香五月成人丝袜| 99热这里只有精品13| 99九色视频在线观看| 久久婷婷五月综合色和| 97丁香花五月天激情小说| 九色无码| 97操资源婷婷| 97五月天婷婷午夜| 91婷婷搞| 日韩AV在线免费| 6月丁香婷婷激情| 亚洲AV网站| 99综合成人视频在线观看| 五月深爱婷婷| 99热精品在线播放| 百度4399有码精品V在线观看| 另类激情五月| 99久re热视频精品98| 色综合中文| 日韩视频99| 激情人妻蜜夜系列区| www.粉嫩av.com| 激情久久久久久久久久久| 九色激情| 天天模,夜夜模夜夜爽| 久久怕怕视频| 人伦30P| 婷婷五月天天天| 色呦呦在线| 婷婷色日本| 五月大香蕉| 97色碰| 久久五月激情综合| 9久久网| 色五月首页| 人人爽网| 色婷婷婷婷成人网| 99爱精品| 99色婷婷| 丁香六月久久| 成人中文字幕在线| 久久久久这里只有精品| 有码一区二区三区| 色色亚卅| 日本熟妇乱妇熟色A片蜜桃| 久久婷婷五月国产激情综合片| 色五月综合激情| 五月婷在线影院| 激情久久丁香| 欧美日韩五月婷婷| 五月婷婷激情综合网| 国产亚洲AV人片在线| 99热精这里只有精品| 99在线精品免费视频| 96人人操人人操人人| 天天日天天爽| 六月色婷婷色| 青草五月天| 色婷婷99| av色色国产| 欧美在线视频99| 开心五月婷婷激情| 日韩成人AV在线| 玖玖综合色| 中美日韩成人在线| 五月婷啪| 亚洲av成人在线| 亚洲五月天婷婷| 欧美色99| 99人妻碰碰碰久久久久禁片| 99热亚洲| 99人人干| 丁香六月啪啪| 99热8| 一区二区中文字幕| www.婷婷五月天| 99热成人精品| 国产69久久久欧美黑人A片| 九九九午夜影院成人| 密着浓厚中出乚交尾GvG935| 丁香五月综合在线播放 | 九九视频在线观看| 五月欧美色播| 国产成人精品一区二三区熟女在线| 5月丁香婷婷| 成人做爰黄A片免费看直播室男男| 99精彩视频在线观看| 91蝌蚪窝视频在线| 婷婷五月天欧美图片在线播放电驴| 婷婷不卡基地| 久热这里只有精品6| 婷婷大乡焦噜噜| 丁香六月婷婷开心| 91综合在线| 五月天综合| er99免费视频在线| 开心婷婷五月综合| 综合久久99| 中文精品在| 五月在线| 五月婷婷综合色啪| 久久ri精品| 日日干天天爽| 国产五月天婷婷| 99热8| 人人摸人人射| 五月丁香亭亭A片| 激情五月婷婷在线观看| 国产在线黄色| 国产免费一区二区在线A片视频| 6080av| 碰久久精品w| 色婷婷国产精品综合在线观看| 五月婷在线观看| 精品无码久久久久久久久| 久久网思思| avv在线| 99色婷婷| 婷婷色播综合五月| Www.Av网9| 激情丁香六月| 丁香五月婷婷婷婷欧美综合| 国产精品成人AV在线观看春天| 日日夜夜爽| 99福利导航| 婷婷六月天| 亚洲综合色棒| 色婷婷狠| 蜜臀AV在线观看| 99久久综合| 91se在线视频| 男男野外做爰全过程69| 99热亚洲精品66| 台湾无码A片一区二区| 色区久久| 久久久一级AAA| 成功精品影院| 丁香五月婷婷五月天在线| 91麻豆国产三级精品福利在线观看| 综合久久99| 亚洲婷婷五月天在线激情综合网| 一本色道久久88加勒比| 九九热精品视频| 天天插天天狠| 九九精品丁香花| 伊人激情啪啪| 五月婷婷综合色啪首页| 亚洲AV无码影院| 欧美婷婷| 五月综合婷婷五月| wWwCom夜操wwW| 婷婷九九色| 亚洲天堂久久| 国色天香伊人狠狠色| 人妻激情在线| 欧美亚洲色色色色| 五月婷激情影院| 桃色伊人在线| 五月香蕉婷婷| 亚洲国产精品二二三三区| 日日干夜夜干| 五月丁香天堂网婷婷| www.色九月| 欧美性猛交99久久久久99按摩| 丁香六月激情| 天天爽,天天操。| www一起操| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 玖玖99免费视频| 婷婷五月丁香婷婷| 99久在线视频| 老司机视频lsj爱就色| 一起草av| 亚洲精品激情| 第四色五月激情网| www.com亚洲网站在线免费| 国产欧美日韩综合精品一区二区| 久久999久久999久久999久久| 五月人妻婷婷| 91操片| 一本婷婷丁香久久| 五月婷婷激情五月| 五月亭亭直播| 五月丁香六月婷婷色| 亚洲另类婷婷综合| 丁香花狠狠婷婷亚洲中文字幕| 狠狠五月天| 久久久久婷| 亭亭五月激情亚洲在线| 久久婷婷五月天激情新地址| 18久久| .青娱乐天天操B| 五月丁香在线观看| 开心婷婷中文字幕| 呦呦v线| 综合激情五月天| 六月激情丁香一道本7777| 97丨九色丨国产丨PORNY| 夜夜撸天天操| 五月天社区| 五月深爱激情网| 激情播丁香| 亚洲色啪| 综合激情专区| 人妻有码乱操| 99精品偷自拍| 亚洲日日操| www.yw色| 日本颜色视频人人爱| 思思久久96热在精品国产,| 久久五月婷婷电影| www.久久爱.com| 99热官网精品在线| 婷婷的五月天另类视频| 五月婷色| 99热这里有精力| 97干在线观看视频| 婷婷天天色| 99色在线观看视频| 天天激情夜夜干| 亚洲色色色色色| 激情久久五月天| 一级二级色大片| 96色婷婷| 好叼操在线观看| 97 天堂| 99这里有精品视频| 99热综合网| 久久色婷婷| 五月天激情网站| 五月六月婷| 婷婷五月激情在线视频| 色久免费| 五月丁香婷婷AV天堂| 九九99在线观看视频| 五月色网| 成人五月天丁香| 大香蕉狼人久久| 五月香蕉网| 五月丁香A∨在线| 91丨九色丨老熟女激情| 91聚色综合网| 久久婷婷五月综合色区| 成人无码精品1区2区3区免费看 | 五月综合激情网| 深爱五月婷婷| 婷婷综合网| 日韩AAAAA| 激情五月婷婷丁香| 六月色播| 五月天激情小说欧美激情| 亚洲天堂aaa| 五月成人天| 天天狠狠夜夜狠狠2023| 久久久久久人妻久久久久久久久久人妻久久久 | 免费观看日韩成人av| 综合另类激情| 高清a片基地| 琪琪狠狠干| 精品操逼一区二区| 九九精品婷| 久热婷婷在线视频| 超碰色女| 久大香蕉| 99精品自拍视频| 婷婷精品| 26uuu色噜噜精品一区| 色婷婷在线综合色播网| 丁香久久五月天视频在线观看|