捐血一袋救人一命

江蘇拙政園

江蘇 拙政園

全家福

日本 和歌山城

賞楓之旅

千燈 夕照

水鄉千燈

蘆洲 微風運河

破曉時分

2010年4月30日 星期五

在Windows IIS 底下,如何設定Web虛擬主機

什麼是虛擬主機?簡單的說,就是一台實體主機,可以掛多個網站。

其實它的設定並不難,但是需要搭配DNS設定。

  1. 在 DNS 裡面設定 IIS 主機的 A Record 對應的 IP

      例如:

      vhost.abc.com.tw.           IN               192.168.1.101

  2. 在 DNS 裡面設定 其他網址的 CNAME Record (你要用 A Record 也行,我個人習慣用 CNAME)

      例如:

      www.hinet.net.            CNAME               IN           vhost.abc.com.tw

      www.seed.net.tw         CNAME               IN           vhost.abc.com.tw

  3. 到「網際網路資訊服務(IIS)管理員」,在網站上按下滑鼠右鍵,選擇「內容」,點選「網站」頁籤,然後點選「進階(D)」,會跳出一個「進階網站識別」的視窗,請點選「新增(A)」,會再跳出一個小視窗「新增/編輯網站識別碼」 ,請在「主機標頭值」一欄輸入你這個網站的FQDN。

      例如:

      IP位址(I):全未指定

      TCP連接埠:空白

      主機標頭值(S):www.hinet.net

 

這樣就完成虛擬主機的設定(1個 IP 對應多個網站)

如果是要多個IP,對應多個網站,請在IP位址下拉選單中,指定該網站的IP Address即可。

 

如果你只是要單機測試作業,又沒有 DNS 的伺服器,可以去修改 %System_Root%\system32\drivers\etc\hosts

將網址對應到本機的 IP即可取代 DNS。

2010年4月29日 星期四

在命令提示字元下,如何切換到網路共享資料夾

要連結網路共享資料夾,可以在 Windows 底下操作 GUI。

如果要自動批次作業,就必須使用命令提示字元的命令 net

 

使用 net 指令很簡單,其語法格式如下:

連接網路共享資料夾

net use [磁碟機代號:] \\ShareServerName\ShareFolderName [/user:[網域\]帳號] [密碼]

 

中斷網路共享資料夾

net use [磁碟機代號:| \\ShareServerName\ShareFolderName] /delete

如果在執行 net use 指令,不加其他參數,則會顯示目前連接的網路共享資料夾

 

在 Windows XP 以後,如果連結網路共享時,帳密不對,導致連接網路共享後,又無法存取目錄;

此時重新指定正確的使用者名稱及密碼,也無法連接。

因為Windows不允許同一個 UNC ,使用不同帳號密碼。你可以使用 net use 看看之前連接共享資料夾的狀況。然後中斷掉之前以錯誤帳密連接的共享資料夾,即可以新的帳密重新連接。

 

如果在連接網路共享資料夾時,沒有指定磁碟機代號,因為命令提示字元底下,不接受 UNC 路徑,你可以使用 subst 指令,將磁碟機代號指定給網路共享資料夾,例如:

subst X: \\ShareServerName\ShareFolderName

2010年4月27日 星期二

Fortigate 目錄服務設定說明

在Fortigate 「使用者認證→目錄服務」看起來似乎可以很容易與 Microsoft Active Directory 結合。

其實 FSAE (Fortinet Server Authentication Extension) 是需要安裝在 AD Server 上安裝一個 Fortigate Client 內的元件才能使用 FSAE Controller。

如果客倌像我一樣不喜歡裝一些額外的軟件,那麼請使用「使用者認證→遠端」裡的 LDAP 來結合 AD 驗證。

 

「使用者認證→遠端→LDAP」

名稱:請自己取一個好記的名稱

伺服器名稱/IP位址:請輸入DC伺服器 IP

伺服器埠口:389

Common Name Identifier:請自己取一個好記的名稱

Distinguished Name:如果不知道怎麼輸入,請先輸入以下欄位!

Bind Type:正規模式

Filter:(&(objectcategory=group)(member=*))

使用者DN:請輸入具有管理者權限的帳號,例如:administrator

密碼:就輸入上述管理者的密碼xxxxx

安全連線:請打勾

協定:請點選STARTLS

憑證:用Fortinet_CA即可。

以上輸入完成後,回頭使用探索功能來填寫Distinguished Name

請Distinguished Name欄左邊的browse 圖形。

按下之後,會顯示網域名稱,例如:

twistie_collapsed DC=abc,DC=com,DC=tw

請點選藍色箭頭,它就會變成twistie_expanded DC=abc,DC=com,DC=tw

同時將「DC=abc,DC=com,DC=tw」填入Distinguished Name欄位。

按下「允許」按鍵之後,再點一次browse 圖形,就可以自動探索下一階。

一直重覆此動作,就可以找到你要設定的Distinguished Name。

PS.如果在 AD 裡使用中文,在 Fortigate 裡面會變成一堆代號,很不好認。所以最好在AD裡使用英文!

Fortigate QoS設定

防火牆的 QoS 設定功能很好用。

它可以用來保障帳各種服務的品質,尤其是使用UDP封包的服務。

例如:VoIP/Video Conference/DNS等

VoIP 與 Video Conference都是採用 UDP 封包來傳送視訊及音訊,UDP 的封包比 TCP 小,所以傳輸較快,但它不像 TCP 會去檢核是否傳送成功,當資料量大時,非常容易出錯!

所以透過 QoS 可以確保VoIP / Video Conference 品質穩定。

此外,DNS 服務預設使用 UDP 封包,除非失敗,才會使用 TCP 封包,但是這都會造成很多服務無法正常運作。

所以透過 QoS 功能,可以確保 DNS 查詢不會失敗,其他服務就能正常運作!

 

那麼 Fortigate QoS 該怎麼設定呢?

在「防火牆→流量塑型」可以設定QoS政策,給與保證頻寬,與最大頻寬,還有封包的優先權。

保證頻寬就是當流量大時,防火牆會確保給與服務一定頻寬。

最大頻寬就是當流量小時,防火牆會限制服務能使用的最大頻寬。

當然如果該服務沒有流量時,頻寬也會釋放給其他服務使用。

至於優先權高低,就是說哪個服務應該優先佔有使用頻寬。

 

這裡面比較可能會讓人難以理解的是流量塑型的方式

  • 每的政策
  • 針對所有政策使用此流量塑型

其實,每個政策,意思是說,每個套用此流量塑型政策的防火牆政策,都會有獨立的保障頻寬、最大頻寬以及優先權。

至於針對所有政策使用此流量塑型,則是指所有套用此流量塑型政策的防火牆政策,都會共用此一保障頻寬、最大頻寬以及優先權。

Fortigate NAT 設定問題

今天會興起寫這篇文章,是因為中華電信企業客服派工安裝的Fortigate 設定有問題。

問題的起源是我發現近來廣告信特多,雖然大多都被 IMF 過濾掉,但是也造成系統負載增加不少。

所以我連入 Exchange去看看 SMTP Log (C:\WINDOWS\system32\LogFiles\SMTPSVC1),我發現居然會有一堆使用防火牆 LAN Port IP 來發信的記錄!

所以立刻連上防火牆一探究竟!

我發現中華電信的工程師,把 WAN→Internal 的 SMTP Policy 勾選了 NAT !

在 Fortigate 勾選 NAT,是會進行 Source IP 的 NAT,所以當外部寄信時,會 NAT 成 LAN Port IP !

導致 Mail Server 認定是區網 IP,不須驗證,允許 Relay!

要解決此問題也很簡單,只要把打勾去掉就可以!

因為在 Fortigte 的虛擬 IP 對應時,就會做 Destination NAT!

所以如果您有使用 Fortigate 防火牆,發現有大量廣告,

或是有一堆連線是從防火牆 LAN Port IP 連接,請注意一下這個設定喔!

2010年4月22日 星期四

網路上的 DNS 教材

DNS可說是網路服務的基礎,所以瞭解其運作,會有助於 MIS 釐清問題原因。

以下幾個網站的DNS教材都不錯,所以介紹給大家參考。

Study Area

鳥哥的Linux私房菜

TWNIC

Microsoft

幫助MIS檢查DNS設定的網站

DNS Service,看似最簡單最不起眼的服務,但是很多服務卻必須要靠它才能正常運作。

如果設定錯誤,就會造成其他服務無法正常運作。

例如:

虛擬主機(Web Virtual Host),或是 Mail Server

 

所以介紹以下幾個工具網站,方便MIS使用

http://www.dnsstuff.com/

http://www.dnsquery.org/

http://www.webmaster-toolkit.com/dns-query.shtml

 

後記:

最近在幫朋友檢查 Linux BIND DNS 設定,在 BIND DNS 有 View 這個功能,可以依照用戶端 IP 來回應查詢結果。

一般會設定成幾個 View,Localhost & LAN & WAN (名稱可自訂)

一般使用Windows DNS Server,就必須內部 DNS 與外部 DNS分成兩部主機;或者將外部DNS委外託管,內部主機只管內部解析。

在本機使用 nslookup 時,預設會使用 /etc/resolve.conf 裡面的 DNS Server IP

但是你可以在 nslookup 指定 DNS Server IP

例如:

server 127.0.0.1

server 192.168.1.1

server 123.123.123.123

這樣 DNS 就會按照你指定的 IP 網段來回覆 DNS Query,不一定要靠外面的協助。

NetLimiter 2 Monitor

