รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

เพื่อแก้ไขปัญหาการโทร Nextcloud Talk ที่เชื่อมต่อไม่ได้หรือมีปัญหาเสียงออกทางเดียว ให้กำหนดค่ารีเลย์ TURN ที่สามารถเข้าถึงได้ ป้อนชื่อโฮสต์ พอร์ต และรหัสลับที่ใช้ร่วมกันในการตั้งค่า Talk และอนุญาตการรับส่งข้อมูลผ่านทั้งตัวรับฟัง TURN และพอร์ตรีเลย์ TURN จะให้เส้นทางรีเลย์แก่ WebRTC เมื่อการเชื่อมต่อโดยตรงล้มเหลว แต่จะไม่แก้ไขปัญหา Wi-Fi อ่อน การสูญเสียแพ็กเก็ต หรือเครือข่ายที่โอเวอร์โหลด

ตัวอย่างประกอบ:ลองนึกภาพองค์กรขนาดเล็กที่มีพนักงานสามารถเข้าร่วมการสนทนาผ่าน Talk จากที่ทำงานได้ แต่ไม่สามารถส่งวิดีโอจากเครือข่ายของโรงแรมได้อย่างน่าเชื่อถือ ไฟร์วอลล์ของโรงแรมอาจปิดกั้นเส้นทางสื่อโดยตรง ตัวอย่างด้านล่างนี้จะติดตามผู้ดูแลระบบขณะที่พวกเขาตรวจสอบเส้นทาง กำหนดค่า coTURN และทดสอบการเปลี่ยนแปลง นี่ไม่ใช่รายงานการใช้งานจริงหรือการทดสอบจริง

1. ยืนยันว่ารีเลย์เป็นวิธีแก้ปัญหาที่ถูกต้อง

Nextcloud Talk จะพยายามเชื่อมต่อผู้เข้าร่วมโดยตรงก่อน STUN ช่วยให้อุปกรณ์ต่างๆ ค้นหาที่อยู่และพอร์ตสาธารณะที่สร้างโดยเราเตอร์ เมื่อไฟร์วอลล์หรือ NAT ที่จำกัดยังคงขัดขวางเส้นทางโดยตรง TURN จะทำหน้าที่เป็นตัวกลางในการส่งต่อสื่อ เซิร์ฟเวอร์ STUN เพียงอย่างเดียวไม่สามารถทำหน้าที่ส่งต่อนี้ได้

เปรียบเทียบการโทรภายในเครือข่ายสำนักงานกับการโทรจากเครือข่ายอื่น เช่น ฮอตสปอตโทรศัพท์ หากการโทรเชื่อมต่อได้ในที่หนึ่ง แต่ไม่สามารถส่งสัญญาณเสียงหรือวิดีโอได้ซ้ำๆ ในสถานที่ที่มีข้อจำกัด TURN เป็นขั้นตอนการตรวจสอบที่เหมาะสมต่อไป หากการโทรเชื่อมต่อได้ แต่ภาพไม่ชัดหรือกระตุกในทุกเครือข่าย ให้วัดแบนด์วิดท์ การสูญเสียแพ็กเก็ต คุณภาพ Wi-Fi และภาระการทำงานของ CPU ก่อน การส่งสื่อผ่านรีเลย์มากขึ้นอาจเพิ่มภาระการทำงานและไม่ได้เพิ่มประสิทธิภาพแต่อย่างใด

หน้าการตั้งค่าผู้ดูแลระบบแบบง่าย มีช่องกำหนดค่าว่างเปล่า และช่องข้อมูลประจำตัวถูกปิดบังไว้
ภาพประกอบ: หน้าผู้ดูแลระบบที่มีช่องสำหรับกำหนดค่าและข้อมูลประจำตัวที่ถูกปิดบังไว้ ซึ่งแสดงถึงการตั้งค่าที่ต้องตรวจสอบก่อนทำการทดสอบการโทร

