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