← บทความทั้งหมดบทความ

วิธีแก้เมื่อย้าย 3CX (IP PBX) เข้า DMZ แล้วโทรไม่มีเสียง

🕐 2 สิงหาคม 2569
วิธีแก้เมื่อย้าย 3CX (IP PBX) เข้า DMZ แล้วโทรไม่มีเสียง

โทรศัพท์บนโต๊ะคุยกันได้ตามปกติ แต่พอโทรจากแอป 3CX บนมือถือเข้ามา กลับเงียบทั้งสองฝั่ง ทั้งที่เปิดพอร์ตครบตามคู่มือไปแล้ว

ปัญหานี้เกิดขึ้นหลังย้ายตู้สาขา (IP PBX) ไปอยู่คนละวงกับโทรศัพท์ และต้นเหตุคือช่วงพอร์ตที่คู่มือของ 3CX ไม่ได้พูดถึงเอาไว้เลย

เช็กก่อนว่าอาการตรงกับกรณีนี้ไหม

จุดสังเกตหลักคือมันไม่ได้พังทั้งหมด แต่จะพังเฉพาะสายที่ต้องวิ่งผ่านตัวตู้สาขาเท่านั้น

  • โทรศัพท์บนโต๊ะโทรหากันเอง ได้ยินตามปกติ
  • โทรจากแอปมือถือนอกออฟฟิศเข้าเบอร์ภายใน เงียบทั้งสองฝั่ง
  • สายต่อติด กริ่งดัง กดรับได้ แต่ไม่มีเสียง
  • เพิ่งย้าย IP PBX ออกจากวง LAN เดิม ไปอยู่คนละวงกับโทรศัพท์ เช่นย้ายเข้า DMZ

ถ้าตรงทั้งสี่ข้อ ก็เกือบจะฟันธงได้เลย เพราะถ้า firewall บล็อกผิดพลาดแบบทั่วไป โทรศัพท์จะ register ไม่ได้ตั้งแต่แรก และถ้าฝั่ง SIP มีปัญหา สายก็จะต่อไม่ติดเลย

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

ทำไมเปิดพอร์ตครบตามคู่มือแล้วยังไม่หาย

เพราะ 3CX ไม่ได้ใช้ช่วงพอร์ตเสียงเพียงช่วงเดียว แต่จะเลือกช่วงจากที่อยู่ของปลายทาง

  • ปลายทางเป็น IP ภายใน เช่น 10.x, 172.16-31.x, 192.168.x จะใช้ 7000 ถึง 8999
  • ปลายทางเป็น IP สาธารณะ ถึงจะใช้ 9000 ถึง 10999 อย่างที่คู่มือบอกไว้

โทรศัพท์บนโต๊ะมี IP ภายในเสมอ ตู้สาขาจึงเปลี่ยนไปใช้ช่วง 7000 ถึง 8999 ให้เองโดยอัตโนมัติ แต่ช่วงนี้ไม่มีอยู่ในรายการพอร์ตที่คู่มือบอกให้เปิด

ช่วงพอร์ตที่คู่มือ 3CX ระบุ เทียบกับที่ตู้สาขาใช้จริงกับโทรศัพท์ในวง LAN

เอกสารไม่ได้เขียนผิด เพียงแต่มันเขียนขึ้นบนสมมติฐานว่าตู้สาขาอยู่วงเดียวกับโทรศัพท์ ซึ่งไดอะแกรมทุกรูปในคู่มือก็วาดไว้แบบนั้น ตอนที่ยังอยู่วงเดียวกัน เสียงไม่เคยวิ่งผ่าน firewall จึงไม่มีใครเจอปัญหา พอย้ายเข้า DMZ เงื่อนไขนั้นก็ไม่จริงอีกต่อไป แต่ตัวตู้สาขาไม่รู้ เพราะมันยังมองเห็น IP ภายในเหมือนเดิม

เครื่องมือ 3CX Firewall Checker ก็ช่วยจับเคสนี้ไม่ได้ เพราะมันทดสอบเส้นทางจากอินเทอร์เน็ตเข้ามาหาตู้สาขา ซึ่งเป็นคนละเส้นทางกับเสียงที่วิ่งระหว่างตู้สาขากับโทรศัพท์ในออฟฟิศ กรณีนี้จึงผ่านทุกข้อ ทั้งที่ยังใช้งานไม่ได้

เปิด log ของ implicit deny แล้วจะเห็นสาเหตุทันที

สิ่งที่ทำให้เห็นต้นเหตุภายในสองนาที หลังจากไล่หามาทั้งวัน คือการเปิด log ของ implicit deny บน firewall

การที่ไม่เห็น deny ใน log ไม่ได้แปลว่าไม่มีอะไรโดนบล็อก เพราะโดยค่าเริ่มต้น firewall ส่วนใหญ่จะไม่ log packet ที่ตก implicit deny ปัญหาจึงไม่ทิ้งร่องรอยอะไรไว้เลย

พอเปิดแล้วโทรทดสอบ จะเห็น packet โดนทิ้งสองทิศทางพร้อมกัน ทั้งขาที่ตู้สาขาส่งเสียงไปหาโทรศัพท์ และขาที่โทรศัพท์ส่งกลับมา ซึ่งอธิบายอาการเงียบทั้งสองฝั่งได้พอดี และพอร์ตที่เห็นในบรรทัดนั้นจะอยู่ในช่วง 7000 กว่าๆ ไม่ใช่ 9000 อย่างที่คาดไว้

