บังคับให้ออกอากาศ IPv4 UDP บนอินเทอร์เฟซเครือข่ายทั้งหมดบน Windows 7 และใหม่กว่า
ดาวน์โหลดรุ่นล่าสุด
หากคุณทำงานกับ Windows อาจทำให้คุณประหลาดใจที่แพ็กเก็ตการออกอากาศ IPv4 UDP ที่ส่งไปยังที่อยู่การออกอากาศทั่วโลก 255.255.255.255
(อินเทอร์เฟซเครือข่ายที่มีอยู่ทั้งหมด) จะไม่ถูกส่งไปยังอินเทอร์เฟซเครือข่ายที่มีอยู่ ทั้งหมด ที่มีอยู่ใน ระบบ.
เนื่องจากการใช้เครือข่าย Windows ของซ็อกเก็ต BSD ถือว่าแพ็กเก็ตดังกล่าวสามารถส่งไปยังอินเทอร์เฟซที่มีลำดับความสำคัญสูงสุดเท่านั้น (แพ็กเก็ต "ค่าเริ่มต้น") ลำดับความสำคัญของอินเทอร์เฟซเครือข่ายถูกกำหนดโดยค่าเมตริกซึ่ง (โดยปกติ) กำหนดโดยอัตโนมัติโดยระบบ อินเทอร์เฟซที่มีค่าเมตริกต่ำสุดจะเป็นอินเทอร์เฟซที่มีลำดับความสำคัญสูงสุด โดยปกตินี่คืออินเทอร์เฟซที่พีซีของคุณเชื่อมต่อกับอินเทอร์เน็ต (หรือเราเตอร์ที่บ้านของคุณ) คุณสามารถตรวจสอบค่าเมตริกที่กำหนดโดย Windows ให้กับอินเทอร์เฟซเครือข่ายทั้งหมดได้โดยการรันคำสั่งนี้ใน PowerShell:
Get-NetIPInterface
ไม่ว่าเหตุผลสำหรับพฤติกรรมนี้จะเป็นอย่างไร ก็มีผลกระทบร้ายแรงที่อินเทอร์เฟซเครือข่ายอื่นๆ ทั้งหมดจะไม่ได้รับแพ็กเก็ตการออกอากาศ UDP ทั่วโลก และแอปพลิเคชันบางตัวจะประสบปัญหาการเชื่อมต่อหากขึ้นอยู่กับแพ็กเก็ตดังกล่าวที่จะจัดส่งอย่างถูกต้อง
เรื่องนี้สำคัญอย่างไร? พิจารณาพีซีที่เชื่อมต่อกับเครือข่ายท้องถิ่นด้วยซับเน็ตมาตรฐาน 192.168.179.0/24 และ VPN พร้อมซับเน็ต 100.100.100.0/24 ขณะนี้ มีบริการที่ทำงานบนพีซีเครื่องนี้ ซึ่งไคลเอนต์ VPN ต้องเข้าถึงด้วย และบริการนี้อาศัยแพ็กเก็ตการออกอากาศ UDP ทั่วโลกสำหรับการสื่อสาร
โดยปกติแล้ววิธีเดียวที่จะแก้ไขปัญหานี้ใน Windows คือการเชื่อมโยงทั้งสองเครือข่าย แต่การเชื่อมโยงเป็นสิ่งที่ไม่พึงปรารถนาอย่างมาก เนื่องจากการทำเช่นนั้นจะทำให้ LAN ทั้งหมดของคุณถูกเปิดเผยต่อบุคคลที่เชื่อมต่อผ่าน VPN
BROADcast แก้ปัญหานี้อย่างดีด้วยการจับแพ็กเก็ตการออกอากาศ UDP ทั่วโลกที่ส่งไปยังเส้นทางหลัก (หรือที่เรียกว่าเส้นทาง "ที่ต้องการ") และเพียงแค่ถ่ายทอดไปยังอินเทอร์เฟซเครือข่ายอื่น ๆ ที่เหมาะสมทั้งหมดที่ Windows ตัดสินใจว่าจะผ่านไป
ในภาพหน้าจอด้านบน BROADcast กำลังจับแพ็คเก็ตการออกอากาศ UDP ทั่วโลกที่ส่งไปยังที่อยู่ LAN จริง 10.10.10.100
(ซึ่งเป็นเส้นทางที่ต้องการด้วย) และกำลังถ่ายทอดไปยังที่อยู่ VPN 100.100.100.1
หากไม่มี BROADcast ทำงาน แพ็กเก็ตจะยังคงส่งไปที่ 10.10.10.100
เท่านั้น โดยไม่สนใจส่วน VPN ของเครือข่ายโดยสิ้นเชิง
ตัวอย่างของซอฟต์แวร์ที่ต้องอาศัยฟังก์ชันการทำงานนี้อย่างมาก ได้แก่ แอปพลิเคชันแชทผ่าน LAN วิดีโอเกมที่มีผู้เล่นหลายคนบางเกม และแอปพลิเคชันกระจายอำนาจอื่น ๆ ที่ใช้สำหรับการทำงานร่วมกัน
หมายเหตุ: BROADcast ต้องการสิทธิ์ผู้ดูแลระบบจึงจะทำงานได้ เนื่องจากต้องจับแพ็กเก็ต UDP โดยใช้ซ็อกเก็ตดิบ และอนุญาตให้เฉพาะบัญชีที่ยกระดับเท่านั้น
BROADcast เป็นแอปพลิเคชันคอนโซล นอกจากนี้ยังสามารถทำงานในพื้นหลังเป็นบริการ Windows ได้อีกด้วย
เริ่มการถ่ายทอดแพ็กเก็ตการออกอากาศ UDP ทั่วโลก:
broadcast.exe -b
เพิ่ม -d
เพื่อแสดงข้อความวินิจฉัยแบบละเอียด (มีประโยชน์สำหรับการแก้ไขปัญหา):
broadcast.exe -b -d
แพ็กเก็ตการออกอากาศจะถูกส่งไปยังอินเทอร์เฟซเครือข่ายทั้งหมด ยกเว้นอินเทอร์เฟซเริ่มต้น ใช้ Ctrl+C เพื่อออกจาก BROADcast อย่างหมดจด
ในฐานะคุณสมบัติโบนัส BROADcast อนุญาตให้ทำให้อินเทอร์เฟซใดๆ เป็นค่าเริ่มต้น (หรือที่ต้องการ) โดยนำค่าเมตริกปัจจุบันของอินเทอร์เฟซที่คุณต้องการเปลี่ยนเป็นค่าเริ่มต้น และเพิ่มลงในค่าเมตริกอินเทอร์เฟซอื่นๆ ซึ่งทำให้เป็นค่าเมตริกที่ต่ำที่สุดในบรรดาทั้งหมด:
BROADcast.exe -i " Interface " -m
รันคำสั่งอีกครั้งโดยไม่มีอาร์กิวเมนต์ -m
เพื่อเลิกทำการเปลี่ยนแปลงค่าเมทริกทั้งหมด และเรียกคืนค่าที่ระบบจัดการโดยอัตโนมัติ:
BROADcast.exe -i " Interface "
“Interface” คือชื่ออินเทอร์เฟซเครือข่ายซึ่งสามารถค้นหา (และเปลี่ยนแปลง) ได้ในส่วน “Network and Sharing Center” ของ Windows Control Panel คุณสามารถเข้าถึงได้อย่างรวดเร็วโดยกด Win+R แล้วเปิด:
%windir%explorer.exe shell:::{992CFFA0-F557-101A-88EC-00DD010CCC48}
หากต้องการติดตั้ง (หรือถอนการติดตั้ง) BROADcast เป็นบริการ Windows ให้เรียกใช้ด้วยอาร์กิวเมนต์ที่เหมาะสม:
broadcast .exe [install | uninstall]
พื้นที่เก็บข้อมูล BROADcast มีตัวอย่างการกำหนดค่า OpenVPN และสคริปต์สำหรับการเรียกใช้ BROADcast หลังจากเริ่มต้นเซิร์ฟเวอร์ OpenVPN โดยใช้อุปกรณ์ TAP
โปรดทราบว่าหากคุณตั้งใจจะเริ่ม BROADcast จาก OpenVPN โดยใช้ฟังก์ชันสคริปต์เริ่ม/หยุด คุณต้องรัน OpenVPN ด้วยสิทธิ์ของผู้ดูแลระบบ เช่นเดียวกับ BROADcast
ด้วยเหตุนี้ ขอแนะนำอย่างยิ่งให้เริ่ม BROADcast แยกกันเป็นบริการ Windows แทน
แม้ว่าจะไม่เกี่ยวข้องโดยตรงกับการออกอากาศ BROADcast หรือ UDP เลย แต่ไม้ยันเครือข่าย Windows ที่มีประโยชน์อีกอย่างหนึ่งก็คือ ForceBindIP
ต่างจาก BROADcast ซึ่งให้การแก้ไขสำหรับโปรโตคอล UDP ForceBindIP ให้การแก้ไขที่คล้ายกันสำหรับโปรโตคอล TCP โดยการบังคับให้แอปพลิเคชันผูก (หรือฟัง) บนอินเทอร์เฟซเครือข่ายเฉพาะแทนที่จะเป็นอันที่แอปเลือกโดยอัตโนมัติ (ซึ่งมักจะไม่ใช่อันที่คุณ ต้องการ).
การสร้างซอฟต์แวร์ที่มีคุณภาพนั้นยากและใช้เวลานาน หากคุณพบว่า BROADcast มีประโยชน์ คุณสามารถซื้อ ☕!