วันจันทร์ที่ 11 เมษายน พ.ศ. 2554

Unicast Mode

NLB สามารถทำใช้งานได้ใน uncast หรือ multicast โหมดโดยการกำหนด MAC Address ให้กับมัน ปกติเร้าเตอร์จะทำการส่งเพคเกจออกโดยใช้ MAC ของ VIPและ MAC
ของ VIP จะเหมือนกันทั้งหมด เพราะ ทุกแพคเกจที่ส่งออกไปปลายทางของ VIP จำเป็นที่จะต้องเป็น
สมาชิกของกลุ่ม NLB

โดยค่าปกติแล้ว NLB จะถูกตั้งค่าเป็น unicast modeโดยในโหมดนี้ทุก NLB จะถูกแทนที่ด้วย
MAC ในแต่และ LAN Adapter เป็นค่า NLB MAC Address เมื่อ NLB adapter
มี MAC ค่าเดียวกันแล้วทุกแพคเกจที่ถูกส่งเข้ามาหาจะถูกส่งไปหาทุกสมาชิกใน NLB อย่างไรก็ดีจะมีปัญหา
เมื่อมีการ config สมาชิก NLB ใน Switch ตัวเดียวกันเพราะมีการใช้งาน MAC ค่าเดียวกันใน
port อื่นๆ


NLB แก้ปัญหานี้โดยทำการ masking Cluster MAC (ทำการซ่อน MAC เอาไว้) ปกติแล้ว switch จะทำมีกระบวนการเรียนรู้ MAC Address โดยมองตรวจสอบจาก Ethernet Frame Header. NLB จะทำการ สร้าง MAC Address หลอกขึ้นมาและกำหนดให้แต่ละ NLB Adapter โดยที่ MAC Address หลอกที่ถูกสร้างขึ้นจะมีส่วนที่แตกต่างกันตามแต่ละ Host ID
ตัวอย่างเช่น host ID number 1 has the bogus MAC address 02-01-ac-10-00-01, host ID number 2 has the bogus MAC address 02-02-ac-10-00-01, host ID number 3 has the bogus MAC address 02-03-ac-10-00-01, and so on

ทำให้เราสามารถที่เชื่อมต่อไปที่ Switch โดยใช้ MAC Address หลอก ที่สร้างขึ้นมาได้ทำให้แก้ปัญหาการชนกันของ MAC ADDRESS ใน switch ได้และเมื่อมีการส่ง Packet จาก Router ไปที่ MAC Address Clusster แล้ว Switch ไม่พบ MAC Address ดังกล่าวมันจะทำการส่งเพจเกจไปทุก port ของ switch

ซึ่งเร้าเตอร์ไม่ได้ค้นหา Server ปลายทางแบบ Switch โดยเมื่อเร้าเตอร์ทำการส่ง ARP request เพื่อตรวจสอบ NLB MAC Address ของ VIP ออกไป ARP header จะได้รับ NLB MAC Address (Cluster MAC Address) ไม่ใช่ MAC หลอกทำให้ในการคุยกับเร้าเตอร์ Server จะมี VIPกับ Cluste MAC ส่งไปหาเร้าเตอร์ผ่าน
ARP request (Switch จะไม่รู้เพราะตรวจสอบจาก Ethernet Frame Header) และเมื่อเร้าเตอร์ต้องการจะคุย
กับ Server จะทำการส่ง Packet กลับมาให้ Switch ซึ่งภายในEthernet Frame Header จะเป็น Cluster MAC Address ทำให้ Switch ไม่รู้จักจึงทำการส่งข้อมูลไปทุก Port เป็นแบบนี้ไปเรื่อยๆ


http://www.isaserver.org/tutorials/basicnlbpart1.html
http://www.isaserver.org/articles/basicnlbpart2.html

วันอาทิตย์ที่ 3 เมษายน พ.ศ. 2554

Troubleshooting Outbound FTP Access in ISA Server

http://technet.microsoft.com/en-gb/library/bb794745.aspx

วันเสาร์ที่ 5 มีนาคม พ.ศ. 2554

Blogger Ad Code Converter

http://www.eblogtemplates.com/blogger-ad-code-converter/

CGI in HTML frames

#!/usr/bin/perl
use CGI qw/:standard :netscape/;
use CGI::Carp;

print "Content-type: text/html\n\n";
print <<EOF;
<FRAMESET ROWS="150,*">
<FRAME NAME="aa" SRC="http://www.google.com">
</FRAMESET>
EOF
print end_html();

Linux AT Command

at now + 5 minutes < $HOME/listofcommands.txt
at -f mycrontest.sh 10pm tomorrow
at -f mycrontest.sh 2:00 tuesday
at -f mycrontest.sh 2:00 july 11
at -f mycrontest.sh 2:00 next week

วันพฤหัสบดีที่ 24 กุมภาพันธ์ พ.ศ. 2554

ตรวจสอบ URL Categoies ของ Microsoft

http://www.microsoft.com/security/portal/mrs/
http://www.microsoft.com/security/portal/mrs/categories/MRS_Categories.en-us.htm

วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2554

Proxy Auto Configuration