บันทึกเวอร์ชันของ Talk, ชื่อโฮสต์และพอร์ตของ TURN, ว่าโฮสต์ TURN อยู่หลัง NAT หรือไม่ และว่ามีการติดตั้ง High Performance Backend (HPB) หรือไม่ เก็บข้อมูลนี้เป็นความลับ คำสั่งด้านล่างนี้ใช้กับ Linux ที่มี systemd; เส้นทางของแพ็กเกจอาจแตกต่างกันไป

2. กำหนดค่า coTURN ด้วยการตรวจสอบสิทธิ์แบบใช้รหัสลับร่วมกัน

เอกสารประกอบการใช้งาน Talk ของ Nextcloud แนะนำให้ใช้ coTURN เวอร์ชัน 4.5.0.8 หรือใหม่กว่า เนื่องจากเวอร์ชันเก่ามีปัญหาเกี่ยวกับซ็อกเก็ต UDP IPv6 ติดตั้งจากที่เก็บซอฟต์แวร์ของระบบปฏิบัติการของคุณและค้นหาไฟล์การกำหนดค่าที่ใช้งานอยู่ (มักจะเป็น/etc/turnserver.conf) สร้างรหัสลับแบบสุ่มบนโฮสต์ TURN:

openssl rand -hex 32

บันทึกค่าดังกล่าวไว้ในโปรแกรมจัดการรหัสผ่านหรือที่เก็บการกำหนดค่าที่ได้รับการป้องกัน ในการกำหนดค่า coTURN ที่ใช้งานอยู่ ให้ตั้งค่าตัวรับฟัง การตรวจสอบสิทธิ์ด้วยรหัสลับร่วม และโดเมน แทนที่ชื่อโฮสต์และรหัสลับในตัวอย่างด้วยค่าจริง:

listening-port=3478
fingerprint
use-auth-secret
static-auth-secret=REPLACE_WITH_RANDOM_SECRET
realm=turn.example.org
total-quota=0
bps-capacity=0
stale-nonce
no-multicast-peers

เอกสารประกอบการสนทนาแสดงข้อมูลlt-cred-mechเฉพาะสำหรับ coTURN เวอร์ชันก่อน 4.5.0.8 เท่านั้น ควรทำการอัปเกรดการติดตั้งเวอร์ชันเก่าแทนที่จะคัดลอกการตั้งค่าเดิมโดยไม่ตรวจสอบให้ดี หาก coTURN อยู่หลัง NAT ให้กำหนดค่าที่อยู่สาธารณะและที่อยู่รีเลย์ตามที่ระบุไว้ในคู่มือการติดตั้ง และตรวจสอบให้แน่ใจว่าชื่อ DNS สามารถแปลงเป็นที่อยู่ IP ที่ผู้เข้าร่วมสามารถเข้าถึงได้

หน้าต่างแก้ไขโค้ดสีเข้มที่มีเส้นกำหนดค่าแบบนามธรรมและไฮไลต์การตั้งค่า
ภาพประกอบ: โปรแกรมแก้ไขการกำหนดค่าที่แสดงการตั้งค่าตัวรับฟังและวิธีการตรวจสอบสิทธิ์ของ coTURN โปรดใช้ชื่อพารามิเตอร์ที่ระบุไว้ในเอกสาร ไม่ใช่ค่าที่อนุมานจากภาพ

3. เปิดเส้นทางรับฟังและส่งต่อสัญญาณ

อนุญาตให้พอร์ตผู้ฟัง TURN (3478 ในตัวอย่างนี้) ผ่านไฟร์วอลล์ของโฮสต์และต้นทางสำหรับ UDP และ TCP สำหรับ TLS นั้น coTURN ยังต้องการใบรับรองและคีย์ส่วนตัวที่ถูกต้อง และ Talk ต้องใช้turns:พอร์ต 443 สามารถเข้าถึงเครือข่ายที่มีข้อจำกัดมากกว่าได้ แต่ควรตรวจสอบความขัดแย้ง: HPB อาจต้องการพอร์ตนั้นด้วย ซึ่งต้องใช้ที่อยู่ IP หรือโฮสต์แยกต่างหาก

