OpenWRT राउटर का उपयोग करते समय टीएलएस हैंडशेक कुछ वेब साइटों के लिए रीसेट करता है


5

वर्तमान में मैं अपने राउटर के साथ एक बहुत ही अजीब मुद्दे का सामना कर रहा हूं। मेरे पास टीपी-लिंक टीएल-डब्ल्यूडीआर 4300 रेव है। 1.7 रनिंग ओपनडब्ल्यूआरटी 18.06.1।

समस्या मूल रूप से 1-2 महीने पहले शुरू हुई थी, जब मेरे पास OpenWRT 15.05 था, और राउटर पर अंतिम कॉन्फ़िगरेशन परिवर्तन (नवीनीकरण से पहले 18.06.1) लगभग एक साल पहले था।

इसलिए, 1-2 महीने पहले मैंने देखा कि कुछ वेब साइट सभी ब्राउज़रों में सभी उपकरणों (आईओएस, एंड्रॉइड फोन, उबंटू लैपटॉप, विंडोज लैपटॉप के साथ आईफोन) पर लोड नहीं करती हैं। हालांकि, अगर डिवाइस को वाईफाई से डिस्कनेक्ट किया गया है और उदाहरण के लिए, सेलुलर नेटवर्क, वेब साइट तुरंत लोड होती है।

मेरा आईएसपी ड्यूश टेलकम है, और लोड नहीं होने वाली वेब साइट का एक अच्छा उदाहरण है https://telekom.de , जो आमतौर पर उपलब्ध होने की उम्मीद है।