เรื่อง นี้อาจจะเก่าสำหรับหลายๆคน แต่สำหรับผมแล้วเป็นเรื่องใหม่ เพราะเมื่อสองสามวันมานี้เกิดคำถามกับตัวเองว่า ถ้าเราต้องการใช้งาน proxy เฉพาะบางเวป และเวปที่อื่นๆให้ออกตรงโดยไม่ต้องผ่าน proxy สามารถทำได้ไหม ผมก็เลยค้นๆดูปรากฏว่าพบซิธีทำ proxy autoconfig ซึ่งมันดูน่าสนใจ พอดูๆแล้วปรากฏว่าตอบโจทย์ที่ต้องการพอดี

ไม่ใช่แค่ตอบสนองความต้องการของผม แต่เราสามารถนำวิธีการนี้ไปใช้ร่วมกับองค์กรณ์เพื่อกำหนดให้ user ต่างๆ สามารถใช้งาน proxy ตัวไหนได้โดยไม่จำเป้นต้องไปเดิน set ให้เมื่อยขา เพราะว่า วิธีการนี้สามารถนำไปใช้งานร่วมกับ DHCP หรือ Active directory อีกด้วย

วิธีการไม่มีอะไรยากมากเหมือนเขียนโปรแกรม และมีฟังค์ชั้นที่ใช้งานไม่มากนัก โดยโครงสร้างเริ่มต้นเป็นดังนี้

function FindProxyForURL(url, host)
{
...
}

เมื่อเรารู้โครงสร้างเริ่มต้นแล้ว ก้มารู้จักกับ function สักตัวสองตัวที่คิดว่าจำเป็นสำหรับการสร้างไฟล์ proxy client autoconfig

  1. shExpMatch(str หรือ url หรือ host, shexp)
  2. str คือ string ที่เอาไว้ compare
    url และ host จะรับค่ามาจาก funtion FindProxyForURL
    shexp คือ expreesion นำมา compare โดยสามารถใช้ wildcard ได้ด้วย
    จะให้ค่าเป็น true ในกรณีที่ค่าทั้งสอง match กัน
    ตัวอย่าง เช่น
    shExpMatch(“http://w3.ezylinux.com/website1/index.html”, “*site1*”) จะให้ค่าเป็น true
    shExpMatch(host, “*.ezylinux.com”) เมื่อมีการ request เพื่อเวป ezylinux.com จะให้ค่าเป็น true

  3. isInNet(host, pattern, mask)
  4. host จะรับค่ามาจาก funtion FindProxyForURL โดยเมื่อรับมาแล้วจะใช้ DNS เพื่อ resolve หา IP อีกที
    pattern คือ IP Address
    mask คือ subnet mask
    ตัวอย่าง เช่น
    isInNet(host, “198.95.249.79″, “255.255.255.255″) ให้ค่า true ถ้าเครื่องเป็น 198.95.249.79
    isInNet(host, “198.95.0.0″, “255.255.0.0″) ให้ค่า true ถ้าเครื่องอยู่ในวง 198.95.0.0

การ return ค่า สามารถทำได้ 3 อย่างด้วยกันดังนี้

  1. DIRECT ให้ไม่ต้องผ่าน proxy
  2. PROXY host:port ให้ใช้ proxy ที่ host และ port ที่ระบุไว้
  3. SOCKS host:port ให้ใช้ proxy ที่ host และ port ที่ระบุไว้

ตัวอย่างการใช้งาน (proxy.pac)

function FindProxyForURL(url, host)
{
if (isInNet(host, "192.168.0.0", "255.255.0.0")) { //อยู่ในวง 192.168.0.0 หรือไม่
return "DIRECT";
} else {
if (shExpMatch(host, "*.ezylinux.com")) // จะเข้าเวป ezylinux.com หรือไม่
return "DIRECT" ;
else if (shExpMatch(url, "http:*")) // เข้าเวปด้วย http หรือ port 80
return "PROXY webcache.ezylinux.com:3128" ;
else if (shExpMatch(url, "https:*")) //เข้าเวปด้วย https หรือ port 443
return "PROXY webcache.ezylinux.com:3128" ;
else if (shExpMatch(url, "ftp:*")) // เข้าใช้งาน ftp หรือ port 21
return "PROXY webcache.ezylinux.com:3128" ;
return "DIRECT";
}
}

เมื่อได้ไฟล์ config แล้วเราสามารถวางไว้ได้ทั้ง เครื่องตัวเอง หรือ วางไว้ที่เครื่อง server (web server) โดย

  • กรณีที่วางไว้ที่เครื่องตัวเองให้ใช้ file:///c:/users/tum/proxy.pac
  • กรณีที่วางไว้ที่ server ให้ใช้ http://www.ezylinux.com/proxy.pac แล้วอย่าลืม AddType ตามตัวอย่างด้านล่าง
    AddType application/x-ns-proxy-autoconfig .pac

ซึ่งจะนำไปใส่ไว้ที่ URL ตั้งค่าพร๊อกซี่อัตโนมัติ ในส่วนของการ set ค่า proxy สำหรับ firefox และ นำไปใส่ไว้ที่ Use automatic configuration script ในส่วนของการ set ค่า proxy สำหรับ IE ดังตัวอย่าง

pac-config

pac-config-ie