一般的本機網路流量監視軟體,都只能看總量(Total In/Total Out)

但是 NetLimiter Monitor 可以看到每一支程式的頻寬使用量。

image

它是由 NetLimiter 公司提供,更好的是,它是免費的!

所以如果要檢查電腦的異常流量,可以試試看這個軟體!

 

PS.NetLimiter 2 Monitor 會跟 Microsoft iSCSI Initiator 2.08 相衝,造成無法連接iSCSI Target.

2010年4月21日 星期三

找出與今日日期相同的檔案

@echo off
setlocal EnableDelayedExpansion
set Today="%DATE:~0,10%"
for /F %%I in ( 'dir *.dat /b' ) do (
set DT="%%~tI"
set FDT=!DT:~1,10!
if "!FDT!"==%Today% (
echo "%%~I"
) else (
echo wrong
)
)
endlocal

在 for 迴圈中,如果變數是檔名,可以利用以下格式,來讀取檔案相關資訊
(以 %I 為 for 迴圈變數,如果迴圈變數名不是 I,請將以下格式的 I 改掉)
%~I 檔名前後會自動加上雙引號
%~fI 會顯示該檔案的完整路徑+檔名
%~dI 顯示該檔案所在磁碟機代號
%~pI 顯示該檔案的完整路徑 (只有路徑,不含檔名)
%~nI 只顯示檔案名稱 (不含副檔名)
%~xI 只顯示檔案的副檔名 (不含主檔名)
%~sI 以短檔名格式顯示
%~aI 顯示檔案屬性 (AHRS)
%~tI 顯示檔案日期+時間
%~zI 顯示檔案大小
%~$PATH:I 搜尋PATH環境變數的每一個目錄,並顯示第一個符合檔名的完整路徑+檔名
以上的格式參數,可以組合使用。
例如:
%~nzI
以上,必須配合 for 迴圈的 /F 參數使用!
微軟官方網站的說明在此
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true

將指定帳號加入某台電腦的本機管理者群組

image

strComputer = "ComputerName"

Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objUser = GetObject("WinNT://DomainName/UserName")

objAdmins.Add(objUser.ADsPath)

要注意的是,使用者已經登入 Windows 後,才透過此程式加入管理者群組,並無法讓該使用者立即取得管理者權限。

使用者必須重新登入系統才會生效。

同樣的,如果使用者已具備管理者權限,即始使用此程式將使用者帳號移出本機管理者群組,管理者權限也不會立即失效,必須重新登入系統才能生效。

strComputer = "ComputerName"

Set objAdmins = GetObject("WinNT://" & strComputer & "/Administrators")
Set objUser = GetObject("WinNT://DomainName/UserName")

objAdmins.Add(objUser.ADsPath)

要注意的是,使用者已經登入 Windows 後,才透過此程式加入管理者群組,並無法讓該使用者立即取得管理者權限。

使用者必須重新登入系統才會生效。

同樣的,如果使用者已具備管理者權限,即始使用此程式將使用者帳號移出本機管理者群組,管理者權限也不會立即失效,必須重新登入系統才能生效。

<html>
<head>
<title>Add/Remove Domain Account into/from Local Administrator Group</title>

<HTA:APPLICATION
     ID="objHTAHelpomatic"
     APPLICATIONNAME="HTAManagementAccount"
     SCROLL="No"
     SINGLEINSTANCE="yes"
     BORDER="thick"
     BORDERSTYLE="raised"
     MAXIMIZEBUTTON="no"
     SHOWINTASKBAR="yes"
     WINDOWSTATE="normal"
>

</head>

<SCRIPT Language="VBScript">
' Setup Window Size
Sub Window_onLoad
    Const Width = 500
    Const Height = 250
    strComputer = "."
    self.ResizeTo width,height
    Self.moveTo (screen.AvailWidth-width)/2,(screen.AvailHeight-height)/2
End Sub

' Add Domain Account into Local Administrator Group
Sub AddAccount
    Set objAdmins = GetObject("WinNT://" & HostName.Value & "/Administrators")
    Set objGroup = GetObject("WinNT://Domain Name/" & Account.Value)
    objAdmins.Add(objGroup.ADsPath)
    msgbox("Finish !")
    set objGroup = Nothing
End Sub

' Displays a message box when the button is clicked
Sub RemoveAccount
    Set objAdmins = GetObject("WinNT://" & HostName.Value & "/Administrators")
    Set objGroup = GetObject("WinNT://Domain Name/" & Account.Value)
    objAdmins.Remove(objGroup.ADsPath)
    msgbox("Finish !")
    set objGroup = Nothing
End Sub
</SCRIPT>
<body>
您要在哪台電腦上管理 Administrators 群組?<br>
Host Name:<input type="text" name="HostName" size="30"><br>
Account:<input type="text" name="Account" size="32">(不含網域名稱)<br>
<input id=runbutton1  class="button" type="button" value="Add Account" name="run_button1"  onClick="AddAccount">
<input id=runbutton2  class="button" type="button" value="Remove Account" name="run_button2"  onClick="RemoveAccount"><br>
<br>
<ul>
<li>如果您輸入的電腦無法接受管理(例如:防火牆阻擋),將會發生錯誤訊息</li>
<li>如果您輸入的網域帳號不存在,也會發生錯誤訊息</li>
</ul>
</body>
</html>

PS.請記得將紅字的 Domain Name 更換成你的網域名稱

檢查網路某台電腦的本機管理者群組的非管理者帳號

在經歷許多環境發現,很多頗具規模的公司(以電腦數量來算),對於網域的管理,以及權限的管理都很鬆散。

隨隨便便一堆人都有本機管理者權限,當然公司會中毒、資料外洩也不足為奇。所以自己只要寫個簡單的小程式,就可以透過網路去檢查別台電腦的本機權限狀況。

MIS完全不用去中斷別人的工作,也不容易引起爭執。

當然在做這個動作之前,你最好先買個保險,由上級主管宣導實施,免得挨槍子。

strComputer = "ComputerName"

Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")

For Each objUser In objGroup.Members
    If objUser.Name <> "Administrator" AND objUser.Name <> "Domain Admins" Then
        wscript.echo objUser.Name
    End If
Next

 

自動將 Exchange Archive SPAM 按照日期歸檔

使用 Exchange 2003 的 SPAM Archive 功能,會發現每天都有一堆信被封存,

才隔幾天,要開啟 Archive Folder時,卻系統卻會停止回應。

因為檔案太多,系統很忙碌的要一次讀取所有的檔案清單,

所以才有寫以下幾支程式的構想。

這支程式一執行,會將 E:\Exchsrvr\UCEArchive目錄下所有封存的 SPAM,按照日期格式 YYYYMMDD 歸檔存到 YYYYMMDD 目錄下,這樣子每個 Folder 的檔案數量不大,開啟資料夾速度就快多了。 ( Batch File )

@echo off
setlocal EnableDelayedExpansion
for /F %%a in ( 'dir E:\Exchsrvr\UCEArchive\*.EML /b' ) do (
set FileName=%%a
set DateDir=!FileName:~5,8!
if not exist E:\Exchsrvr\UCEArchive\!DateDir! mkdir E:\Exchsrvr\UCEArchive\!DateDir!
move E:\Exchsrvr\UCEArchive\!FileName! E:\Exchsrvr\UCEArchive\!DateDir!
)

這支程式只會抓今天的日期,將今天的 SPAM 歸檔 ( Batch File )

@echo off
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set date=%%a%%b%%c)
if not exist E:\Exchsrvr\UCEArchive\%date% mkdir E:\Exchsrvr\UCEArchive\%date%
move E:\Exchsrvr\UCEArchive\ARCH_%date%*.eml E:\Exchsrvr\UCEArchive\%date%

這支程式會抓昨天的日期,將昨天的 SPAM 歸檔 ( Windows Script Host )

' 取得昨天的日期
dtmYesterday = Date() - 1

' 將昨天的日期取出年份
strYear = left(dtmYesterday,4)

' 將昨天的日期取出月份
if mid(dtmYesterday,7,1) = "/" then
strMonth = "0" & mid(dtmYesterday,6,1)
else
strMonth = mid(dtmYesterday,6,2)
end if

' 將昨天的日期取出日期
if mid(dtmYesterday,len(dtmYesterday)-1,1) = "/" then
strDay = "0" & right(dtmYesterday,1)
else
strDay = right(dtmYesterday,2)
end if

strYesterday = strYear & strMonth & strDay

' 以昨天的日期來建立目錄
ParentFolder = "E:\Exchsrvr\UCEArchive"
set objShell = CreateObject("Shell.Application")
set objFolder = objShell.NameSpace(ParentFolder)

objFolder.NewFolder strYesterday

' 將檔名包含昨天日期的檔案,全數搬移到昨天日期的目錄下
Set objFSO = CreateObject("Scripting.FileSystemObject")
FileNamePatten = "ARCH_" & strYesterday & "*.EML"
objFSO.MoveFile "E:\Exchsrvr\UCEArchive\" & FileNamePatten , "E:\Exchsrvr\UCEArchive\" & strYesterday

wscript.echo strYesterday & " Job is done !"

以下這支程式,會跳出視窗,讓您輸入日期,將指定日期的 SPAM 歸檔 ( Windows Script Host )

strDay = inputbox("請輸入日期 : ")

' 以昨天的日期來建立目錄
ParentFolder = "E:\Exchsrvr\UCEArchive"
set objShell = CreateObject("Shell.Application")
set objFolder = objShell.NameSpace(ParentFolder)

