เหตุใดการจับมือ 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.