Archive for December, 2011


แอดมินหลายๆ คน มักเจอคำถามนี้เหมือนกัน บทความนี้จึงขอนำเสนอวิธีต่างๆ และข้อดี ข้อเสีย ของแต่ละวิธีครับ

การทำงานของ proxy แบ่งตามมุมมองจากไคลเอนท์ได้ 2 กลุ่มหลักๆ คือ
A) Explicit Proxy
B) Transparent Proxy

Explicit Proxy

    เป็นการบอกให้ไคลเอนท์รู้ว่า proxy อยู่ที่ไหน และให้ส่งมาที่ proxy ก่อน

    1) Manual

      หรือทำมือ ซึ่งเป็นวิธีที่ง่ายที่สุด
      วิธีทำ
      – เปิด IE > Tools > Internet Options > Connections > LAN Settings แล้วระบุชื่อ proxy ลงไป
      ข้อดี
      – ง่าย ไม่ซับซ้อน
      ข้อเสีย
      – หากมีเครื่องไคลเอนท์จำนวนมาก แอดมินอาจมือหงิกได้
      – เวลาเปลี่ยน proxy ก็มือหงิกอีกรอบ

    2) Proxy Script

      วิธีทำ
      – เอา java script ไปวางไว้ในเวปภายในของบริษัท แล้วทำเช่นเดียวกับ manual แต่ให้ระบุโดยใช้ Use automatic configuration script ชี้ไปยัง url ของ java script
      ข้อดี
      – ยังง่ายอยู่ เพราะสามารถหาตัวอย่าง proxy script ได้ในเน็ต
      – สามารถกำหนดเงื่อนไขแปลกๆ เช่น ทำ load balance กับ proxy สองตัว หรือเลือกได้ว่าเวปไหนออกตรง เวปไหนผ่าน proxy
      – การแก้ไขทำได้ง่าย เพราะแก้แค่ที่เดียว
      ข้อเสีย
      – เวลากำหนดครั้งแรกยังต้องทำทีละเครื่องเช่นเดิม

    3) WPAD

      หรือที่ในหน้า proxy ของ IE บอกว่า Automatically detect setting นั่นเอง
      วิธีทำ
      – ใช้ proxy script เจ้าเดิม เพียงแต่เราจะวางให้ถูกที่ถูกทาง โดยมันจะค้นหา proxy script ตามชื่อโดเมนของไคลแอนท์ เช่น ไคลเอนท์ชื่อ pc1.sale.bangkok.modplusplus.com เวลามันค้นหา proxy script ก็จะวิ่งตามนี้

      http://wpad.sale.bangkok.modplusplus.com/wpad.dat
      http://wpad.bangkok.modplusplus.com/wpad.dat
      http://wpad.modplusplus.com/wpad.dat

      ดังนั้นหน้าที่เราคือต้องสร้าง DNS A record ชื่อ wpad.modplusplus.com และเปลี่ยนชื่อ proxy script เป็น wpad.dat จากนั้นไปวางในเวปเซิร์ฟเวอร์ที่ชื่อ wpad.modplusplus.com
      ข้อดี
      – คอนฟิกที่ไคลเอนท์น้อยกว่าสองแบบแรก
      ข้อเสีย
      – ต้องยุ่งกับ DNS
      – ไคลเอนท์ที่ไม่ได้ join AD อาจใช้งานลำบาก เนื่องจากจะไม่ทราบโดเมนในการค้นหา
      – ไม่ใช่ทุกแอพพลิเคชั่นที่ใช้งาน WPAD ได้
      รายละเอียดเพิ่มเติมอ่านได้ที่ Wikipeia คลิ๊กที่นี่

    4) DHCP

      ถ้าใครที่ใช้ DHCP กันอยู่แล้วอาจพ่วง proxy script ไปกับ DHCP แทนการใช้ WPAD ก็ได้ครับ
      วิธีทำ
      เข้าไปกำหนด proxy option 252 ให้ชี้ไปที่ url ของ proxy script วิธีการขึ้นอยู่กับยี่ห้อของ DHCP server ครับ ถ้าเป็น Microsoft เข้าไป คลิ๊กที่นี่ แล้วอย่าลืมมาเพิ่มในแต่ละ DHCP scope ด้วยนะครับ
      ข้อดี
      – ไม่ต้องแตะไคลเอนท์เลย
      ข้อเสีย
      – ไคลเอนท์ที่ทำ static IP จะใช้ไม่ได้ ดังนั้นแนะนำให้ทำร่วมกับ WPAD ครับ

    5) Microsoft Group Policy Object (GPO)

      วิธีทำ
      – เข้าไปกำหนดแบบ manual หรือ proxy script ผ่าน Microsoft Group Policy Management Console (GPMC) ซึ่งจะกระจายให้กับไคลเอนท์ที่อยู่ใน AD ทั้งหมด
      ข้อดี
      – ไม่ต้องไปยุ่งกับไคลเอนท์
      – ไม่ต้องเข้าไปแก้ไข DNS หรือ DHCP
      ข้อเสีย
      – อาจมีปัญหากับอุปกรณ์ mobile หรือ table ซึ่งไม่สามารถ join AD ได้