objFolder.NewFolder strDay

' 將檔名包含昨天日期的檔案,全數搬移到昨天日期的目錄下
Set objFSO = CreateObject("Scripting.FileSystemObject")
FileNamePatten = "ARCH_" & strDay & "*.EML"
objFSO.MoveFile "E:\Exchsrvr\UCEArchive\" & FileNamePatten , "E:\Exchsrvr\UCEArchive\" & strDay

wscript.echo strDay & " Job is done !"

這是改用 Batch File 語法寫的程式,功能與上一支程式相同

set /p DateDir="請輸入日期:"
if not exist E:\Exchsrvr\UCEArchive\%DateDir% mkdir E:\Exchsrvr\UCEArchive\%DateDir%
move E:\Exchsrvr\UCEArchive\ARCH_%DateDir%*.eml E:\Exchsrvr\UCEArchive\%DateDir%

自動建立AD帳號程式

今天為了客戶寫了一支自動建帳號的程式

該程式將讀取 User 提供的帳號密碼清單來建立帳號


' Greate Accounts and Setting Password
' 讀取 List.txt 檔案中的帳號及密碼
' 將帳號建立在 strOU 這個組織單位中
' 並設定密碼
' List.txt 格式,每行一個帳號密碼,帳號與密碼以空格分開
' account password
' 如果使用者密碼有空白字元
' 請自己選用一個分隔符號,然後將第41行程式的空白字串改掉
' arrAccount = split(strAccountPW, " ")
' 設定單位組織
strOU = InputBox ( "請輸入組織單位名稱:" , "Greate Accounts under OU" , "SalesDept" )
' 設定 Domain
strDomain = InputBox ( "請輸入網域名稱:" , "Greate Accounts under OU" , "domain.com.tw" )
' 設定開啟檔案模式
Const ForReading = 1
' 宣告變數
strDC = ""
strLDAP = ""
strUserCN = ""
arrDC = split(strDomain,".")
for nLoop = 0 to UBound(arrDC)
strDC = strDC & "dc=" & arrDC(nLoop) & ","
next
strDC = left(strDC, LEN(strDC) - 1)
' wcscript.echo strDC
Set objOU = GetObject("LDAP://OU=" & strOU & "," & strDC)
' Read Account List File
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("List.txt", ForReading)
Do Until objTextFile.AtEndOfStream
' 一行一行讀取 List.txt
strAccountPW = objTextFile.ReadLine
' 將 Account and Password 拆開,arrAccount(0)存帳號,arrAccount(1)存密碼
arrAccount = split(strAccountPW, " ")
' wscript.echo arrAccount(0) & ":" & arrAccount(1)
Set objUser = objOU.Create("User", "cn=" & arrAccount(0) )
objUser.Put "sAMAccountName", arrAccount(0)
objUser.Put "c", "TW"
objUser.Put "co", "台灣"
objUser.Put "countryCode", "886"
objUser.Put "mail", arrAccount(0) & "@" & strDomain
objUser.Put "name", arrAccount(0)
' Uncheck User need change password
' 將帳號物件寫入
  objUser.SetInfo
' 設定使用者預設密碼
Set objUser = GetObject ("LDAP://cn=" & arrAccount(0) & ",ou=" & strOU & "," & strDC)
objUser.SetPassword arrAccount(1)
' 使用變更密碼的方式來設定密碼
' objUser.ChangPassword "", arrAccount(1)
' 因為 Windows 2003 的預設密碼政策要求比較嚴格,可以使用下列預設密碼
' objUser.SetPassword "p@ssw0rd"
' 要求使用者下次登入要變更密碼
' objUser.Put "pwdLastSet", 0
' 取消帳號停用
objUser.AccountDisabled = FALSE
' 設定帳號過期日,Default為「永不過期」
' objUser.AccountExpirationDate = "1970/1/1"
objUser.SetInfo
Loop
' 關閉檔案
objTextFile.Close
wscript.echo "帳號建立完成"

使用 Ping 指令來檢查網路品質

最近為了客戶移機的事,又寫了一支WSH,它是用ping來檢測網路品質,將結果存到CSV File,然後寄到指定的信箱裡。

當我收到這個CSV File時,就可以把它匯入SQL Server,利用Excel來繪製網路品質的圖表。

On Error Resume Next
' Open File Mode (Read/Write)
Const ForAppending = 2
' 8 (hrs) * 60 (Minutes) * 60 (Seconds) = 28800
Const nTimes = 28800
' 1 Second = 1000
Const nSleep = 1000
' Branch Office Name

' 因為客戶有多個辦公室,所以加上一個Location欄位,以便日後分析
Const strLocation = "上海"
' Ping Server Public IP

' 這邊請輸入您自己要測試的端點 Public  IP
Const strPingServer = "123.123.123.123"

' 設定 SMTP Server
Const strSMTP = "xxx.xxx.xxx"

' 設定供 SMTP驗證的帳號
Const strUser = "UserName"

' 設定供 SMTP驗證的帳號密碼
Const strPasswd = "12345678"
' Initialize Variables 設定變數初始值
' Ping Status
nStatus = 0
strIP = ""
nResponseTime = 0
strAttachFile = ""
strMonth = Month(Date())
If Len(strMonth) = 1 Then
  strMonth = "0" & strMonth
End If
strDay = Day(Date())
If Len(strDay) = 1 Then
  strDay = "0" & strDay
End If
strYear = Year(Date())
strHour = Hour(Time())
If Len(strHour) = 1 Then
  strHour = "0" & strHour
End If
strMinute = Minute(Time())
If Len(strMinute) = 1 Then
  strMinute = "0" & strMinute
End If
strSecond = Second(Time())
If Len(strSecond) = 1 Then
  strSecond = "0" & strSecond
End If
strLogFile = "C:\" & strLocation & "_" & strYear & strMonth & strDay & "_" & strHour & strMinute & strSecond & ".txt"
' 檢查是否還存在 Log File,如果存在,就把它寄出去,然後刪掉(有可能之前 Ping 程式執行到一半就被中斷,例如關機或當機
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFileList = objWMIService.ExecQuery ("ASSOCIATORS OF {Win32_Directory.Name='C:\'} Where " & "ResultClass = CIM_DataFile")
For Each objFile In colFileList
  If InStr(objFile.FileName, strLocation) Then
  strAttachFile = "C:\" & objFile.FileName & ".txt"
  ' 寄出 Log 檔案
  Set objEmail = CreateObject("CDO.Message")
  objEmail.From = "tombo@ms13.url.com.tw"
  objEmail.To = "tombo.katherine@gmail.com"
  objEmail.Subject = "Ping Status from" & strLocation & "@" & now()
  objEmail.Textbody = "Ping Status from " & strLocation
  objEmail.Addattachment strAttachFile
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
  objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPasswd
  objEmail.Configuration.Fields.Update
  objEmail.Send
  ' 刪除已寄出的 Log File
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  objFSO.DeleteFile(strAttachFile)
  End If
Next
' Check IP
strPublicIP = "xxx.xxx.xxx.xxx"
strURL="http://briian.com/files/act/myip-widget.php"
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
objHTTP.Open "GET", strURL, FALSE
objHTTP.Send
Set colMatches = objRegEx.Execute(objHTTP.ResponseText)
For Each strMatch in colMatches
strPublicIP = strMatch.Value
Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ( strLogFile , ForAppending , True)
Set colServices = GetObject("winmgmts:").ExecQuery ("Select * from Win32_Service")
objTextFile.WriteLine( "Location" & "," & "Public IP" & "," & "Date" & "," & "Time" & "," & "Count" & "," & "Status Code" & "," & "Address" & "," & "ResponseTime")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
for nLoop = 1 to nTimes
Set colItems = objWMIService.ExecQuery ("Select * from Win32_PingStatus " & "Where Address = '" & strPingServer & "'")
For Each objItem in colItems
  if objItem.StatusCode = 0 then
  nStatus = objItem.StatusCode
  strIP = objItem.Address
  nResponseTime = objItem.ResponseTime
  objTextFile.WriteLine( strLocation & "," & strPublicIP & "," & Date() & "," & Time() & "," & nLoop & "," & nStatus & "," & strIP & "," & nResponseTime )
  else ' Ping 不到的狀況
  objTextFile.WriteLine( strLocation & "," & strPublicIP & "," & Date() & "," & Time() & "," & nLoop & "," & nStatus & "," & strIP & "," & "-1" )
  end if
Next
Wscript.Sleep nSleep
Next 
objTextFile.Close
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "tombo@ms13.url.com.tw"
objEmail.To = "tombo.katherine@gmail.com"
objEmail.Subject = "Ping Status from" & strLocation & "@" & now()
objEmail.Textbody = "Ping Status from " & strLocation
objEmail.Addattachment strLogFile
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUser
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPasswd
objEmail.Configuration.Fields.Update
objEmail.Send
' 刪除已寄出的 Log File
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strLogFile)

其實這個功能跟我之前介紹的 ping commander很類似,只是我用WSH寫的,沒有 GUI 介面,而且多了個寄送 Log的功能。但是沒有支援 ping 多個目標的功能。

也許改天有空再改用 HTA來寫 GUI 介面的程式。

後記:

如果該程式的 strLocation最好使用英文,最好不要用中文,以免用戶端如果非繁中語系程式就會出問題!

自製動態 Public IP 檢查回報系統

有很多人(公司或個人),都是使用浮動 IP 的 ADSL,這導致 IT 人員進行遠端管理或維護時的困難。

