奚波
摘要:在局域網絡客戶端管理工作中,怎樣對網絡中的客戶端進行分類命名,對客戶端的IP地址進行合理的分配,是一項繁雜而又細致的重要工作。該文通過具體實驗操作的模式,介紹了如何使用SQLServer數(shù)據(jù)庫對網絡中的客戶端進行分類命名管理,使用VLAN對局域網進行了合理的劃分。逐步探索出了一套行之有效的客戶端管理方案,借此讓更多的網絡管理人員可以制定出適合自己醫(yī)院的局域網客戶端信息管理方案,以此來規(guī)范醫(yī)院網絡管理,提高工作效率。
關鍵詞:SQLServer數(shù)據(jù)庫;局域網;客戶端管理
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)16-0033-03
1 局域網管理中的難點
一個單位的局域網內存在著大量的不同類型的客戶端。從客戶端的性質來分,有面對普通用戶的PC客戶端和移動終端(包括手機、平板電腦等),有網絡打印機和掃描儀等網絡終端設備,有大型醫(yī)療設備,有作為網絡交換節(jié)點的交換機路由器防火墻等網絡設備。
這么多不同種類的客戶端同時存在于一個大型的局域網絡內部,怎樣對它們進行嚴格有效的管理與控制,是網絡管理人員所要面對的重要課題。而這個課題的核心就是客戶端的IP地址和機器名的分配以及其他各種重要信息的記錄,如客戶端的MAC地址、序列號、操作系統(tǒng)版本等。
在一個大型的局域網中,這些信息的記錄與管理得好與不好,直接關系到這個局域網的工作效率。如果信息的記錄散亂不全,就會給網絡管理工作帶來諸多不便。例如想定位某一臺客戶端,卻不知道這臺客戶端的IP地址,而普通網絡用戶又不知道該怎樣查看自己操作的客戶端的IP地址,或者是給客戶端分配IP地址和計算機名,但是由于記錄的混亂,而導致IP地址和計算機名重復分配。
為了解決這些長期困擾我們的問題,筆者通過實踐,并查閱了大量的資料,逐步探索出了一套行之有效的客戶端信息管理方案。
2 局域網客戶端信息管理的方案
本方案由兩大部分構成:局域網VLAN配置和客戶端信息的分配與保存。局域網VLAN配置是將整個局域網按照不同的樓層分割成一個個單獨的VLAN。客戶端信息的分配與保存則由前臺應用程序和后臺數(shù)據(jù)庫共同完成。
首先介紹一下本單位局域網的拓撲,如圖1所示。
本單位的局域網是一個典型的三層結構的局域網,經過多年的建設,形成了以兩臺H3C10508、一臺華為S7712、一臺華為S7703交換機組成的OSPF區(qū)域為核心,以單模光纖為骨干,以匯聚和接入交換機為節(jié)點的交換網絡。
2.1 局域網VLAN配置
VLAN(Virtual Local Area Network)的中文名為“虛擬局域網”,它的作用是在物理的交換機上劃分出一個個邏輯的局域網,分割局域網的廣播域。在局域網中使用VLAN和OSPF路由協(xié)議作為劃分廣播域的工具,劃分原則是在接入交換機上的每一個端口分配一個指定的VLANID,在核心交換機上配置有對應VLANID的VLAN Interface(虛擬接口)作為每個VLAN的網關,這些VLAN的網關可以為各個VLAN之間的數(shù)據(jù)進行路由,同時可以分割廣播域。核心交換機之間通訊則采用OSPF路由協(xié)議進行路由交換[1]。
每個VLAN中包含一個100.100.X.0/24網絡,子網掩碼長度默認為24,也就是說每個VLAN可以包含254個可用IP地址,除了最后一個網關地址100.100.X.254以外,還有253個IP地址可以分配給工作站使用,網關地址分配給VLAN Interface,如圖2所示。
每個VLAN Interface中除了網關地址以外還有DHCP服務的配置。這個DHCP服務的作用是給第一次接入網絡的客戶端提供一個臨時的IP地址,讓客戶端上運行的前臺程序可以判斷本客戶端所屬的網絡地址段。
2.2 客戶端信息的分配與保存
本單位的科室按照職責分為兩級科室,一級科室有七個:門診、病區(qū)、醫(yī)技科室、行政科室、信息中心、藥劑科室、財務科室,每個一級科室下再分為若干個二級科室。每個二級科室都有若干臺客戶端。每個客戶端的核心信息是計算機名、IP地址和MAC地址,其中計算機名和IP地址采用了“池”的方式來進行管理,即預先設置好計算機名池和IP地址池,計算機名池的分配規(guī)則是每一個二級科室都有253個計算機名,如兒科的計算機名就是:兒科001—兒科253;IP地址池的分配規(guī)則根據(jù)前面VLAN的設置,每一個VLAN中有253個IP地址可以分配給工作站使用。需要給客戶端分配資源時,從池中取出分配就可以了。
為了方便數(shù)據(jù)的保存和調用,本方案使用SQLServer數(shù)據(jù)庫來保存科室信息、計算機名池和IP地址池。在數(shù)據(jù)庫中新建了三個數(shù)據(jù)表:ZD_NETWORK_DEPT、ZD_NETWORK_COMPUTERNAME_POOL、ZD_NETWORK_IPADDRESS_POOL,分別保存科室信息、計算機名池和IP地址池。下面詳細介紹一下這三個表的結構[2]。
1)ZD_NETWORK_DEPT(科室信息表)
這個表里保存的是醫(yī)院一、二級科室的對應關系以及每一個二級科室客戶端名的前綴。此表主要有四個數(shù)據(jù)列:SERIAL_NO、PARENT_DEPT、DEPT_NAME、COMPUTER_NAME_PREFIX。數(shù)據(jù)列的定義如表1。
取計算機名的規(guī)律是客戶端名前綴再加上序列號001—253,客戶端名前綴默認的和二級科室名是一樣的,但有些二級科室的名字比較長,如“胃腸肝膽外科護理單元”,后面再加上序列號的話,會造成計算機名超過NETBIOS解析的允許長度15個字符,所以這里使用了客戶端名前綴,此前綴的長度不超過12個字符,再加上3位序列號,總長度正好不超過15個字符。
2)ZD_NETWORK_COMPUTERNAME_POOL(計算機名池)
這個表里保存的是預先設置好的醫(yī)院二級科室所有計算機名。此表主要有COMPUTER_NAME_PREFIX、COMPUTER_ID、COMPUTER_NAME、ENTER_DATE、FREE_NAME、MAC_ADDRESS六個數(shù)據(jù)列。數(shù)據(jù)列的定義如表2所示。
在這個表中為每一個二級科室都預先寫入了253條數(shù)據(jù),計算機名按照序列號的順序寫入,ENTER_DATE和MAC_ADDRESS置為NULL,F(xiàn)REE_NAME默認為1。某個二級科室的客戶端需要使用計算機名的時候,首先從ZD_NETWORK_DEPT表中查詢到本科室的客戶端前綴,再按照客戶端前綴從表中按照COMPUTER_ID從小到大的順序找到第一個FREE_NAME為1的計算機名,找到以后,將FREE_NAME置為0,MAC_ADDRESS置為客戶端的MAC地址,表示此計算機名已經被客戶端占用,ENTER_DATE置為當前時間,也就是此計算機名的啟用時間。
3)ZD_NETWORK_IPADDRESS_POOL(IP地址池)
這個表里保存的是預先設置好的醫(yī)院所有的IP地址。這個表的部分結構與ZD_NETWORK_COMPUTERNAME_POOL類似,如表3所示。
與ZD_NETWORK_COMPUTERNAME_POOL類似,在表ZD_NETWORK_IPADDRESS_POOL中,按照每一個VLAN中IP地址的范圍,把每一個IP地址都寫入了表中,ENTER_DATE和MAC_ADDRESS置為NULL,F(xiàn)REE_IP默認為1。某個客戶端需要分配IP地址的時候,首先要從自動獲取的IP地址來判斷出自己所屬的VLAN,按照這個VLAN從表中按照COMPUTER_ID從小到大的順序找到第一個FREE_IP為1的IP地址,找到以后,將FREE_IP置為0,MAC_ADDRESS置為客戶端的MAC地址,表示此IP地址已經被客戶端占用,ENTER_DATE置為當前時間,也就是此IP地址的啟用時間。
此外,表ZD_NETWORK_IPADDRESS_POOL中還可以記錄客戶端使用的操作系統(tǒng)、機器序列號、機器型號、操作系統(tǒng)用戶名、操作系統(tǒng)密碼等信息。
4)前臺應用程序
前面所述的三個數(shù)據(jù)庫表在實際使用過程中,如果全部使用手工進行操作,也是十分不方便的。其中有些信息必須要使用軟件才能獲取到,因此使用[3]VB.NET開發(fā)了兩個前臺應用程序:“修改計算機名.exe”和“開機運行.exe”。后臺數(shù)據(jù)庫根據(jù)前臺應用程序的運行結果,記錄下客戶端的IP地址、機器名的分配記錄以及其他重要信息。
“修改計算機名.exe”在一臺客戶端第一次啟用的時候運行,界面如圖3所示。
在左側的樹狀選擇欄中選擇需要的二級科室,點擊“新建計算機”按鈕,程序就在表ZD_NETWORK_COMPUTERNAME_POOL中按照COMPUTER_ID從小到大的順序找到第一個FREE_NAME為1的計算機名,找到以后,會顯示在文本框中。點擊“修改本機計算機名”按鈕,就可以將計算機名修改為文本框中的內容了。
“修改本機計算機名”按鈕中的代碼是以“System.Management”對象為基礎,使用[4]WMI腳本來修改計算機名,其中的關鍵代碼如下所示。
Dim ComputerCollection As ManagementObjectCollection
Dim queryComputer As ManagementObjectSearcher = New ManagementObjectSearcher("select * from win32_computersystem")
ComputerCollection = queryComputer.Get()
Dim SetHostName, NewHostName As ManagementBaseObject
For Each mo As ManagementObject In ComputerCollection
NewHostName = mo.GetMethodParameters("rename")
NewHostName.SetPropertyValue("Name", 計算機名)
NewHostName.SetPropertyValue("Password", 管理員密碼)
NewHostName.SetPropertyValue("UserName", 管理員用戶名)
SetHostName = mo.InvokeMethod("rename", NewHostName, Nothing)
ReturnCode = SetHostName("returnValue")
If ReturnCode = "0" Then
‘將FREE_NAME置為0,MAC_ADDRESS置為客戶端的MAC地址,表示此計算機名已經被客戶端占用
updatesql = New Data.SqlClient.SqlCommand
updatesql.CommandText = "update ZD_NETWORK_COMPUTERNAME_POOL set free_name=0,mac_address=@m where computer_name=@1"
updatesql.Connection = sqlca
updatesql.Parameters.AddWithValue("@m", MACAddress)
updatesql.Parameters.AddWithValue("@1", 計算機名)
updatesql.ExecuteNonQuery()
MsgBox("修改計算機名成功!")
Else
MsgBox("修改計算機名失敗!錯誤代碼:" + ReturnErrorMessage(ReturnCode), MsgBoxStyle.Critical)
Return
End If
Exit For
Next
修改完計算機名之后,要執(zhí)行sql腳本,將FREE_NAME置為0,MAC_ADDRESS置為客戶端的MAC地址,表示此計算機名已經被客戶端占用。
“開機運行.exe”將添加到系統(tǒng)啟動項中,這個程序的功能主要有兩個:
①將客戶端的桌面背景修改為統(tǒng)一的背景色,并在右下角顯示客戶端的IP地址和計算機名,這個功能的作用是方便普通用戶了解客戶端的IP地址,在客戶端操作出現(xiàn)問題與管理員進行溝通時,將IP地址告知管理員,方便管理員進行遠程管理。
②在系統(tǒng)第一次開機時,網卡的IP地址是從前文所述的核心交換機上的DHCP地址池中獲取的。開機運行程序后,首先會從網卡自動獲取的IP地址中讀出網關IP,通過網關IP得出客戶端屬于哪個VLAN,再從表ZD_NETWORK_IPADDRESS_POOL中對應VLAN的IP地址段中按照COMPUTER_ID從小到大的順序找到第一個FREE_IP為1的IP地址,找到以后,將FREE_IP置為0,MAC_ADDRESS置為客戶端的MAC地址,表示此IP地址已經被客戶端占用。
獲得一個固定的IP地址以后,使用WMI腳本來修改IP地址,其中的關鍵代碼如下所示[5]。
Dim SetIPAddress, NewIPAddress, setGateway, newGateway As ManagementBaseObject
'修改IP地址
NewIPAddress = mo.GetMethodParameters("EnableStatic")
NewIPAddress.SetPropertyValue("IPAddress", IPAddress)
NewIPAddress.SetPropertyValue("SubnetMask", SubnetMask)
SetIPAddress = mo.InvokeMethod("EnableStatic", NewIPAddress, Nothing)
ReturnCode = SetIPAddress("returnValue")
'修改網關
newGateway = mo.GetMethodParameters("SetGateways")
newGateway.SetPropertyValue("DefaultIPGateway", GateWay)
newGateway.SetPropertyValue("GatewayCostMetric", Metric)
setGateway = mo.InvokeMethod("SetGateways", newGateway, Nothing)
ReturnCode = setGateway("returnValue")
修改好IP地址以后,程序還會通過WMI腳本獲取客戶端使用的操作系統(tǒng)、機器序列號、機器型號等數(shù)據(jù),然后一并寫入ZD_NETWORK_IPADDRESS_POOL表,供管理員調用。
2.3 網絡設備的IP地址管理
網絡打印機、掃描儀或其他聯(lián)網的醫(yī)療設備需要管理員手動指定IP地址,并在ZD_NETWORK_IPADDRESS_POOL表中做記錄。其中尤其要注意的是,醫(yī)院中的專業(yè)醫(yī)療設備都是由專門的廠商來維護的,在設備進場安裝調試的時候,一定要事先向網絡管理員申請IP地址,而不能自行從DHCP服務中獲取地址,再將獲取的地址保存到設備中,這樣會造成IP地址分配的混亂。
3 總結
以上所述的這套局域網客戶端信息管理方案在本單位的實際工作中得到了很好的使用效果,大大減輕了網絡客戶端管理工作的強度。在采用技術管理的同時,再加上嚴格的管理制度,最終解決了客戶端信息記錄混亂的問題,并在此基礎上實現(xiàn)了對網絡中的資源進行合理的劃分。
參考文獻:
[1] 朱小平,施游.網絡規(guī)劃設計師5天修煉[M].北京:中國水利水電出版社,2018.
[2] 劉俊強.SQL Server 2008入門與提高[M].北京:清華大學出版社,2014.
[3] 鄭阿奇.Visual Basic.NET實用教程[M].3版.北京:電子工業(yè)出版社,2018.
[4] Marcin Polich.WMI技術指南[M].北京:機械工業(yè)出版社,2002.
[5] Win32_ComputerSystem 類[EB/OL].[2021-10-20]. https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/win32-computersystem.
【通聯(lián)編輯:代影】