หน้าเว็บ

วันพฤหัสบดีที่ 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

วันจันทร์ที่ 15 มิถุนายน พ.ศ. 2552

วิธีดูว่า process ไหนใช้ (listen) port ไหนอยู่

บน linux ปกติเวลาที่ต้องการดูว่า port ไหนถูกใช้งานอยู่บ้าง ก็มักจะใช้คำสั่ง nbstat กันดังนี้
netstat -tunlp
โดย
- t คือแสดงที่เป็น TCP
- u คือแสดงที่เป็น UDP
- n คือไม่ต้อง resolve network IP address name หรือ หมายเลข port
- l คือให้แสดงเฉพาะ port ที่กำลังรอฟังอยู่ (ไม่ต้องแสดง port ที่ established connection แล้ว)
- p ให้แสดงว่า process ไหนเป็นคนใช้งาน port นั้นๆอยู่

หรือ ถ้าเรารู้หมายเลข port อยู่แล้วและต้องการรู้ว่าใครเรียกใช้โดยไม่ต้องค้นจากคำตอบของ netstat ก็ให้ใช้คำสั่ง fuser ได้ เช่น
fuser -n tcp 80
เพื่อดูว่าใครใช้ TCP port 80 อยู่ เป็นต้น

ระบบที่ทดสอบ
OS: CentOS 5.0

วันพุธที่ 26 พฤศจิกายน พ.ศ. 2551

วิธีการเปิด Port แบบระบุ range ใน Windows Firewall

ปกติแล้ว Windows Firewall นั้นจะไม่มีให้เราใส่ช่วงของ Port ที่ต้องการเปิดได้ ถ้าต้องเปิด port จำนวนมากๆก็เหนื่อยอยู่

แต่ถ้าเขียน script run บน command line ก็จะช่วยให้สบายมากขึ้น

สมมติว่าถ้าเราต้องการเปิด port ช่วง 5000 ถึง 5100 เพื่อใช้สำหรับ FTP ก็สามารถสั่งได้แบบนี้

for /L %i in (5000,1,5100) do netsh firewall add portopening TCP %i "FTP %i"
โดยคำว่า "FTP %i" นั้นใช้เป็น prefix ว่าตั้งชื่อว่า "FTP วรรค หมายเลขport"

ระบบที่ทดสอบ

OS: Windows Server 2003

วันอังคารที่ 28 ตุลาคม พ.ศ. 2551

คำสั่งที่ใช้ในการตรวจสอบ port ที่เปิดอยู่ใน FreeBSD

ถ้าต้องการรู้ว่าโปรแกรมอะไรมีการเปิด port อะไรไว้บ้าง ก็จะมีคำสั่งคือ sockstat
โดยมี option ที่ใช้บ่อยๆ 4 ตัวคือ
-4 ใช้สำหรับแสดง IPv4 sockets.

-6 ใช้สำหรับแสดง IPv6 sockets.

-c ใช้สำหรับแสดง port ที่มีการเชื่อมต่อ (c = connected)

-l ใช้สำหรับแสดง port ที่เปิดไว้ (l = listen)

เช่น
sockstat -4 -l
ใช้สำหรับแสดง port ทั้งหมดที่เปิดไว้ที่ใช้ IPv4