Transparent Proxy

    เป็น proxy ใสแจ๋ว ฝั่งไคลเอนท์ไม่รับรู้ว่ามี proxy อยู่ เวลาติดตั้งไม่ต้องยุ่งกับไคลเอนท์ แต่จะมีขั้นตอนติดตั้งที่ยุ่งยากกว่า และแพงกว่า
    6) L4 Switch

      วิธีทำ
      – ใช้ L4 switch ตรวจสอบว่ามี traffic ใช้พอร์ต 80 หรือ 443 หรือไม่ ถ้ามีจะโยน traffic ดังกล่าวให้ proxy แต่ถ้าไม่ใช่ก็จะปล่อยผ่าน
      ข้อดี
      – ไม่ต้องไปยุ่งกับไคลเอนท์
      – ไม่ต้องเข้าไปแก้ไข DNS หรือ DHCP
      – สามารถใช้ได้กับทุกแอพพลิเคชั่น ทุกแพลตฟอร์ม
      ข้อเสีย
      – อุปกรณ์ L4 switch มักจะมีราคาแพง บางครั้งอาจแพงกว่า proxy ด้วย

    7) WCCP

      หรือ Web Cache Communication Protocol พัฒนาโดย Cisco ให้ใช้งาน proxy ร่วมกับ Cisco switch แทนการพึ่ง L4 หรือ L7 switch ที่มีราคาแพง
      วิธีทำ
      – ทำงานเช่นเดียวกับ L4 switch คือ WCCP router (หรือ WCCP switch) จะส่ง web traffic มาให้ proxy ก่อน แต่ถ้าไม่ใช่ก็จะปล่อยตรง
      ข้อดี
      – เหมือนกับ L4 switch
      – ราคาของ WCCP router มักจะถูกกว่า L4 switch และบางครั้งก็มีมาพร้อมกับ L2/L3 switch เลย
      ข้อเสีย
      – proxy ต้องสนับสนุน WCCP protocol ด้วย

    8) In-line (or Bridge)<

      วิธีทำ
      – เป็น proxy ที่วางขวาง traffic ทั้งหมด ซึ่งบางผู้ผลิตจะทำเป็น firewall/ISP ที่เพิ่มความสามารถในการสแกนข้อมูลที่เป็น HTTP/HTTPS protocol
      ข้อดี
      – หากเป็นความสามารถเสริมของ firewall/IPS ก็เพียงแค่เรียกเปิดใช้งาน ไม่จำเป็นต้องติดตั้งอุปกรณ์เพิ่ม
      ข้อเสีย
      – หากต้องมี downtime อาจส่งผลกระทบให้ไม่สามารถใช้งานอินเทอร์เน็ตได้ทั้งองค์กรได้ หรือต้องใช้รุ่นที่มี hardware bypass traffic เวลาอุปกรณ์ไม่ทำงาน ซึ่งจะมีราคาสูง
    Advertisement