สื่อต่างๆ ก็ใช้พอร์ตรีเลย์เช่นกัน อนุญาตช่วงพอร์ต UDP รีเลย์ coTURN ในไฟร์วอลล์ของโฮสต์ กลุ่มความปลอดภัยบนคลาวด์ และเราเตอร์ หากคุณตั้งค่าmin-portและmax-portให้เปิดช่วงพอร์ตนั้นอย่างแม่นยำ การอนุญาตเฉพาะผู้รับฟังไม่เพียงพอ สำหรับโฮสต์ TURN ที่อยู่หลัง NAT ให้ส่งต่อทั้งช่วงพอร์ตผู้รับฟังและรีเลย์ และกำหนดค่าที่อยู่สาธารณะ/รีเลย์ รักษาข้อจำกัดของ peer coTURN เพื่อป้องกันการเข้าถึงบริการภายในที่ไม่เกี่ยวข้อง

ตารางกฎไฟร์วอลล์แบบง่ายที่มีการเปิดใช้งานรายการเครือข่ายขาเข้าและขาออก
ภาพประกอบ: รายการไฟร์วอลล์แสดงถึงทราฟฟิกของผู้รับฟังและผู้รับส่งต่อที่ต้องได้รับอนุญาต ช่วงพอร์ตที่แน่นอนขึ้นอยู่กับการกำหนดค่า coTURN

หลังจากแก้ไขเสร็จแล้ว ให้รีสตาร์ท coTURN และตรวจสอบว่าบริการทำงานอยู่ ตัวอย่างเช่น บนโฮสต์ systemd:

sudo systemctl restart coturn
sudo systemctl status coturn --no-pager

สถานะการให้บริการยืนยันว่ากระบวนการเริ่มต้นแล้ว แต่ไม่ได้พิสูจน์ว่าเบราว์เซอร์ระยะไกลสามารถเข้าถึงรีเลย์ได้ ตรวจสอบไฟร์วอลล์ของโฮสต์และผู้ให้บริการแยกกัน และตรวจสอบบันทึก coTURN เพื่อหาข้อผิดพลาดในการเชื่อมต่อ ความล้มเหลวในการตรวจสอบสิทธิ์ หรือข้อความเกี่ยวกับโควต้าการจัดสรร

4. เพิ่มเซิร์ฟเวอร์ในแอป Talk และทดสอบการโทรจริง

ในฐานะผู้ดูแลระบบ ให้เปิดการตั้งค่าการดูแลระบบ > Talkป้อนชื่อโฮสต์และพอร์ต TURN เช่นturn.example.org:3478และรหัสลับเดียวกันกับstatic-auth-secretอย่าใส่https://, turn:, หรือturns:ในช่องชื่อโฮสต์ ให้เลือกรูปแบบในส่วนควบคุมของ Talk เปิดใช้งาน UDP และ TCP เมื่อเป็นไปได้ ใช้turns:หลังจากกำหนดค่า TLS ใน coTURN แล้วเท่านั้น

บันทึกและเรียกใช้การตรวจสอบ TURN ในตัวของ Talk หากมี จากนั้นโทรจากเครือข่ายที่มีข้อจำกัดไปยังเครือข่ายอื่นและตรวจสอบเสียงและวิดีโอแบบสองทาง ตรวจสอบบันทึก coTURN ระหว่างการโทรเพื่อดูการจัดสรรหรือความล้มเหลวในการตรวจสอบสิทธิ์ ในตัวอย่างนี้ ผู้ดูแลระบบเปรียบเทียบการเชื่อมต่อที่คล้ายกับโรงแรมกับการโทรในสำนักงาน