坊間的解決方案多是使用 DDNS ,其他可以通報 IP 變動的工具大多都是要錢的...

其實這樣的程式也不難,要額外收費實在令人難以接受...

廢話不多說,底下就是我寫的WSH程式,

第一次執行後,會把你的 Public IP Address 寄到你指定的信箱,

之後每五分鐘會再 Check 一次 Public IP,如果IP 有變動,才會再寄信通知。

PS.該程式寄信並不需要你自己架Mail Service,可以在網路上找個 SMTP Server來用即可。


On Error Resume Next

strDynamicIP = "xxx.xxx.xxx.xxx"

' 這個網址可以替換成你自己喜好的查詢 IP 地址的網站
strURL="
http://briian.com/files/act/myip-widget.php"

Set objHTTP = CreateObject("MSXML2.XMLHTTP")

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Global = True  
objRegEx.Pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

Set objEmail = CreateObject("CDO.Message")

while true
objHTTP.Open "GET", strURL, FALSE
objHTTP.Send

Set colMatches = objRegEx.Execute(objHTTP.ResponseText)

For Each strMatch in colMatches
  strPublicIP = strMatch.Value
Next

' 網頁內容沒有 IP Address,考慮換個網站吧
if colMatches.Count < 1 then
  WScript.Echo "IP Address Not Found !"
end if
' 如果抓出來的網頁只有一個 IP Address,而且跟之前抓的不一樣,表示 IP 有變動,要通知囉
if colMatches.Count = 1 and strDynamicIP <> strPublicIP then
  objEmail.From = "
寄信人信箱地址"
  objEmail.To = "
收件人信箱地址"
  objEmail.Subject = "Your Public IP : " & strPublicIP
  objEmail.Textbody = strPublicIP
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTP Server的FQDN或IP"
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/sendusername") = "你的E-Mail帳號"
  objEmail.Configuration.Fields.Item ("
http://schemas.microsoft.com/cdo/configuration/sendpassword") = "你的e-Mail密碼"
  objEmail.Configuration.Fields.Update
  objEmail.Send
  strDynamicIP = strPublicIP
end if
' 如果抓出來的網頁內容,超過一個 IP Address,就要改程式去分析網頁囉
if colMatches.Count > 1 then
  WScript.Echo "Too Many IPs !"
end if

' 每隔 5 分鐘抓一次網頁,Check Public IP
wscript.sleep 300000
wend

Exchange 2003的漏信追蹤

近日來,同仁反應經常漏信!

我檢查了一下,Client端的Outlook 沒有設定任何 Rule ,也沒有被當成垃圾信。

但是在 Server端的郵件追蹤工具檢查,系統確實顯示已經將郵件存入儲存區。

而且當我把帳號設定轉寄到新建的 Archive 帳號後,Archive 帳號都有收到信,但是同仁的信卻依舊沒看到。

找了半天,把Client端的郵件收發記錄開啟

http://support.microsoft.com/kb/300479

也沒看到什麼異常的訊息。

想要開啟 Server端的郵件收發記錄開啟,

在 Exchange 2003是沒有任何 GUI介面可以開啟,必須修改 Registy

http://support.microsoft.com/kb/299778/zh-tw

開啟之後,就抓到漏信的原因了。

簡單說,郵件追蹤工具只能查信有沒有進到儲存區或是有沒有當成廣告信,至於是誰來收信,有沒有刪信,就得去改 Registy。

後記:

最近公司改用中華電信資安艦隊方案,每週都會收到網際網路上有人使用 POP3 Auth Brute Force Attempt密碼暴力破解攻擊,所以使用 POP3 服務的人皮要繃緊一點,小心駭客找上門!

將Exchange 2003 SPAM Mail按照日期歸檔#1(使用Windwos Script)

使用 Exchange 2003 的 IMF 功能時,

畢竟它還是會誤判,所以保險的作法是將 SPAM Mail 封存,

如果有漏信,再來 SPAM Mail Folder找漏信。

結果,太久沒去看 SPAM Mail Archive Folder,裡面累積了數十萬封廣告信,

每一封廣告信都是 .EML 檔案,純文字格式,可以用 Outlook Express 開啟閱讀。

重點是,在檔案總管一進入此目錄時,就因為檔案太多,造成系統無回應。

為了處理這個狀況,只好在命令提示字元模式下,以指令搬移檔案,但是這樣很花時間,

所以我寫了一支小程式,依照日期建立目錄,同時將每天的廣告信搬到該目錄下,

這樣就不會造成一個目錄底下有太多檔案,系統忙著讀取資訊而沒有回應。


' 取得昨天的日期
dtmYesterday = Date() - 1
' 將昨天的日期取出年份
strYear = left(dtmYesterday,4)
' 將昨天的日期取出月份

'  因為月份小於10時,不會補 0, 這樣目錄看起來會有點亂,所以稍微加工一下
if mid(dtmYesterday,7,1) = "/" then
strMonth = "0" & mid(dtmYesterday,6,1)
else
strMonth = mid(dtmYesterday,6,2)
end if
' 將昨天的日期取出日期

' 因為日期小於 10時,不會補零,這樣目錄看起來會有點亂,所以稍微加工一下
if mid(dtmYesterday,len(dtmYesterday)-1,1) = "/" then
strDay = "0" & right(dtmYesterday,1)
else
strDay = right(dtmYesterday,2)
end if
strYesterday = strYear & strMonth & strDay
' 以昨天的日期來建立目錄
ParentFolder = "E:\Exchsrvr\UCEArchive" 
set objShell = CreateObject("Shell.Application")
set objFolder = objShell.NameSpace(ParentFolder)
objFolder.NewFolder strYesterday
' 將檔名包含昨天日期的檔案,全數搬移到昨天日期的目錄下
Set objFSO = CreateObject("Scripting.FileSystemObject")
FileNamePatten = "ARCH_" & strYesterday & "*.EML"
objFSO.MoveFile "E:\Exchsrvr\UCEArchive\" & FileNamePatten , "E:\Exchsrvr\UCEArchive\" & strYesterday

' 這只是告知程式執行完畢的訊息,要不然完全沒有訊息,程式有沒有跑,有沒有完都不知道!
wscript.echo strYesterday & " Job is done !"

公司郵件被當成廣告信的處理方式

當公司的郵件寄送出去被當成垃圾信時,
請先注意幾點:
1. DNS的設定

  •  MX Record是否正確
  •  A Record是否正確(Mail Server不可以用CNAME)
  •  PTR Record是否正確(是否已向ISP申請設定,中華電信客戶請直接上網填寫申請)
  •  SPF Record是否正確(Sender Policy Framework / Sender ID)

2. 防火牆或IP分享器的NAT設定是否正確,或者說,Mail Server上網的IP,是否與DNS相關設定相符?
3. 確認你的郵件伺服器不是 Open Relay

很多人喜歡把MX Record設成如下的設定

ABC.COM.TW        MX    10    ABC.COM.TW

ABC.COM.TW        A                 123.234.123.234

這是錯誤的設定

正確的設定是

[網域名稱]       MX         10        [郵件主機名稱]

例如:

abc.com.tw.    mx     10     mail.abc.com.tw.

mail.abc.com.tw.     a        123.234.123.234

至於SPF Record,網路上有很多Wizard(精靈),可以協助你產生正確的設定值。

例如:

http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/default.aspx

http://www.openspf.org/

註:SPF與Microsoft Sender ID是不同的東西,只是設定幾乎不相衝突,所以你就隨便找個精靈來設定吧。

再來就是防火牆NAT的部份,當公司有多個Public IP時,防火牆的Public IP與DNS宣告的Mail Server Public IP可能不一樣。

但是防火牆預設會使用防火牆本身的Public IP做NAT,導致郵件主機寄信出去時,也是用防火牆的IP。

這樣DNS宣告與實際寄信的IP兜不攏,就會被當成廣告信。

在Fortigate 或是 Netscreen 防火牆上都有MIP的相關設定,這樣就可以強制指定Mail Server上網時,使用DNS宣告的IP來傳送信件!

如果還是被當成廣告信,再去看看是不是被列入黑名單!

其實一般只要接到退信,退信內容都會說明退信的原因。這是IT人員最好下手的地方。

最後就是檢查自家的 Mail Server 是不是設成 Open Relay (開放轉寄,也就是說可以讓任何人將信寄到你家伺服器上,再轉寄給非你家的帳號)

以下幾個網址都可以幫你測試

www.abuse.net/relay.html

image

你只要在 Address to Test 欄輸入你的郵件主機 IP 或 FQDN,按下「Test for Relay」即可。

www.spamhelp.org/shopenrelay/

image

你只要在 Hostname or IP Address那欄輸入你的郵件主機 IP 或 FQDN,按下「Test」即可。

www.checkor.com/

image

使用上都大同小異,輸入你的郵件主機 IP 或 FQDN,按下「Check My Mailserver」即可。

如果發現你的郵件主機是 Open Relay,再來討論怎麼解決吧!因為太多種郵件主機,講不完啦!

如何讓Microsoft Outlook可以看到SCL分數,方便IT人員維護SCL自訂權數

首先,使用Notepad將以下方框內容存檔,檔名為SCL.CFG

Microsoft Office 2003

存檔路徑為\Program Files\Microsoft Office\OFFICE11\FORMS\1028

Microsoft Office 2007

存檔路徑為\Program Files\Microsoft Office\OFFICE12\FORMS\1028

如果是英文版的Office,請將1028改成1033,例如:

\Program Files\Microsoft Office\OFFICE11\FORMS\1033

[Description]

MessageClass=IPM.Note

CLSID={00020D31-0000-0000-C000-000000000046}

DisplayName=SCL Extension Form

Category=Standard

Subcategory=Form

Comment=This forms allows the SCL to be viewed as a column

LargeIcon=IPML.ico

SmallIcon=IPMS.ico

Version=1.0

Locale=enu

Hidden=1

Owner=Microsoft Corporation

Contact=Your Name

[Platforms]

Platform1=Win16

Platform2=NTx86

Platform9=Win95

[Platform.Win16]

CPU=ix86

OSVersion=Win3.1

[Platform.NTx86]

CPU=ix86

OSVersion=WinNT3.5

[Platform.Win95]

CPU=ix86

OSVersion=Win95

[Properties]

Property01=SCL

[Property.SCL]

Type=3

NmidInteger=0x4076

DisplayName=SCL

[Verbs]

Verb1=1

[Verb.1]

DisplayName=&Open

Code=0

Flags=0

Attribs=2

[Extensions]

Extensions1=1

[Extension.1]

Type=30

NmidPropset={00020D0C-0000-0000-C000-000000000046}

NmidInteger=1

Value=1000000000000000

接下來安裝SCL自訂表單

請在Microsoft Outlook 2003功能表

「工具」→「選項」→「其他」→「進階選項」→「自訂表單」→「管理表單」→「安裝」,找到「SCL.CFG」之後,按下「開啟」,就會在個人表單中看到。

最後,還要啟用SCL自訂表單

在Microsoft Outlook 2003中,點選「收件匣。

按下功能表的「檢視」→「排列」→「自訂」→「欄位」,在「下拉選單」中選取「表單…」,將「SCL Extension Form」新增到選取的表單,就會出現可用欄位「SCL」,再將SCL欄位新增進去即可。

Reference:http://blogs.technet.com/exchange/archive/2004/05/26/142607.aspx

建置Exchange 2003 程序

1. 建置Domain Controler

  • DNS
  • AD
  • DHCP(授權並啟動,非必要)
  • WINS(非必要)

2. 建置CA Server,用來核發加密憑證

  • 安裝IIS
  • 安裝Certificate Service
  • 到Active Directory站台及服務將Certificate Templates發佈到Active Directory

3. 建置MS SQL 2008 Express資料庫伺服器,供IMFTool使用

  • 安裝 .Net Framework 3.5 SP1
  • 安裝 PowerShell 1.0
  • 安裝 Windows Installer 4.5
  • 安裝 MS SQL 2008 Express with Advance Service
  • 調整MS SQL 2008組態,設定預設連接埠並啟用具名管道及TCP/IP
  • PS.IMFTool內建MSDE,我個人偏好集中資料庫,所以使用MS SQL 2008 Express,反正這也是免費版本。
  • PS.MS SQL 2008 Express資料庫有4GB的限制

4. 建置Exchange Server

自訂Exchange IMF(Intelligent Message Filter) SCL(Spam Confidence Level) 權數

1.註冊MSExchange.UceContentFilter.dll,路徑請按照自己安裝Exchnage Server的路徑修改

regsvr32 C:\Program Files\Exchsrvr\bin\MSCFV2\MSExchange.UceContentFilter.dll

2.在該DLL目錄下建立MSExchange.UceContentFilter.xml

PS.檔案儲存格式必須為Unicode,如果使用Notepad儲存,預設會使用ANSI。

3.重新啟動SMTP Service

 

PS.這個只能定義 Keyword 的權數,沒辦法設定其他廣告信特徵的權數。所以沒啥鳥用!

設定 Exchange 2003 Intelligent Message Filter

要自訂Exchnage 2003 IMF(Intelligent Message Filter),需要自己修改Registy


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Exchange\ContentFilter]
"ArchiveDir"="C:\\SPAMArchive"
"ArchiveSCL"=dword:00000001
"CheckAuthSessions"=dword:00000001
"CustomRejectResponse"="550 5.7.1 Your Mail has been Reject because IMF Content Filter"