मैंने नवीनतम स्थिर OpenWRT रिलीज के उन्नयन का प्रदर्शन किया है और इस मुद्दे की जांच शुरू की है। राउटर पर लॉग या किसी अन्य त्रुटि संदेश में कोई गिरा हुआ पैकेट नहीं हैं जो समस्या से संबंधित हैं। कर्ल सीधे राउटर पर एक प्रभावित वेब साइट (telekom.de) की सामग्री प्राप्त करने में सक्षम है:

 root@OpenWrt:~# curl --tlsv1.0 -v https://telekom.de
 > GET / HTTP/1.1
 > Host: telekom.de
 > User-Agent: curl/7.60.0
 > Accept: */*
 > 
 < HTTP/1.1 301 Moved Permanently
 < Date: Sat, 01 Sep 2018 20:56:23 GMT
 < Server: Apache
 < Location: https://www.telekom.de/start
 < Content-Length: 236
 < Content-Type: text/html; charset=iso-8859-1
 < 
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <html><head>
 <title>301 Moved Permanently</title>
 </head><body>
 <h1>Moved Permanently</h1>
 <p>The document has moved <a href="https://www.telekom.de/start">here</a>.</p>
 </body></html>

सभी ग्राहकों पर यह अभी भी काम नहीं किया:

$ curl --tlsv1.0 -v https://telekom.de
* Rebuilt URL to: https://telekom.de/
* Hostname was NOT found in DNS cache
*   Trying 46.29.100.76...
* Connected to telekom.de (46.29.100.76) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to telekom.de:443 
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to telekom.de:443

मैंने विंडोज़ लैपटॉप को सीधे ड्यूश टेलकम के PPPoE फाइबर ऑप्टिक मॉडेम से जोड़ने की कोशिश की और वेब साइट्स सामान्य रूप से लोड होने लगीं। मैंने एक विंडोज लैपटॉप को वाईफाई राउटर में बदल दिया है और सभी क्लाइंट समस्याग्रस्त वेब साइटों को लोड करने में सक्षम थे।

मेरा मूल विचार यह था कि समस्या IPv6 से संबंधित हो सकती है (संभवतः दूसरा संबंधित मुद्दा यहां है ), और मैंने इसे कॉन्फ़िगर किया है (इससे पहले कि यह ठीक से कॉन्फ़िगर नहीं किया गया था)। यह मदद नहीं करता था, और विंडोज क्लाइंट के लिए एडेप्टर सेटिंग्स में आईपीवी 6 को अक्षम करने से भी मदद नहीं मिलती है।

राउटर के रूप में OpenWRT का उपयोग करते समय, ब्राउज़र थोड़ी देर (1-2 मिनट) तक टीएलएस हैंडशेक करने की कोशिश करता है और फिर "सुरक्षित कनेक्शन विफल" संदेश दिखाता है।

यहाँ telekom.de के लिए TLS हैंडशेक का Wireshark कैप्चर है

और नीचे मेरी कुछ राउटर सेटिंग्स हैं:

इंटरफेस का स्क्रीनशॉट:

इंटरफेस

Iptables का आउटपुट -L -v (मैं मानक OpenWRT फ़ायरवॉल कॉन्फ़िगरेशन का उपयोग नहीं करता हूं, क्योंकि इसमें बहुत अधिक श्रृंखलाएँ हैं और यह मेरे लिए बहुत जटिल है, इसलिए मैं इसे iptables-Restore कमांड के माध्यम से बूट पर फिर से लिखता हूं):

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
5651  481K ACCEPT     all  --  lo     any     anywhere             anywhere            
137K   17M ACCEPT     all  --  any    any     anywhere             anywhere             ctstate RELATED,ESTABLISHED
184  10370 logdrop    all  --  any    any     anywhere             anywhere             ctstate INVALID
0     0    ACCEPT     udp  --  pppoe-wan any     anywhere             anywhere             udp dpt:bootpc
0     0    ACCEPT     udp  --  l2tp-voip any     anywhere             anywhere             udp dpt:bootpc
67318 4219K ACCEPT     all  --  br-lan any     anywhere             anywhere            
5423  290K logdrop    all  --  any    any     anywhere             anywhere            

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
423K   49M ACCEPT     all  --  br-lan pppoe-wan  anywhere             anywhere            
0      0   ACCEPT     all  --  br-lan l2tp-voip  anywhere             anywhere            
0      0   ACCEPT     all  --  br-lan br-lan  anywhere             anywhere            
1324K 1610M ACCEPT     all  --  pppoe-wan br-lan  anywhere             anywhere             ctstate RELATED,ESTABLISHED
0      0   ACCEPT     all  --  l2tp-voip br-lan  anywhere             anywhere             ctstate RELATED,ESTABLISHED
0      0   logdrop    all  --  any    any     anywhere             anywhere            

Chain OUTPUT (policy ACCEPT 188K packets, 25M bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain logdrop (3 references)
pkts bytes target     prot opt in     out     source               destination         
5607  300K LOG        all  --  any    any     anywhere             anywhere             LOG level warning prefix "dropped: "
5607  300K DROP       all  --  any    any     anywhere             anywhere

Iptables -t nat -L -v का आउटपुट :

Chain PREROUTING (policy ACCEPT 59800 packets, 4849K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 39692 packets, 2880K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 29226 packets, 2171K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 2123 packets, 232K bytes)
pkts bytes target     prot opt in     out     source               destination         
35523 2660K MASQUERADE  all  --  any    pppoe-wan  anywhere             anywhere            
2  1098 MASQUERADE  all  --  any    l2tp-voip  anywhere             anywhere 

/ Etc / config / नेटवर्क की सामग्री:

cat /etc/config/network

config interface 'loopback'
 option ifname 'lo'
 option proto 'static'
 option ipaddr '127.0.0.1'
 option netmask '255.0.0.0'

config globals 'globals'
 option ula_prefix 'xxxx:xxxx:xxxx:xxxx::/64'

config interface 'lan'
 option ifname 'eth0.1'
 option type 'bridge'
 option proto 'static'
 option ipaddr '192.168.x.x'
 option netmask '255.255.255.0'
 option ip6addr 'xxxx:xxxx:xxxx:xxxx::1/64'

config interface 'wan'
 option proto 'pppoe'
 option password 'yyyyyyyy'
 option ifname 'eth0.7'
 option username 'zzzzzzzzzzzzzzzzzzzzzzzzzzz@t-online.de'
 option ipv6 '1'

config interface 'wan6'
 option ifname '@wan'
 option proto 'dhcpv6'
 option reqprefix 'auto'
 option reqaddress 'try'

config switch
 option name 'switch0'
 option reset '1'
 option enable_vlan '1'

config switch_vlan
 option device 'switch0'
 option vlan '1'
 option vid '1'
 option ports '0t 2 3 4 5'

config switch_vlan
 option device 'switch0'
 option vlan '3'
 option vid '7'
 option ports '0t 1t'

config interface 'voip'
 option proto 'l2tp'
 option server 'ooo.ooo.ooo.ooo'
 option username 'xxxxxxxxxxx'
 option password 'xxxxxxxxxxx'
 option defaultroute '0'
 option peerdns '0'
 option delegate '0'
 option ipv6 '0'

config route
 option interface 'voip'
 option target 'xxxxxxxxxxxxxxx'
 option netmask 'xxxxxxxxxxx'
 option gateway 'xxxxxxxxxx'

इस समस्या का एक कारण क्या हो सकता है?

अद्यतन: इसी तरह के प्रश्न के सुझावों के बाद , मैंने pppoe-wan ( ifconfig pppoe-wan mtu xxxx ) के लिए अलग MTU (1400,1476,1480) सेट करने का प्रयास किया । दुर्भाग्य से, यह मदद नहीं की।

अद्यतन 2: ubuntuforums.org पर , Ubuntu को पुनर्स्थापित करने के माध्यम से एक समान समस्या को ठीक किया गया था। मैंने अभी-अभी OpenWRT ( https://openwrt.org/toh/tp-link/tl-wdr4300#flash_overwrite का अनुसरण करते हुए) फिर से फ्लैश करने की कोशिश की है । दुर्भाग्य से यह मदद नहीं की।


2
"मैं मानक OpenWRT कॉन्फ़िगरेशन का उपयोग नहीं करता हूं" और क्या होता है जब आप अपने कॉन्फ़िगरेशन, फ़ैक्टरी को डिफ़ॉल्ट रूप से बैकअप लेते हैं, और डिफ़ॉल्ट लुसी iptables नियमों का उपयोग करते हैं?
Tim_Stewart

अपने अंश में, SSL SSL3 का उपयोग करने की कोशिश कर रहा है। SSLv3 मर चुका है। यह सबसे अधिक संभावना है कि आपके राउटर से पूरी तरह से असंबंधित है।
डैनियल बी

@ डैनियल बी, धन्यवाद, मैंने सवाल को अपडेट किया है और टीएलएस 1.0 के साथ कर्ल का उत्पादन किया है
एंड्री सपेगिन

--tlsv1.0अब पदावनत हो गया है। कृपया अपनी पोस्ट में ग्राहक के कर्ल के आउटपुट और विर्सार्क कैप्चर को एक --tlsv1.2या कम से कम उपयोग करके बदलें --tlsv1.1
harrymc

विंडोज पर फ़ायरफ़ॉक्स के लिए Wireshark कैप्चर किया गया था। अगर मैं --tlsv1.2 या --tlsv1.1 के साथ कर्ल की कोशिश करता हूं, तो आउटपुट बिल्कुल समान है।
एंड्री सेपगिन

जवाबों:


3

यह MTU और विखंडन के साथ एक मुद्दा लगता है। ईथरनेट MTU 1500 है, जबकि PPPoE MTU (1500-8) = 1492 है।

अकेले राउटर पर MTU सेट करने से मदद नहीं मिलती है। आप निवर्तमान पैकेट में MSS का आकार कम करते हैं।

अपने PPPoE इंटरफ़ेस के अनुसार iptables, इस नियम को जोड़ें ppp0:

-एक FORWARD -o ppp0 -p tcp -m tcp --tcp-flag SYN, RST SYN -j TCPMSS --clamp-mss-to-pmtu

एक विकल्प एक निश्चित आकार है:

-एक FORWARD -o ppp0 -p tcp -m tcp --tcp-flag SYN, RST SYN -j TCPMSS --set-mss 1400


हाँ आप सही है! मैंने अभी इसे स्वयं पाया है, और इस मुद्दे पर अधिक विवरण के साथ एक और उत्तर प्रदान करेगा। आप अभी भी स्वीकृत उत्तर और सभी भरपूर अंक प्राप्त करते हैं, बहुत बहुत धन्यवाद!
एंड्री सेपगिन

2

जैसा कि राल्फफ्राइड ने पहले ही लिखा था, यह वास्तव में एमटीयू समस्या है। हालाँकि, MTU का सरल परिवर्तन मदद नहीं करता है। PPPoE में हमेशा कम MTU ईथरनेट होता है, जैसे ईथरनेट MTU 1488 -> PPPoverE ईथरनेट MTU 1480। किसी भी तरह, भले ही राउटर PPPoE के लिए सही MTU जानता हो, और यह राउटर से ही कनेक्शन शुरू होने पर काम करेगा, सभी क्लाइंट मशीन अभी भी MTU 1500 के साथ पैकेट भेजेंगे और iptables को पता होना चाहिए कि पैकेट को अग्रेषित करते समय MTU समायोजन की आवश्यकता है।

यहाँ समस्या का विस्तृत विवरण दिया गया है: यह 2017 है- मैं अब भी एमटीयू के बारे में परवाह क्यों करता हूं?

डिफ़ॉल्ट रूप से, OpenWRT के पास इस समस्या को कम करने के लिए एक विशेष विकल्प है:

हालाँकि, नॉन-स्टैडर्ड iptables नियमों के साथ भी, यह आसानी से iptables में --set-mss विकल्प का उपयोग करके तय किया जा सकता है

महत्वपूर्ण बिंदु यह है कि यह एमएस क्लैम्पिंग नियम फॉरवर्ड नियमों की शुरुआत में होना चाहिए , पैकेट से बचने के लिए अन्य नियमों से पहले कैप्चर किया जाना चाहिए (उदाहरण के लिए, नियम नियम आदि)।

मेरे मामले में, यह पहला नियम है:

-A FORWARD -i br-lan -o pppoe-wan -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.