DNS MX record หรือ Mail Exchanger Record เป็นข้อมูล DNS ชนิดหนึ่ง ซึ่งแทนที่จะใช้แปลงจาก Name เป็น IP เหมือนกับ DNS A record ทั่วไป แต่ MX record จะเป็นตัวบอกว่าเมล์เซิร์ฟเวอร์ของโดเมนของเราอยู่ที่เครื่องไหน เช่นหากต้องการรู้ว่า MX record ของโดเมน microsoft.com คือเครื่องไหนให้ใช้คำสั่ง

nslookup -qt=mx hotmail.com

จะมีผลลัพธ์แบบนี้

microsoft.com MX preference = 10, mail exchanger = mail.messaging.microsoft.com

หมายความว่า อีเมล์ที่ส่งหาโดเมน microsoft.com จะส่งไปที่เครื่องเซิร์ฟเวอร์ mail.messaging.microsoft.com หากอยากดูโดเมนอื่นก็ใส่โดเมนเข้าไปท้ายคำสั่งแทน


ซึ่งหากมี MX หลายๆ ตัวก็จะได้แบบนี้

hotmail.com MX preference = 5, mail exchanger = mx4.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx1.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx2.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx3.hotmail.com



นอกจากนี้ยังสามารถกำหนดลำดับโดยใช้ MX preference ได้ ซึ่งค่าที่น้อยที่สุดจะมีถูกใช้ก่อน ถ้าส่งไม่สำเร็จก็จะพยายามติดต่อไปยังเครื่องที่มี preference สูงขึ้นต่อไป เช่น

nectec.or.th MX preference = 20, mail exchanger = maildr.nectec.or.th
nectec.or.th MX preference = 10, mail exchanger = imail.nectec.or.th

เวลาทำงานเมล์เซิร์ฟเวอร์ต้นทางจะพยายามส่งไป imail ก่อน หากไม่สำเร็จจะส่งต่อไปยัง maildr


ตัวอย่างข้างล่างเป็น combo set หลายๆ MX ที่มี preference เท่ากัน และ preference ต่างกัน

ironport.com MX preference = 10, mail exchanger = soma-c601.ironport.com
ironport.com MX preference = 20, mail exchanger = soma-c602.ironport.com
ironport.com MX preference = 20, mail exchanger = cas1-c604.ironport.com
ironport.com MX preference = 10, mail exchanger = cas1-c603.ironport.com



เราสามารถเอามาประยุกต์ใช้กับการเปลี่ยน IP ของเมล์เกตเวย์หรือย้าย ISP ได้ด้วยนะครับ
สมมุติปัจจุบันเรามี MX เป็น

example.com MX preference = 30, mail exchanger = oldisp.example.com

สิ่งที่ต้องทำคือสร้าง MX เพิ่มล่วงหน้าซัก 1-2 วันก่อนเปลี่ยน และให้ preference น้อยกว่า

example.com MX preference = 30, mail exchanger = oldisp.example.com
example.com MX preference = 20, mail exchanger = newisp.example.com

ซึ่งระหว่างที่ยังใช้ IP เดิม ก็จะพยายามส่งมาที่ newisp.example.com แต่ไม่มีใครตอบ จึงพยายามส่งอีกครั้งไป oldisp.example.com และเมื่อเปลี่ยนมาใช้ IP ใหม่ ก็จะส่งเข้า newisp.example.com ได้เลย
และหลังจากที่เปลี่ยน ISP เรียบร้อยแล้ว มั่นใจว่าจะไม่ย้ายกลับก็ลบของเดิมออกได้ครับ

example.com MX preference = 20, mail exchanger = newisp.example.com