以上黑粗體字存成 .reg 匯入即可

ArchiveDir是指當設定封存時的路徑,你可以自己指定到別的路徑

ArchiveSCL是指封存的信件是否要在Mail Header加上X-SCL記錄分數,1 代表要記錄,0 或是沒有ArchiveSCL機碼,表示不記錄

CheckAuthSessions是設定經過帳號密碼驗證通過後,是否要經過IMF檢驗,1 代表要檢驗,0 或是沒有CheckAuthSessions機碼,表示不檢驗

CustomRejectResponse是設定自訂拒絕訊息,要注意的是,字串開頭一定要是 "550 5.7.1",要不然系統會認定是無效的訊息

另外,Microsoft Outlook裡面可以設定白名單、黑名單,以及Outlook判斷廣告信的資訊約300 Bytes。

預設Outlook裡面的規格容量為510 KB,最多2000條規則。

因為 Micosoft Outlook 跟 Exchange整合,會把這些相關設定都同步到 Mailbox Store,所以使用者設定越多,會造成伺服器負載越重。

以下的機碼是用來限制 Exchange Information Store記錄這些資訊的大小


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem]
"Max Extended Rule Size"=dword:00032000


單位是 Bytes,以16進位計算

導入VMWARE ESXi 3.5 U4

最近接了一個企業維護的案子,內容主要是導入AD網域,重建Exchange、檔案分權管理以及資料備份等工作。

但是客戶擺放伺服器的空間實在太狹小(長 1.3M,寬1M,外面還有個拉門,門寬80cm,冷氣是由天花板上的出風口出來),長度跟寬度都無法使用機架式伺服器。

所以決定採用虛擬化系統來導入上述服務。

由於客戶預算限制,所以選用Dell PowerEdge T100直立式伺服器。

因為VMWARE ESXi是沒有辦法直接支援SATA以及IDE HD,所以增加一張SAS 6i/R的SATA RAID Controler(LSI),

  1. VMWARE ESXi支援它
  2. 至少有RAID 1 Mirror可以提高資料安全性。

PS. Dell SAS 6i/R 的 i 表示為內接式,R表示為 RAID Controller。

雖然在VMWARE官網沒有列入 HCL,仍然很順利的安裝成功。

不過 ESXi 就如 VMWARE官方說明的,它沒有 Template 或是 Clone 的功能。

我自己的做法是,在這台 VMWARE ESXi 主機上,安裝一台 Windows XP Pro 虛擬機,

在上面安裝 VMWARE Converter Standalone Client

然後把要當成 Template 的 OS 安裝好後 Shutdown,

讓Windows XP Pro上的VMWARE Converter來做P2V 或 V2V,

這樣也不用在 Template OS 上安裝 VMWARE Converter ,可以讓 Template OS 單純一點,少吃一點資源。

很重要一點就是在P2V、V2V期間,我的筆電不用一直接著網路,也就是說它去做V2V,我還是可以準時下班...:P

 

虛擬化的好處:

  1. 公司在硬體採購總成本下降
  2. 公司資訊資產的利用率提高
  3. 公司資訊系統的可使用率提高(Down Time縮減)
  4. 公司要導入專案的系統建置期縮短
  5. 公司資訊系統的標準化
  6. 公司可以省下大筆電費
  7. 大幅降低IT人員的備份及維護工作時間及複雜度

......好處太多了講不完,身為資訊人員,不管是主管或是程式員,都應該去瞭解它。

而不應一味的抵抗,堅持用煙囪式的架構來建構資訊基礎建設。

在不景氣的時候,採用虛擬化技術,可以節省很多IT預算來做更多事。

PS. Dell T100支援 iSCSI SAN Boot

PS.此次使用的是VMWARE ESXi U4 for Dell Open Manager

PS.因為客戶的預算有限,採用的硬碟是SATA 1TB Hard Disk * 2,如果要追求更好的效能,最好將HD改成RAID 5 SAN架構。

PS. Dell T100暖機之後超安靜的,連Desktop的聲音都比它大聲。

PS. 規格配備:

  • Dell PowerEdge T100
  • Intel Xeon CPU X3220 2.4GHz (四核心)
  • 4GB RAM
  • SAS 6 SATA RAID Controler
  • WD 1TB SATA HD * 2

 

後記:前兩天把客戶另一台 Dell PowerEdge T100 也裝上 VMWARE ESXi 3.5 U5,這台的規格配備如下:

  • Dell PowerEdge T100
  • Intel Pentium Dual Core E2220 2.4GHz
  • 2GB RAM
  • SAS 6 SATA RAID Controller
  • WD 146GB SATA HD * 2

這台Dual Core機器跟前面那台Quad Core機器,價格上便宜大約2萬元左右,但是在導入虛擬化時,效能差很多,四核心這台機器,可以跑到八個 VM Guest;可是這台雙核心的,跑三個 VM Guest,感覺就快不行了!

CISCO & Panduit 規劃的企業資料中心

很多公司在 Data Center 規劃時,找到不夠專業的廠商,或是為了節省一時的預算,造成日後企業的重覆投資、維運成本增加等問題。

Data Center 不是一定要做得很大、很漂亮才叫專業。而是基礎建設是否扎實。

以下連結是CISCO與Panduit合作企業資料中心規範的簡介

www.cisco.com/en/US/prod/collateral/ps4159/ps6409/ps4358/at_a_glance_c45-492728_v2.pdf

