หน้าเว็บ

วันพฤหัสบดีที่ 13 สิงหาคม พ.ศ. 2552

จำกัดช่วง port ของ RPC

ปกติแล้ว RPC (Remote Procedure Call) นั้นจะใช้ช่วง port แบบ random ในช่วง 1024 - 65535 ซึ่งถ้าเครื่องที่เป็น server แล้วต้องการให้ผู้อื่นติดต่อผ่าน RPC นั้นจะต้องเปิด port เป็นจำนวนมาก
ดังนั้นวิธีแก้ไขคือทำการจำกัดช่วง port ของ RPC ที่จะ random ให้น้อยๆ โดยวิธีการดังนี้

1. เข้า Registry Editor
Start -> Run -> regedt32

(ต่อไปนี้จะมีการเปลี่ยนแปลง register ดังนั้นควร back up register ไว้ก่อน โดยเลือกที่ File -> export แล้ว save เก็บไว้ที่ใดก็ได้)

2. ไปที่ HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\Internet (ในกรณีที่ไม่มี Internet ให้ใช้คำสั่ง new key เพื่อเพิ่ม key Internet ใต้ Rpc)

3. คลิกที่ Internet แล้วในหน้าต่างฝั่งขวา ให้คลิกขวา เลือก New -> Multi-String Value แล้วตั้งชื่อว่า Ports

4. ดับเบิ้ลคลิกที่ Ports ที่สร้างขึ้น แล้วให้ระบุช่วง port ในช่อง Value data: เช่น 5000-5100 แล้วกด ok (ควรกำหนดอย่างน้อย 100 port เพราะมีหลาย service ที่จำเป็นต้องใช้ RPC)

5. ในหน้าต่างฝั่งขวา คลิกขวา เลือก New -> String Value แล้วชื่อว่า PortsInternetAvailable

6. ดับเบิลคลิกที่ PortsInternetAvailable แล้วใส่ Value Data: เป็น Y

7. ทำเหมือนข้อ 5 และ 6 แต่ตั้งชื่อว่า UseInternetPorts และให้ Value Data เป็น Y

8. Restart เครื่อง server เป็นอันเรียบร้อย

ระบบที่ทดสอบ
OS: Windows Server 2003 R2

อ้างอิง
http://support.microsoft.com/kb/154596

เปิด Port Windows Firewall แบบระบุ Range

บน Windows ถ้าต้องการเปิด port firewall ปกตินั้น ก็เข้าไปที่ control panel -> windows firewall
แล้วจัดการเพิ่มที่ exception แต่ปัญหาก็คือเพิ่มได้ทีละ port หรือทีละ program เท่านั้น

แต่ถ้าต้องการเพิ่มทีเดียวหลาย port หรือเพิ่มแบบเป็นช่วง port ก็สามารถทำได้เช่นกัน แต่ทำโดยใช้ script ผ่านทาง command line
1. เข้า command line (Start -> Run -> cmd)
2. สั่งคำสั่ง
for /L %i in (beginport, 1, endport)
do netsh firewall add portopening protocol %i "string"

โดย แทน beginport ด้วย หมายเลข port เริ่มต้น
endport ด้วยหมายเลข port สุดท้าย
protocol ด้วยโปรโตคอลที่ต้องการ คือ TCP หรือ UDP
string ด้วยชื่อที่ต้องการที่ให้ปรากฏใน exception ของ windows firewall
เช่น ผมต้องการเปิด port สำหรับ RPC ที่ port 5000-5100 ซึ่งใช้ TCP ก็สั่งว่า
for /L %i in (5000, 1, 5100)
do netsh firewall add portopening TCP %i "RPC %i"

เป็นต้น

ระบบที่ทดสอบ
OS: Windows Server 2003 R2

ที่มา
http://forums.techarena.in/server-networking/890789.htm