วิธีแก้

เพิ่มช่วงพอร์ต UDP 7000 ถึง 8999 เข้าไปใน rule เดิมที่อนุญาตให้ VLAN โทรศัพท์คุยกับตู้สาขาอยู่แล้ว ไม่ต้องสร้าง rule ใหม่

บน FortiGate ทำผ่านหน้าเว็บได้ตามนี้

  • ไปที่ Policy & Objects แล้วเลือก Services
  • สร้าง service ใหม่ ตั้งชื่อเช่น PBX-LAN-RTP เลือก Protocol เป็น UDP แล้วใส่ Destination Port เป็น 7000-8999
  • กลับไปที่ Firewall Policy เปิด rule ที่อนุญาต VLAN โทรศัพท์ ไปยังตู้สาขา
  • เพิ่ม service ที่สร้างไว้เข้าไปในช่อง Service โดยไม่ต้องลบของเดิม

ถ้าถนัดใช้คำสั่ง ก็สร้าง firewall service custom ที่มี udp-portrange เป็น 7000-8999 แล้ว append service นั้นเข้าไปใน policy เดิม

ไม่ต้องเปิดขาเข้า ถ้ายังไม่จำเป็น

แก้แค่ทิศทางขาออกก็พอ ไม่ต้องเปิดขาเข้าตามไปด้วย

หลายคนจะเปิดสองทิศทางไปเลย ทั้งจากโทรศัพท์ไปตู้สาขา และจากตู้สาขากลับมาหาโทรศัพท์ ซึ่งกว้างเกินความจำเป็น เพราะ IP PBX เป็นเครื่องที่เปิดรับจากอินเทอร์เน็ตอยู่แล้ว การเปิดขาเข้าเท่ากับเปิดทางให้มันเดินเข้าหาเครือข่ายภายในได้ ถ้าวันหนึ่งมันโดนเจาะ

firewall สมัยนี้เป็นแบบ stateful พอเราอนุญาตให้โทรศัพท์ส่งไปหาตู้สาขา ระบบจะจำ session นั้นเอาไว้ เสียงขากลับจากตู้สาขาก็คือคู่สนทนาเดิมที่สลับด้านกัน มันจึงผ่านได้เองในฐานะ reply

ที่เดิมพังทั้งสองทิศ ไม่ใช่เพราะขาด rule สองข้อ แต่เป็นเพราะขาออกโดนบล็อก เลยไม่เคยมี session เกิดขึ้นให้ขากลับอ้างอิงได้

การแก้ที่จุดเดียวยังครอบคลุม softphone บน Wi-Fi ไปด้วยในตัว ซึ่งเรื่องนี้สำคัญ เพราะแอปบนมือถือจะสุ่มพอร์ตของตัวเอง เราจึงเขียน rule ขาเข้าแบบเจาะจงให้มันไม่ได้อยู่แล้ว

ทดสอบให้ครบทุกทิศทางก่อนปิดงาน

อย่าเพิ่งจบแค่โทรแล้วได้ยิน เพราะยังมีอีกกรณีที่ตู้สาขาเป็นฝ่ายส่งเสียงมาทางเดียว ซึ่งจะไม่มี packet จากปลายทางมาเปิด session ให้

  • โทรจากมือถือนอกออฟฟิศเข้าเบอร์ภายใน แล้วลองพูดทั้งสองฝั่ง
  • โทรจากเบอร์ภายในออกไปหามือถือ
  • กดพักสายจากทั้งสองฝั่ง แล้วฟังว่าได้ยินเพลงรอสายไหม
  • โทรเข้าระบบตอบรับอัตโนมัติ แล้วฟังเสียงประกาศ
  • โทรออกเบอร์นอก และลองรับสายจากภายนอก

สรุปสำหรับคนที่กำลังจะย้าย IP PBX

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

  • เปิด UDP 7000 ถึง 8999 จาก VLAN โทรศัพท์ไปหาตู้สาขา ตั้งแต่วันแรกไปเลย ไม่ต้องรอให้เสียงหายก่อน
  • ปิด SIP ALG บน firewall ตามที่ 3CX แนะนำ แล้วตรวจด้วยว่า session helper ของ SIP ถูกลบออกไปจริง
  • เปิด log ของ implicit deny ทิ้งไว้ถาวร คุ้มมากเมื่อเทียบกับเวลาที่ต้องเสียไปตอนหาสาเหตุไม่เจอ
  • แก้ขาออกก่อนเสมอ แล้วค่อยดูจาก log ว่ายังจำเป็นต้องเปิดขาเข้าจริงหรือเปล่า

ปรึกษาทีมงาน MATLOG

MATLOG ดูแลระบบโทรศัพท์ IP PBX ควบคู่ไปกับงาน network และ firewall ตั้งแต่ออกแบบวางระบบ ย้ายตู้สาขา ไปจนถึงตามแก้ปัญหาเสียงขาดหาย ทำได้ทั้งแบบรีโมทและเข้าหน้างาน

ถ้าระบบโทรศัพท์มีปัญหาแล้วไม่แน่ใจว่าติดตรงไหน ปรึกษาทีมงานได้เลย เรายินดีช่วยประเมินให้ก่อนตัดสินใจ