VMWARE ESXi Guest OS 部署的幾種方法

  1. 透過VMWARE VirtualCenter Server(試用60天)
    • 安裝好VMWARE VirtualCenter Server之後,使用VMWARE Infrastructure Client登入它,就可以使用Templates、Clone、Import(Converter)的功能
    • VirtualCenter Server多出Alarms(警示)、Maps(網路架構拓譜)、Templates(Guest OS樣版)、Clone(備份複製)、Import(P2V、V2V)、Migrate(將VM遷移到另一台ESX/ESXi Server)、Update Manager(Update VM and ESX/ESXi Server)等功能
  2. 單純使用VMWARE Infrastructure Client的Datastore Browser工具(Freeware)
    • VMWARE Infrastructure Client雖然沒有內建Clone功能,但是還是可以透過Datastroe Browser來完成這項任務。
    • 首先在Datastore Browser底下建立新目錄(Create a New Folder);接著備份檔案,在Datastore Browser裡,選擇你要複製的系統 .vmdk  及 .vmx 檔案,按下滑鼠右鍵,選擇 Copy;然後滑鼠移到目的目錄,按下滑鼠右鍵,選擇 Paste 。等複製完成後,滑鼠點選複製出來的 .vmx 檔案,按下滑鼠右鍵,使用Rename功能,變更檔名;最後點選新的 .vmx 檔案,按下滑鼠右鍵,選擇 Add to Inventory
    • 這套軟體是VMWARE免費提供給使用者管理ESX/ESXi Server的軟體,它除了可以登入ESX/ESXi Server之外,也可以登入VMWARE VirtaulCenter Server。
  3. 透過VMWARE vCenter Converter Standardalone
    • 以vCenter Converter在做Clone可以不用把Guest OS關機,只要把它當成是實體主機做P2V即可。
  4. 以SSH登入ESXi Server,使用vmkfstools來建目錄及拷貝、更名;然後在建立新的虛擬機器時,選擇Custom,到後面要建立虛擬磁碟時,選擇 Use an existing virtual disk即可
    • PS.雖然使用 cp 指令也可以拷貝檔案,可是容易造成 ESXi Server Loading過重。
  5. 使用Thrid Party工具來複製,例如:VM Explorer、Veeam Backup

在執行 ping 指令時,如何指定 Source IP

PATHPING這個指令是Windows內建的指令,它有點類似ping與tracert的結合,

但是它可以多檢測一項就是路由節點是否支援RSVP,

除此之外,它也可以指定Source IP。

有經驗的網管者知道,在多個網路介面的設備上去PING,有時需要指定Source IP,以便判別問題原因。

微軟關於PATHPING的說明

微軟關於RSVP的說明

SCVMM管理Hyper-V要注意事項

當SCVMM把Hyper-V主機加入管理時,如果出現host needs attention

的訊息時,

請在Hyper-V伺服器上安裝以下兩個Patch

http://support.microsoft.com/?kbid=956589

http://support.microsoft.com/?kbid=956774

如此SCVMM就會顯示正常運作的Hyper-V圖示

SCVMM 2008管理VMWARE ESX Server的問題

今天試著要把VMWARE ESX Server加入SCVMM 2008去管理,

才發現之前微軟講的功能都是騙人的....

在SCVMM2008要加入ESX Server,還必須安裝VMWARE Virtual Center Server...

靠~邊站,我如果有Virtual Center Server的話,我還要用SCVMM2008幹麻!

這些在說明會上都不會講,等到使用者頭洗下去之後,也只能乖乖用它了。

這樣是不道德的.....

Hyper-V的網路卡問題

我裝了兩種版本的Hyper-V

  • Hyper-V標準版(只有文字介面)
  • Windows 2008 Enterprise Hyper-V(試用版)

在文字版本的Hyper-V底下,實體網路卡透過修改Registy來設定VLAN ID (VLAN 16)

但是當Hyper-V產生一張新網卡取代原有網卡時,卻沒有介面可以讓我改VLAN ID,造成網路中斷!

所以Hyper-V管理員、SCVMM 2008也救不了我。

在Windows 2008底下,有兩種狀況

一是增加Hyper-V角色時,沒有增加虛擬網路卡,日後到Hyper-V管理員的虛擬網路管理員去增新虛擬網路卡,並設定VLAN ID。

另一種狀況是在增加Hyper-V角色時,順便增加了虛擬網路卡,網路就立刻中斷!因為虛擬網卡取代了實體網卡,但是它預設的VLAN ID又不是我要的VLAN ID,這時就得進Hyper-V管理員,執行虛擬網路管理員,去啟用VLAN ID,並將VLAN ID改成我要的VLAN ID,網路才正常通行!

不知哪位善男信女可以幫我解決文字版本的VLAN ID問題...

後記:

對於微軟免費版本的 Hyper-V管理不易問題,下定決心改用 VMWARE ESXi

在這方面 VMWARE 做得就很好,基本管理程式都是免費,也很容易安裝,也不會遇到 Hyper-V 這種鳥問題

研究Hyper-V的設定管理

Hyper-V標準版安裝好之後,

只有一個選單及命令提示字元,而選單裡可用的功能又少得可憐。

所以得靠那個命令提示字元來執行。

其實很多Windows指令都可以執行

例如:netsh、netdom、regedit、taskmgr、dir、notepad、arp、chkdsk、defrag、cscript、doskey、ftp、net、ping、netstat、msinfo32、nslookup、shutdown、tracert...

你可以 dir *.exe /s 來找看看有哪些指令可用

也可以用 dir *.msc /s 來試看看有哪些指令可以執行

如何去設定Hyper-V標準版的網路卡VLAN ID

我們公司的網路環境比較複雜,所以必須設定Hyper-V的網路VLAN ID

沒設定VLAN ID之前網路都不通,所以也沒辦法用其他管理程式去設定

我也懶得去改 Switch、PC的VLAN,所以就只能去想辦法設定 Hyper-V的VLAN

偏偏Hyper-V標準版是沒有GUI介面可以操作設定

只有文字選單以及一個命令列,所以得另外想辦法來設定VLAN ID

找了半天一直找不到以指令設定VLAN ID的方法,

最後只好下狠招,

在命令提示字元,執行regedit

然後去搜尋VlanID,果然讓我找到VLAN ID的設定

修改VlanID並重開機之後,Hyper-V網路就通了!

或者簡單一點的方法,把以下內容存成.reg檔案,匯入後重新開機即可。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0000]
"VlanID"="69"

 

如何安裝Windows 2008 Hyper-V

  1. 開始安裝Windows 2008後,應該不會有太大問題,(如果選擇Server Core,就只有文字模式,如果選擇其他,就有GUI介面;旁邊的說明都很清楚),問題都在OS安裝完成之後。
  2. 去執行伺服器管理員,增加Hyper-V伺服器角色,之後會叫你重新開機。
  3. 重新開機完成後,會發現雖然可以執行Hyper-V管理員,但是卻不能用。你必須先去Run Microsoft Update,更新Hyper-V;當然,還是要重新開機。
  4. 總算可以開始建立Hyper-V虛擬伺服器了,但是你會發現兩個問題:
    • 無法加入網路卡(Not Connected)
    • 無法啟動虛擬伺服器
  5. 我們先處理無法啟動虛擬伺服器的問題,因為網路卡的部份,還有得忙哩。
  6. 無法啟動虛擬伺服器,這時要檢查一下你的硬體BIOS,是否把No-execute (NX) or DEP關掉了;所以,再重新開機一次吧,進入BIOS。在AMD CPU的主機上,BIOS應該是寫No Execute,Intel CPU的主機上,BIOS應該是寫Execute Disable Bit。把它設成Enable;好了,可以重新開機了。
  7. 重新開機完成後,請您試試看啟動之前的虛擬伺服器,如果在安裝OS過程中,會發生藍底白字的當機狀況,請將該虛擬伺服器刪掉,重新建立新的虛擬伺服器。
  8. 在建立新的虛擬伺服器之前,請先執行Hyper-V管理員裡的Virtual Network Manager去設定網路卡。
  9. Hyper-V網路卡有三種連線模式:
    • External:跟實體網卡一樣
    • Internal:只能跟本機實體伺服器連接
    • Private:只能虛擬伺服器之間互相連接
  10. 一般就用External就可以,記得要取個名字,這樣在建立虛擬伺服器時,才能選擇網路卡!
  11. 在建立虛擬伺服器時,預設會使用Network Adapter,請你在建立完成虛擬伺服器之後,再去額外設定新增一個Legacy Network Adapter,這張網卡才能被即將安裝的OS認得!
  12. 接下來就是安裝OS了;等到安裝完成之後,請先更新Patch到Service Pack 2以後版本,再去安裝Integration Service;這樣之前安裝OS時,有個不明的裝置才會變成網路卡。此外,安裝Integration Service之後,原本在遠端桌面底下無法操作的滑鼠才可以正常運作。
  13. 到此算是大功告成,其他就看你自己想要裝什麼了。

PS.如果你在Join Domain有問題,Windows 2008它有個像是Vista的管制功能,叫做「網路探索」。如果無法Join Domain,請把網路探索打開;如果還是不能Join Domain,請把WINS設上去。

Microsoft Hyper-V安裝記錄

安裝Hyper-V,硬體一定要是64bit

記得要把BIOS VT & Execute Disable Bit Enable起來

1.到Microsoft網站下載Hyper-V標準版

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-hk&FamilyID=6067cb24-06cc-483a-af92-b919f699c3a0

2.將該ISO檔燒成開機光碟

3.用Hyper-V光碟開機

4.Microsoft一貫的安裝程序(下一步、下一步、下一步...)

5.安裝完成之後,要Join Domain時,請先設定好網路

