วันจันทร์ที่ 11 เมษายน พ.ศ. 2554
Unicast Mode
ของ 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
วันเสาร์ที่ 5 มีนาคม พ.ศ. 2554
CGI in HTML frames
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 -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/categories/MRS_Categories.en-us.htm
วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2554
Proxy Auto Configuration
Proxy Auto Configuration (PAC) – Proxy auto-config
เรื่อง นี้อาจจะเก่าสำหรับหลายๆคน แต่สำหรับผมแล้วเป็นเรื่องใหม่ เพราะเมื่อสองสามวันมานี้เกิดคำถามกับตัวเองว่า ถ้าเราต้องการใช้งาน proxy เฉพาะบางเวป และเวปที่อื่นๆให้ออกตรงโดยไม่ต้องผ่าน proxy สามารถทำได้ไหม ผมก็เลยค้นๆดูปรากฏว่าพบซิธีทำ proxy autoconfig ซึ่งมันดูน่าสนใจ พอดูๆแล้วปรากฏว่าตอบโจทย์ที่ต้องการพอดี
ไม่ใช่แค่ตอบสนองความต้องการของผม แต่เราสามารถนำวิธีการนี้ไปใช้ร่วมกับองค์กรณ์เพื่อกำหนดให้ user ต่างๆ สามารถใช้งาน proxy ตัวไหนได้โดยไม่จำเป้นต้องไปเดิน set ให้เมื่อยขา เพราะว่า วิธีการนี้สามารถนำไปใช้งานร่วมกับ DHCP หรือ Active directory อีกด้วย
วิธีการไม่มีอะไรยากมากเหมือนเขียนโปรแกรม และมีฟังค์ชั้นที่ใช้งานไม่มากนัก โดยโครงสร้างเริ่มต้นเป็นดังนี้
function FindProxyForURL(url, host)
{
...
}
เมื่อเรารู้โครงสร้างเริ่มต้นแล้ว ก้มารู้จักกับ function สักตัวสองตัวที่คิดว่าจำเป็นสำหรับการสร้างไฟล์ proxy client autoconfig
- shExpMatch(str หรือ url หรือ host, shexp)
- isInNet(host, pattern, mask)
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
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 อย่างด้วยกันดังนี้
- DIRECT ให้ไม่ต้องผ่าน proxy
- PROXY host:port ให้ใช้ proxy ที่ host และ port ที่ระบุไว้
- 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 ดังตัวอย่าง