หน้าต่างการสนทนาทางวิดีโอที่มีผู้เข้าร่วมสองคนและปุ่มควบคุมการโทร
ภาพประกอบ: หน้าต่างการโทรแบบสองฝ่ายแสดงถึงการตรวจสอบแบบครบวงจรหลังจากบันทึกการตั้งค่า TURN แล้ว โปรดยืนยันว่าผู้เข้าร่วมแต่ละคนสามารถส่งและรับสื่อได้

หากการตรวจสอบล้มเหลว ให้เปรียบเทียบชื่อโฮสต์ พอร์ต และรหัสลับ จากนั้นตรวจสอบ DNS กฎไฟร์วอลล์ ช่วงรีเลย์ UDP การส่งต่อ NAT และบันทึกบริการ การตรวจสอบขั้นพื้นฐานอาจพลาดปัญหาเส้นทางรีเลย์ ดังนั้นให้ทดสอบจากเครือข่ายภายนอก สำหรับการวินิจฉัยเฉพาะ TURN ให้ทำตามขั้นตอนเฉพาะเบราว์เซอร์ของ Talk วิธีการคอนโซลเป็นเพียงชั่วคราวและพฤติกรรมของเบราว์เซอร์จะแตกต่างกัน

TURN ไม่รองรับการโทรแบบกลุ่มขนาดใหญ่ สำหรับกลุ่มขนาดใหญ่ Nextcloud ระบุว่าการโทรที่มีผู้ใช้มากกว่าประมาณ 5-10 คน จำเป็นต้องใช้ HPB หาก TURN เชื่อมต่อได้ แต่คุณภาพวิดีโอยังไม่ดี ให้ตรวจสอบแบนด์วิดท์ การสูญเสียแพ็กเก็ต การรบกวนสัญญาณ Wi-Fi และภาระงานของเซิร์ฟเวอร์ก่อนที่จะเปลี่ยนโควต้าการส่งต่อ

การตรวจสอบ

การแก้ไขปัญหานี้ได้รับการสนับสนุนจากสัญญาณที่สังเกตได้สามประการ ได้แก่ แอป Talk ยอมรับการกำหนดค่า TURN บันทึกของ coTURN แสดงการจัดสรรรีเลย์ระหว่างการโทร และผู้เข้าร่วมในเครือข่ายที่แตกต่างกันสามารถแลกเปลี่ยนเสียงและวิดีโอได้ทั้งสองทิศทาง หากการโทรภายในสำนักงานใช้งานได้เท่านั้น หรือบันทึกไม่แสดงคำขอขาเข้า แสดงว่าเส้นทางสาธารณะยังคงถูกบล็อก หรือโฮสต์และพอร์ตที่กำหนดค่าไว้ไม่ตรงกัน หากสื่อไหลผ่านได้ แต่คุณภาพยังคงต่ำ แสดงว่าการเชื่อมต่อ TURN ทำงานได้ และปัญหาที่เหลืออยู่น่าจะอยู่ที่อื่นในเครือข่ายหรือโครงสร้างพื้นฐานการโทร

แหล่งอ้างอิง: การกำหนดค่าเซิร์ฟเวอร์ Nextcloud Talk TURN ; การกำหนดค่า Nextcloud Talk coTURN ; วิกิการกำหนดค่า coTURN

ฝากความเห็น

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

รับสาย Nextcloud Talk ได้เมื่อการเชื่อมต่อ Direct Media ล้มเหลว

กำหนดค่าและตรวจสอบรีเลย์ TURN ที่สามารถเข้าถึงได้สำหรับ Nextcloud Talk เมื่อไฟร์วอลล์หรือ NAT ที่จำกัดปิดกั้นสื่อการโทรโดยตรง

ล้างคำเตือนเกี่ยวกับความสมบูรณ์ของข้อมูลใน Nextcloud โดยการกู้คืนไฟล์ที่ถูกต้อง