6.Join Domain

netdom HOSTNAME /domain:DOMAIN /userd:administrator /passwordd:DOMAIN_ADMINISTRATOR_PASSWORD

7.執行net user來增減帳號

8.在Vista上安裝管理介面

先下載Vista的Hyper-V管理工具來安裝

http://www.microsoft.com/downloads/details.aspx?FamilyID=bf909242-2125-4d06-a968-c8a3d75ff2aa&displaylang=zh-tw

安裝完後,要把它內嵌在MMC裡面

接下來去下載HVRemote.wsf 這個Script

執 行它去自動設定相關的元件、Firewall、帳號權,限等就可以去執行MMC來操作Hyper-V

(千萬不要誤會以為執行HVRemote.wsf就可以出現GUI)

PS.在 Vista上安裝管理程式還真是麻煩,如果安裝Windows 2008去管理又肥大,又佔記憶體!

如何建立CA

1.Join AD Domain

2.安裝IIS

3.安裝CA,選擇企業根 CA,記得要設定共用資料夾

4.在Active Directory站台及服務裡,點選視窗左半部的「Active Directory站台及服務」,按下滑鼠右鍵,選擇「檢視」→「顯示服務節點」。

PS.如果沒有檢視這個選項,請點選「連線到網域控制站」,再重新執行步驟4。

5.選擇 「Public Key Service」→「Certificate Templates」,找到「WebServer」的憑證範本,按右鍵選擇內容,安全性要勾選「讀取」及「註冊」

這樣就可以在IIS裡面使用立即傳送要求到線上憑證授權

PS.為了要做 Exchange RPC Over HTTPS,所以我才建了CA,如果企業有向Verisign, Histrust 等廠商申請SSL Key,就可以不必建置CA。

測試頻寬的軟體iperf

當一個IT人員經常會需要檢測分析網路頻寬狀況,如果設備支援SNMP,可以用SNMP去檢測頻寬。

如果設備不支援SNMP,或者SNMP根本被擋掉了,要怎麼去檢測流量呢?

總不成跟老闆兩手一攤說,設備不支援,沒辦法測量吧!

iperf這個軟體解決了這個問題!

軟體名稱:iperf

官方網站:http://dast.nlanr.net/Projects/Iperf/

軟體功能:檢測兩端點頻寬

軟體特點:

    • 提供多種平台程式,包括Windows、Linux、FreeBSD、Mac、Solaris…等等。

    • 支援IPV6

    • 可安裝成Windows Service

    • 支援多線緒

    • GUI介面(only 2.0.2版,需安裝JRE)

    • 可指定TCP或UPD

    • 可指定Port

以下介紹以2.0.2版為準

當Type點選Client時,會自動將Server選項變成灰色(Disable)。

F23_20080828092233557

如果點選Server時,會自動將Client選項變成灰色(Disable)。

F23_20080828092235715

所以不太容易設錯。

基本上,如果環境不複雜,大概用預設值就可以檢測了,只需要在Client端輸入Server IP即可。

設定好之後,按下Run,就開始執行。

當兩台電腦對測時,Server端先執行;此時Server端程式會切換到Output視窗,顯示Server端指令的命令行引數,以及相關設定,然後等待Client端連線。

接下來,執行Client端,Client端同樣會切換到Output視窗,顯示Client端指令的命令行引數以及相關設定,並且開始傳送資料。

此時,Server端及Client都會顯示每次傳送資料的速率。

F23_20080828092234712

PS.因為Server端的Output畫面跟Client端畫面差不多,所以我只Post Client端畫面。

等到傳送完成,會將資料傳送速率繪製成圖表!

F23_20080828092232759

如果要將測試結果存成文字檔,以便自行分析,也可以在Output視窗按下Save即可存檔。

如果你喜歡用命令行來執行,只要到C:\Program Files\iperf-2.0.2\bin就可以找到iperf.exe

檢測ping的小工具PingCmdr

要檢測網路品質,經常會需要用到Ping這個指令。

但是如果要用Ping這個指令來長時間檢測網路品質,卻不太合用!

沒有顯示每次Ping的時間,如果發現網路品質不良時,卻沒有時間可以讓IT人員可以用時間點去追溯其它問題。

如果要把Ping結果存成檔案,透過I/O轉向是可以辦到,可是螢幕畫面卻無法看到目前狀況!

如果要同時Ping很多IP,必須開一大堆視窗,畫面會很混亂。

奕飛資訊提供了一個免費的程式,可以幫我們解決這些問題。

軟體名稱:pingcmdr

官方網站:http://i-freelancer.net/

使用很簡單,只要按下新增,輸入你要Ping的IP;如果你要同時Ping很多目標,就多新增幾次IP!

按下開始之後,程式就會開始去Ping,此時,視窗下方會顯示目前Ping的狀況。

同時將Ping的狀況以日期為檔名存成檔案。

存檔內容如下:

使用很簡單吧!

PS.它唯一的缺點是,如果同時間 ping 多個目標,Log 會存成同一個檔案,要自己分開有點麻煩。

拯救 DOS下的進銷存系統

最近遇到許多朋友問我,公司有DOS下的古董進銷存軟體,搭配倚天中文來執行。

早期該系統是在Novell Server + DOS Client運行

可是現在要找DOS也很難了,Novell Server也沒幾個人會維護。

所以後來Server平台及Client平台都換成Windows 98。

還好Windows 95/98有倚天2000 for Windows可以使用。

可是漸漸的,連Windows 98都快被淘汰了,希望我想想辦法,繼續延長這個古董進銷存軟體的壽命。

如果是站在廠商的立場,我一定會說,更新吧!汰換吧!這樣我才有錢賺!

不過,站在朋友的立場上,決定還是來想想辦法,畢竟如果一套軟體適用於這個公司這麼久,都沒被淘汰,該公司也不會因為沒有導入什麼ERP而活不下去,我沒有理由要他們升級!

當然,選擇目前最 Popular 的作業環境大概就是 Windows XP Professional 吧,所以我就以它為解決方案的環境首選。

首先想辦法模擬出一個 DOS 環境,好讓倚天中文可以運作。

能夠在 Windows 環境底下把 DOS Run 的很順的大概就是 4DOS 了

所以用 4DOS 為基礎,要進行 DOS 環境設定,包括記憶體、顯示等問題。

設定好之後,就可以開始測試倚天中文了,試 Run 了一下,感覺還不錯,

以 ET16V-16 來執行中文系統,顯示/輸入都能正常,但是一Run More這個程式去做Display 暫停時,畫面就換死掉。

算了,這不是重點,先不管它。一般狀況能正常顯示,能正常輸入中文,能正常列印比較重要。

接下來就是印表機的問題,我的印表機是 USB 跟網路印表機,倚天中文根本不支援!

其實這也不難,只要在Windows XP底下安裝好,能正常列印就可以。

1.在Windows XP底下把安裝好的USB/網路印表機分享出來

2.執行Net Use命令「net use LPT1 \\127.0.0.1\USBPRINTER],讓LTP1 Port對應到USB印表機

3.去執行4DOS

4.在4DOS環境底下執行倚天中文,印表機設定到LTP1

這樣就可以從USB印表機輸出報表了!

PS.其實如果使用 VMWARE去跑 DOS,會更簡單解決,只是朋友公司的機器跑 XP 已經有點喘了,所以就打消跑 VMWARE 的想法了!

北海岸一日遊

這裡記錄北海岸可以玩樂的地方

  1. 淺水灣,這邊退潮時有沙灘、潮間帶;旁邊有餐廳、商店,有停車的空地(路邊也可以停車),還可以租沙灘車;漲潮期間,可以搭乘香蕉船。
  2. 淺水灣芝蘭社區
  3. 白沙灣
  4. 老梅公園
  5. 金山這邊有家不錯的餐廳「曼特寧咖啡」,以前它的招牌地標是一個大茶壺,現在茶壺已經拆掉了。這裡停車用餐很方便。
  6. 廢墟,這裡有一棟弧形的樓房,隔條馬路就是海邊,已經成了廢墟。這裡退潮時,潮間帶可以找到許多生物。現在也有行動咖啡業者開了一間廢墟咖啡。
  7. 富基漁港
  8. 石門洞
  9. 石門劉家肉粽,愛吃粽子的人可以到這邊來買

2009/07/22觀看日蝕

今天早上,同事問我有沒有光碟,我以為他要空白片,結果他只是要隨便一張光碟片。

據稱透過光碟片就可以看到日蝕。

不過因為光碟印刷的厚度顏色不一,其實無法很清楚的看到日蝕。

倒是有同事建議用3.5"磁片就可以清楚看見,結果還真是看到日偏蝕了。

不過手邊沒有相機,手機的相機也拍不下來…挺可惜的

街頭作畫的人

我跟我老婆倆人蜜月的方式是以捷運和步行進行的,因為我們倆來說,一切都是新鮮的冒險!

這天搭車來到 Charing Cross,途中經過Embankment,往 London Eye 前進。

一到 Embankment 對岸橋下,就看到一堆街頭藝人表演。

地圖圖片

我老婆本身學廣告設計的,所以對街頭作畫的人感到興趣,就把它給錄下來了。

之後當然沒錯過倫敦眼,票是前二天上網刷卡訂的。

地圖圖片

後記:這個場景在驚奇4超人2 銀色衝浪手有出現過。

坐完倫敦眼,就一路往 Tower Bridge 方向走去,不過還沒到 Tower Bridge ,時間就晚了,所以立即在 Y2K 橋往北走

