เหตุใดการจับมือ TLS จึงใช้ * ตลอดไป * (20 วินาที) ใน VPS


4

ฉันมีเซิร์ฟเวอร์ที่ใช้งานได้ดี แต่ติดค้างนาน 20 วินาทีเมื่อพยายามเชื่อมต่อกับ SSL (SSH หรือ HTTPS แสดงรูปแบบเดียวกัน)

ฉันลองเชื่อมต่อที่หลากหลายโดยไม่มี SSL เช่น telnet:

telnet server-name 80

ป้อนคำสั่ง GET

GET http://server-name/
Host: server-name
Accept: text/html, */*
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

และคำตอบนั้นเป็น 100% ทันที

อย่างไรก็ตามเมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน HTTPS ในเบราว์เซอร์ของฉันหรือใช้ SSH เพื่อเชื่อมต่อกับเซิร์ฟเวอร์เดียวกันนั้นจะอยู่ประมาณ 20 วินาทีก่อนเชื่อมต่อ

สำหรับ SSH มันจะทำงานได้ดี (เช่นไม่ช้าอีกต่อไป) สำหรับ HTTPS มันจะช้าลงทุกครั้งที่ต้องเชื่อมต่ออีกครั้ง อย่างไรก็ตามการเชื่อมต่อที่ไม่ได้ปิดจะยังคงทำงานได้อย่างรวดเร็ว

ฉันกำลังเพิ่มสกรีนช็อตของข้อมูลสุทธิที่ปรากฏใน Firebug อย่างที่เราเห็นทุกครั้งที่มีการพยายามเชื่อมต่อใหม่คือยุค 20 ดูการใช้งานเซิร์ฟเวอร์ด้วย htop ซีพียูจะอยู่ที่ 0% และเมื่อมีอะไรเกิดขึ้น รายงานการใช้งาน ดังนั้นเซิร์ฟเวอร์โดยรวมยังไม่ได้รับการแก้ไข แต่อย่างใด (นั่นคือเซิร์ฟเวอร์ทดสอบ ณ จุดนี้และเรายังไม่ได้รับความนิยมจากผู้อื่น)

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นคำถามของฉันคืออะไรอาจทำให้เกิดการชะลอตัวเช่นนี้?

ฉันคิดว่าอาจเป็นไปได้ว่า OpenSSL กำลังพยายามใช้ / dev / random แต่ฉันไม่เคยได้ยินปัญหาดังกล่าวมาก่อน อุปกรณ์แบบสุ่มไม่ได้ให้ผลลัพธ์มากใน VPS นั้น อย่างไรก็ตาม / dev / urandom ทำงานได้ดีมาก ฉันสามารถรับข้อมูลแบบสุ่ม 1Mb ในไม่กี่วินาที ฉันจะแก้ไขปัญหานี้ได้อย่างไร


/etc/resolv.confดูเหมือนว่า Google DNS ควรจะเร็ว ...

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4

โปรดทราบว่าการตั้งค่า Apache2 ในตัวมันเองไม่ควรโดยตรงเนื่องจากมันเกิดขึ้นกับ SSH ...


ssh -vvvนอกจากนี้ผมพยายามกับ การเชื่อมต่อทันที

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/alexis/.ssh/config
debug1: /home/alexis/.ssh/config line 202: Applying options for do-nia2match
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/alexis/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 178.62.213.172 [178.62.213.172] port 22.
debug1: Connection established.
...
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/alexis/.ssh/do-nia2match_rsa, explicit

SUPER LONG PAUSE HAPPENS HERE (~20s)

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred publickey,keyboard-interactive
debug3: authmethod_lookup publickey
...

ฉันไม่แน่ใจว่าทำไมเมื่อส่งคีย์เซิร์ฟเวอร์ SSH จะหยุดทำงานเป็นเวลา 20 วินาที ...


1
การกำหนดเวลาของ Chrome มีรายละเอียดมากขึ้นและแสดงการเจรจา SSL กำลังดำเนินการอย่างรวดเร็ว ปัญหาของคุณเกิดขึ้นหลังจากนั้นเสร็จสมบูรณ์ กรุณาโพสต์สำเนาของเซิร์ฟเวอร์/etc/resolv.confและตรวจสอบการกำหนดค่า Apache ของคุณสำหรับการHostnameLookupsตั้งค่า
Michael Hampton

ไม่ใช่การจับมือ TLS มันเป็นเวลาของไบต์แรกตามwebpagetest.org/result/การทดสอบนี้ ดูกราฟรายละเอียด ดูทรัพยากรของคุณดูสิ่งที่แตกต่างเกี่ยวกับสิ่งที่ช้า มันกดปุ่ม PHP ที่ใช้ CPU มากเกินไปหรือไม่? RAM มีข้อ จำกัด หรือไม่
ทิม

2
เซิร์ฟเวอร์ของคุณสามารถค้นหา DNS กับ Google DNS ได้หรือไม่ มีรายการบันทึกจาก Apache หรือ ssh เกี่ยวกับปัญหาหรือไม่
Michael Hampton

Oh! ดูเหมือนว่า DNS จะถูกบล็อกโดยไฟร์วอลล์ มันเคยทำงานมาก่อน แต่มีคนอื่นอาจเปลี่ยนแปลงบางอย่างที่นั่น ... ขอให้แน่ใจว่าพอร์ต 53 เปิดอย่างถูกต้องแล้วลองอีกครั้ง
Alexis Wilke

ว้าว! นั่นมัน! ฉันสามารถเข้าใจได้ว่า DNS นั้นจำเป็นสำหรับ Apache2 แต่ฉันต้องบอกว่าความจริงที่ว่า SSH ถูกบั่นทอนด้วยนั้นเป็นเรื่องที่น่าประหลาดใจมากสำหรับฉันและไม่ได้กดกริ่ง! Ah! ฉันเห็นว่าเซิร์ฟเวอร์ SSH ทำการค้นหาแบบย้อนกลับโดยค่าเริ่มต้น ตอนนี้ฉันเข้าใจแล้วว่าทำไมมันจะตอบสนองเหมือน Apache2
Alexis Wilke

คำตอบ:


1

ฉันพบ (ทางกลับ - ดูความคิดเห็น) ว่าฉันปิดกั้นทั้งหมด 127.0.0.0 ยกเว้นที่อยู่ 127.0.0.1

Debian และ Ubuntu กำหนดรายการในของคุณ/etc/hostsที่ 127.0.1.1 พร้อมชื่อโดเมนของคุณ คุณควรเห็นบางสิ่งเช่นนี้ที่จุดเริ่มต้นของ/etc/hostsไฟล์:

127.0.1.1     hostname.example.com hostname

ฉันต้องตรวจสอบไฟร์วอลล์ของฉันและจริง ๆ แล้วฉันตัดสินใจที่จะเปิดทั้งหมด 127.xxx เนื่องจากทั้งหมดเป็นส่วนหนึ่งของเครือข่ายส่วนตัวและเป็น IP ที่ปลอดภัยทั้งหมด


1
นี่อาจไม่ใช่มหาสมุทรเฉพาะถ้าคุณใช้ Debian หรือ Ubuntu Debian ใช้ที่อยู่วนรอบนั้นเพื่อแก้ไขปัญหาสำหรับปัญหาที่เกี่ยวข้องกับคำพังเพยบางข้อ ข้อผิดพลาดสำหรับการอ้างอิง: bugs.debian.org/cgi-bin/bugreport.cgi?bug=719621
Spooler

ดี ... ฉันสังเกตเห็นเซิร์ฟเวอร์ที่ DigitalOcean แต่ฉันเห็นว่ามันเป็นของเดเบียน ฉันแก้ไขคำตอบแล้วและใช้ Debian & Ubuntu แทน
Alexis Wilke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.