นอกจากนี้หากไม่ต้องการรอนานหลักวันอาจลดค่า TTL ของ MX record ให้เหลือเป็นหลักสิบนาที เพื่อให้ DNS server ในอินเทอร์เน็ตลดเวลาที่เก็บใน local cache ทำให้ผู้อื่นเห็นข้อมูลใหม่เร็วขึ้นก็ได้ครับ แต่จะมีโหลดเพิ่มขึ้นที่ DNS server ของเราได้ ทำให้บางครั้ง ISP อาจไม่ยอมคอนฟิกค่า TTL ให้ครับ

เนื่องจากทุก transaction จะต้องถูกเขียนลง log ก่อนที่จะลง data file ดังนั้นหาก transaction มีขนาดใหญ่ เช่น ลบหลาย record ขนาดรวม 5GB ก็จำเป็นต้องเขียน logs ขนาด 5GB แม้ว่าจะเป็น simple recovery model ก็ตาม นอกจากนี้จะทำให้เกิด I/O สูงมากด้วย ดังนั้นแนะนำให้ซอยเป็น transaction ย่อยๆ โดยใช้ TOP และ @@ROWCOUNT มาช่วยทำงานครับ ตัวอย่างตามข้างล่าง


DECLARE @Done BIT
SET @Done = 0
WHILE @Done = 0
  BEGIN
    DELETE TOP (20000) -- reduce if log still growing
      FROM SomeTable WHERE SomeColumn = SomeValue
    IF @@ROWCOUNT = 0
      SET @Done = 1
    CHECKPOINT -- marks log space reusable in simple recovery
  END

ที่มา http://stackoverflow.com/questions/1448857/there-must-be-a-way-to-delete-data-in-sql-server-w-o-overloading-the-log

Recover Model เป็นโหมดที่จะเลือกการเก็บ transaction logs ว่าจะเก็บอย่างไร
ซึ่งมีอยู่ 3 แบบ แต่ละแบบจะมีรายละเอียดต่างกันคือ
Full

    เก็บทุกอย่าง ปลอดภัยสุด
    ข้อดี
    – เก็บการเปลี่ยนแปลงทั้งหมด หาก database file เสียสามารถกู้คืนได้โดยใช้ transaction logs
    – สามารถ recovery แล้วเลือกเวลาที่ต้องการ (point in time recovery) เช่น database มีปัญหาตอน 12:30น. ดังนั้นสามารถ recovery ไปยังสถานะเมื่อเวลา 12:25 ก่อนที่จะมีปัญหาได้
    ข้อควรระวัง
    – transaction logs จะมีขนาดใหญ่มาก ต้อง backup logs สม่ำเสมอเพื่อป้องกันไม่ให้ logs file โตเกินไป

Simple

    ประหยัดพื้นที่ฮาร์ดดิสก์ที่สุด
    ข้อดี
    – transaction เมื่อ checkpoint แล้วจะลบออก transaction logs file ทำให้ logs file มีขนาดเล็ก
    ข้อควรระวัง
    – หาก database file เสีย ต้อง restore จาก backup เท่านั้น ไม่สามารถนำ transaction logs มา redo ได้
    – ไม่สามารถเลือกว่าจะ restore ไปยังเวลาที่ต้องการได้ restore ได้เฉพาะ ณ เวลาที่ backup เท่านั้น

Bulk-logged

    เหมาะกับงานพวก Analysis Service ที่ต้อง import data ขนาดใหญ่
    ข้อดี
    – เหมือนกับ full ยกเว้นไม่เก็บ transaction logs เวลาทำ bulk insert
    ข้อควรระวัง
    – เหมือนกับ full

โดยสามารถคอนฟิกจาก SQL Server Management Studio (SSMS) มีขั้นตอนดังนี้

    1) คลิ๊กขวาที่ Database Name ที่ต้องการ
    2) เลือก Properties จาก drop down menu
    3) เลือก Options ในกรอบด้านซ้ายมือ
    4) เปลี่ยน recovery model ตามที่ต้องการ
    5) กด OK เพื่อยืนยันการแปลี่ยนแปลง