這座橋的造型就像是Y字形。

地圖圖片

至於無緣走上一遭的 Tower Bridge只能眺望了

Tower Bridge可以說是倫敦的經典地標了,很多電影都取過景,例如:神鬼傳奇2、哈利波特…

地圖圖片

蜜月到尼斯

在尼斯的第一天,就是很悠閒隨性的走,走到海邊,再繞到城區。

海邊開闊的視野,讓人心情非常愉快。經過一個市集,看到有個人以玻璃當畫板、手指當畫筆作畫,覺得挺酷的,所以就把它錄下來了。

參觀米其林一星餐廳PETRUS

在倫敦蜜月的頭幾天,不是印度烤肉,就是Fish-n-Chips,再不然就是吃Sainsbury's的熟食,只為了省錢。

這天打算解禁,吃頓好的,順便了解一下米其林餐廳到底好在哪裡。

這家餐廳,是我在網路上看到網友介紹後,決定去朝聖的。所以就把它規劃到我們的蜜月行程去了。

這家餐廳的好,就不用我多費唇舌,有興趣的,可以看看網友的介紹。

以下錄影片段,是用餐完畢之後,領班帶我們去參觀廚房,剛好看到廚師現做甜點,就順便錄影了^_^!

後記:

我跟我老婆英文都很破,憑著傻膽就去了,結果點菜時服務人員介紹半天,我們都不知道他們在介紹什麼菜,最後由服務人員推薦。

我手邊帶的翻譯機字彙也太少,翻譯也不好,松露翻譯成菌類,Lamb也查不到…

回台灣後,剛好常年在英國居住的朋友回台灣,給他看過照片之後,才知道我們到底吃的是什麼…

餐廳官網 PETRUS

當時我是出發前兩個月,在官網上 Booking 的。

Microsoft Outlook 的 0x80040201 錯誤訊息

當您使用 Microsoft Outlook 寄送郵件時,發生 0x80040201 的錯誤訊息時,

請千萬不要魯莽的按照許多大陸網站的教法去移除 Office 檔案。

會發生這個問題,主要是因為使用者之前以 Exchange 方式收發電子郵件,而且使用全域通訊錄。

但是後來改用 SMTP 方式寄信後,無法再取得全域通訊錄資訊,但 Microsoft Outlook 卻又 Cache了以前寄信的全域通訊錄的 Exchange 地址,這在 SMTP Protocol(即便是Exchange Server)是不認得這玩意的,所以會發生這個問題。

您只要把您要寄送的信件打開,在每一個收件者上快點滑鼠左鍵兩下,如果有跳出錯誤訊息,就請您把該收件者刪掉,並重新 Key In,在 Key In 的同時,Microsoft Outlook 會跳出 Cache 的錯誤訊息,請您將游標選取後,按下 Del 鍵,就可以清除錯誤的 Cache,然後把收件者重新打好,就可以正常寄信了。

PS. MS Outlook 使用 Outlook.nk2 來儲存 Cache 的通訊錄,您可以下載 Nirsoft NK2View/NK2Edit 來編輯

如何將遠端電腦重新開機/關機

要將遠端電腦重新開機是很簡單的事,只要使用 Windows 內建的 shutdown 指令即可達成。

shutdown /r /m [遠端電腦名稱或IP] /t 0

重點是,如果遠端電腦具有管理權限的帳號及密碼都與本機電腦執行程式指令的帳號密碼不相符時,會導致該指令失敗。

但是利用一個小技巧就可以克服這個問題。

只要在執行 shtudown 之前,先執行

net use \\[遠端電腦名稱或IP]\c$ /user:[遠端電腦具有管理權限之帳號] [該帳號之密碼]

這樣就可以重新開機。

為安全起見,請在執行 shutdown之後,再執行

net use \\[遠端電腦名稱或IP]\c$  /delete

來刪除登入

PS. Shutdown 指令在不同的 Windows 平台上,參數引導符號不相同,有的是使用減號 -,有的是用斜線 /。命令遠端電腦重新開機時,引導符號要用本機的引導符號,不是遠端電腦的引導符號!

PS. 如果要關機,只要把 /r 參數改成 /s 參數即可!

2010年4月19日 星期一

Windows 7 也可以當無線基地台

網路上可以很容易找到有關使用指令或是 Connectify 免費軟體來建置虛擬的無線基地台,讓其他資訊設備可以共享上網。

但是很多人在執行 netsh wlan start hostednetwork 時,會遇到以下的錯誤訊息,

無法啟動主控網路。

群組或資源不是處在執行要求操作的正確狀態。

先說明一下,無線網路的共享連線,有兩種模式,一個是AP Mode,一個是Ad Hoc Mode

兩種模式的差異,在於:

使用 AP Mode,可以同一張無線網卡連線上 Internet ,同時共用給其他設備連線。

Ad Hoc Mode,無線網卡不能同時連線及分享,所以,必須要透過第二個網路介面分享連線,例如:有線網卡、3G網卡等等。

而 AP Mode是有限制特定型號的無線網卡!

例如:

  • Atheros AR5xxx/AR9xxx cards, driver version 8.0.0.238
  • Broadcom 4310-series (in many Dell laptops)
  • Broadcom 4321AG/4322AG/43224AG WLAN Adapter, driver version 5.60.18.8
  • D-link AirPlus G DWL-G510 Wireless PCI Adapter, driver version 3.0.1.0
  • D-Link DWA-140 RangeBooster N USB Adapter, driver version 3.0.3.0
  • Dell 1510 Wireless N adapter, Broadcom version,driver 5.60.18.8
  • Intel 5100/5300, WiFi Link 1000 BGN, driver version 13.0.0.107
  • Linksys Dual-Band Wireless-N USB Network Adapter(WUSB600N), driver version 3.0.10.0
  • Netgear 108 Mbit WG311T
  • Ralink RT2870 (in many 802.11n USB dongles)
  • Realtek RTL8187B (Win7 driver ver.1178)
  • Realtek RTL8187SE (with the drivers that came with Windows 7)
  • Realtek RTL8192u with 1370(Beta)
  • Sitecom Wireless USB Adapter 54g WL-608, with Ralink RT2870 drivers, version 3.0.9.0

如果你的無線網卡不是支援AP Mode的網卡,就不用去使用 netsh wlan 這一堆指令了!(因為要用的話,要設定一大堆參數,欲知詳細設定,請在命令列執行藍色字體的指令netsh wlan set profileparameter ?,或者看看後面匯出的設定檔)

建議您直接安裝 Connectify ,裝好之後,先去「開啟網路和共用中心」,接著選「變更介面卡設定」,將您要共享的連線介面分享出來 (請不要勾選讓使用者控制或停用該介面)

接著再到 Connectify 裡面去設定 Wi-Fi Name、Password、Internet(共享網路介面)、Mode即可完成共享。

想要更進一步瞭解它的設定

可以在命令列上輸入

netsh wlan show profile

就可以看到 Connectify 建立的 Profile Name

知道 Profile Name之後,可以把設定匯出成 XML 檔案

netsh wlan export profile name="XXXX"

以上XXXX請自行更換成你的 Profile Name

如果要匯入設定檔,請輸入以下指令

netsh wlan add profile filename="OOOO.XML" Interface="無線網路連線" user=current

以上OOOO.XML 請輸入您的 Profile File Name,如果您的無線網路介面有更改名稱,或是非繁體中文版,請自行變更為您的無線網卡名稱!

如何在命令列使用 nslookup

會突然需要在命令列使用 nslookup ,是因為太多 SPAMER ,直接連接 SMTP 25 Port

而不是透過 MX Record來送信。

因為公司 MX 指向 AntiSPAM 設備,所以透過 MX Record 寄信一定會被攔阻。

所以很多 SPAMER 就會直接寄送到 MailBox Server 的 SMTP Port。

但是 SMTP Port 又不能在防火牆上擋掉,因為同仁出差或是長駐在外的同仁會需要寄信。

此外,郵件是指名公司收件人,即便是 SMTP 設定要求帳密驗證,郵件伺服器也不會去驗證就收下來!

公司才30來人,平均一天就收到直接寄送的廣告信多達 700多封,平均每人每天會收到23封直接的廣告信,

我也不想用 ORDB, RBL 這類黑名單服務,因為誤判率太高。

所以想要把 SMTP Log 當中的 IP 列入 Deny IP List,但是在 列入之前,先查一下這些 IP 的反解,免得不小心擋到不該擋的信。

因為找不到 nslookup 的命令行引數說明,就自己亂 try 了一下

當我打錯引數時,會顯示 nslookup 的命令列用法,

但是在 Option 的部份,卻沒有太多說明,最後試了半天,才發現它會區分英文大小寫,打錯都不行!

例如:我要用 Google Public DNS Server 來查反解

nslookup -type=PTR A.B.C.D 8.8.8.8

type字要小寫,

PTR (Record Type)要大寫,

A.B.C.D 是要查的 IP or FQDN or Domain

8.8.8.8 這個是 Google Public DNS Server 的 IP

如果要將結果輸出到檔案,必須寫成

nslookup -type=PTR  > Resule.txt A.B.C.D 8.8.8.8

如果寫成

nslookup -type=PTR A.B.C.D 8.8.8.8 > Result.txt

會造成程式不斷將此指令寫入 Result.txt 無法結束。

其實最好的方法會是改變架構,讓所有 SMTP 都先經過 AntiSPAM 設備,不過我公司的 AntiSPAM 是委外的服務,並不提供 SMTP Relay,所以沒辦法改成這樣的架構。