ใช้รายงานไฟล์ที่ไม่ถูกต้องเพื่อระบุโค้ด Nextcloud ที่เปลี่ยนแปลง หายไป หรือเกินมา กู้คืนไฟล์ที่เชื่อถือได้อย่างปลอดภัย และตรวจสอบผลลัพธ์

เชื่อมต่อ Gmail หรือ Microsoft 365 กับ Nextcloud Mail โดยใช้ OAuth2

ตั้งค่า OAuth2 สำหรับ Nextcloud Mail กับ Gmail หรือ Microsoft 365 ตรวจสอบการรับและส่ง และแก้ไขปัญหาการขอความยินยอมและข้อผิดพลาด SMTP ทั่วไป

แก้ไขปัญหา Nextcloud ค้างในโหมดบำรุงรักษาอย่างปลอดภัยด้วย OCC

แก้ไขปัญหา Nextcloud ค้างในโหมดบำรุงรักษาอย่างปลอดภัยด้วย OCC

ใช้ OCC เพื่อกู้คืนการเข้าถึง Nextcloud ตรวจสอบสถานะการย้ายฐานข้อมูล และเลือกคำสั่งที่ถูกต้องสำหรับการติดตั้งแบบเก็บถาวร Docker หรือ Snap

ตั้งค่าการเข้าสู่ระบบ Nextcloud LDAP และ Active Directory

เชื่อมต่อ Nextcloud กับ LDAP หรือ Active Directory จำกัดการเข้าถึงด้วยตัวกรองผู้ใช้และกลุ่ม และตรวจสอบการรับรองความถูกต้องที่ปลอดภัยก่อนเปิดใช้งาน

กำหนดให้ผู้ใช้ Nextcloud ต้องใช้การยืนยันตัวตนแบบสองขั้นตอน

เปิดใช้งานผู้ให้บริการ 2FA ที่รองรับ เตรียมการกู้คืนบัญชี จากนั้นกำหนดให้ต้องใช้การตรวจสอบสิทธิ์แบบสองขั้นตอนสำหรับทุกคนหรือกลุ่ม Nextcloud ที่เลือกไว้

ปกป้องเอกสาร Collabora CODE ที่จัดเก็บไว้ด้วยการเข้ารหัสพื้นที่จัดเก็บข้อมูล

รักษาความปลอดภัยของไฟล์ที่แก้ไขใน Collabora CODE โดยการเข้ารหัสเลเยอร์การจัดเก็บข้อมูล ปกป้องข้อมูลชั่วคราว และตรวจสอบการเข้ารหัสและการกู้คืน

ติดตั้ง Collabora CODE บนสถาปัตยกรรม ARM64 ด้วยอิมเมจที่ถูกต้อง

ติดตั้ง Collabora CODE บนสถาปัตยกรรม ARM64 ด้วยอิมเมจที่ถูกต้อง

ตรวจสอบสถาปัตยกรรมโฮสต์ของคุณ ยืนยันว่าแท็ก CODE เผยแพร่ ARM64 ลบการตั้งค่า AMD64 ที่บังคับใช้ และแยกข้อผิดพลาดของรูปภาพออกจากปัญหาด้านสิทธิ์หรือหน่วยความจำ

เชื่อมต่อ Collabora Online กับ ownCloud Infinite Scale

ตั้งค่าการเชื่อมต่อ WOPI ระหว่าง Collabora Online และ ownCloud Infinite Scale กำหนดค่า URL บริการที่ถูกต้อง และตรวจสอบว่าการแก้ไขเอกสารได้รับการบันทึกแล้ว

การส่งออกไฟล์บล็อกใน Collabora CODE ผ่าน WOPI

ป้องกันการส่งออกเอกสารใน Collabora Online CODE โดยการตั้งค่าสิทธิ์ WOPI DisableExport จากนั้นตรวจสอบว่าโฮสต์และผู้แก้ไขบังคับใช้สิทธิ์นี้หรือไม่