李瑞明,王雨峰,陳先勇,邱紹申,王琳楊
(許繼電氣股份有限公司,河南 許昌 461000)
隨著智能變電站工程建設(shè)的推進(jìn),一大批新設(shè)備、新技術(shù)和新系統(tǒng)在智能變電站中得到了應(yīng)用,在提高全站總體智能水平的同時(shí),也帶來了全站設(shè)備增加、投入增大、系統(tǒng)過多和信息交互困難等一系列問題。為規(guī)范智能變電站的建設(shè),滿足“大運(yùn)行”“大檢修”的需求,國家電網(wǎng)公司組織編寫了智能變電站一體化監(jiān)控系統(tǒng)系列規(guī)范[1]。規(guī)范中,首次提出電力系統(tǒng)數(shù)據(jù)通信網(wǎng)關(guān)機(jī)的概念。
數(shù)據(jù)通信網(wǎng)關(guān)機(jī)是變電站的一種通信裝置,用于實(shí)現(xiàn)變電站與調(diào)度、生產(chǎn)等主站系統(tǒng)之間的通信,為主站系統(tǒng)實(shí)現(xiàn)變電站監(jiān)視控制、信息查詢和遠(yuǎn)程瀏覽等功能提供數(shù)據(jù)、模型和圖形的傳輸服務(wù)。數(shù)據(jù)通信網(wǎng)關(guān)機(jī)作為變電站網(wǎng)絡(luò)對(duì)調(diào)度通信的直接接口,在常規(guī)遠(yuǎn)動(dòng)四遙信息的基礎(chǔ)上,增加了順序控制、時(shí)鐘監(jiān)測功能,并將原圖形網(wǎng)關(guān)機(jī)、繼電保護(hù)信息子站、故障錄波器的調(diào)度通信接口集于一身。
功能的擴(kuò)充,導(dǎo)致數(shù)據(jù)通信網(wǎng)關(guān)機(jī)提供的服務(wù)內(nèi)容多、數(shù)據(jù)量大,系統(tǒng)架構(gòu)也因此變得復(fù)雜。針對(duì)數(shù)據(jù)通信網(wǎng)關(guān)機(jī)體系架構(gòu)有諸多討論,主要分為兩個(gè)方向:
(1)集中實(shí)現(xiàn)所有服務(wù)的全部功能[2-3]。程序設(shè)計(jì)要考慮數(shù)據(jù)采集、存儲(chǔ)、轉(zhuǎn)發(fā)的全過程,涉及功能模塊較多,對(duì)處理器和存儲(chǔ)設(shè)備的要求高。
(2)僅實(shí)現(xiàn)調(diào)度通信功能,將數(shù)據(jù)采集、存儲(chǔ)布置在變電站內(nèi)網(wǎng)專用設(shè)備上[4-5]。程序設(shè)計(jì)仍要考慮調(diào)度通信接口開發(fā),同時(shí)數(shù)據(jù)采集、存儲(chǔ)設(shè)備也要進(jìn)行相應(yīng)的接口設(shè)計(jì),網(wǎng)絡(luò)結(jié)構(gòu)相對(duì)復(fù)雜。
服務(wù)內(nèi)容和主站數(shù)量的增加,將不可避免產(chǎn)生IP和端口沖突問題。目前,網(wǎng)關(guān)機(jī)設(shè)計(jì)普遍采用前置通信代理模塊[6]的方案。
數(shù)據(jù)準(zhǔn)確性和及時(shí)性,是數(shù)據(jù)通信網(wǎng)關(guān)機(jī)研究關(guān)注的重點(diǎn)之一。關(guān)于網(wǎng)關(guān)機(jī)雙機(jī)切換模式和防誤發(fā)漏發(fā)信號(hào)問題的探討[7-8]時(shí)有出現(xiàn)。
調(diào)度數(shù)據(jù)網(wǎng)安全問題一直是智能電網(wǎng)建設(shè)的重點(diǎn)[9],作為了變電站網(wǎng)絡(luò)與調(diào)度數(shù)據(jù)網(wǎng)的主要接口設(shè)備,數(shù)據(jù)通信網(wǎng)關(guān)機(jī)的安全狀態(tài)與網(wǎng)絡(luò)安全問題息息相關(guān)。
本文從數(shù)據(jù)通信網(wǎng)關(guān)機(jī)架構(gòu)的角度出發(fā),通過研究Linux內(nèi)核集成的Iptables在數(shù)據(jù)通信網(wǎng)關(guān)機(jī)中的應(yīng)用,提出一種基于網(wǎng)絡(luò)地址轉(zhuǎn)換的數(shù)據(jù)通信網(wǎng)關(guān)機(jī)分布式服務(wù)方案,并通過數(shù)據(jù)包過濾的方式加強(qiáng)變電站網(wǎng)絡(luò)和調(diào)度數(shù)據(jù)網(wǎng)的安全。
網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT)屬接入廣域網(wǎng)(WAN)技術(shù),是一種將內(nèi)網(wǎng)地址轉(zhuǎn)化為外網(wǎng)地址的轉(zhuǎn)換技術(shù),它被廣泛應(yīng)用于各種類型Internet接入方式和各種類型的網(wǎng)絡(luò)中。NAT不僅完美地解決了IP地址不足的問題,而且還能夠有效地避免來自網(wǎng)絡(luò)外部的攻擊,隱藏并保護(hù)網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)。NAT的實(shí)現(xiàn)方式有三種,即靜態(tài)轉(zhuǎn)換、動(dòng)態(tài)轉(zhuǎn)換和端口多路復(fù)用[10]。
網(wǎng)絡(luò)地址轉(zhuǎn)換對(duì)局域網(wǎng)IP端口進(jìn)行轉(zhuǎn)換,掩藏局域網(wǎng)IP信息,具有很好的安全性,被廣泛集成于防火墻中[11]。
數(shù)據(jù)通信網(wǎng)關(guān)機(jī)在調(diào)度數(shù)據(jù)網(wǎng)絡(luò)中作為服務(wù)器端,以一個(gè)(或兩個(gè))固定IP接入調(diào)度數(shù)據(jù)網(wǎng)??刹捎枚丝诙嗦窂?fù)用技術(shù),以數(shù)據(jù)包源IP(主站IP)、目的IP(網(wǎng)關(guān)機(jī)接入IP)和端口號(hào)為依據(jù),通過NAT轉(zhuǎn)換技術(shù)實(shí)現(xiàn)對(duì)服務(wù)程序的選擇。
Iptables是Linux內(nèi)核集成的IP信息包過濾系統(tǒng)。系統(tǒng)防火墻在過濾信息包時(shí),遵循固定的規(guī)則,這些規(guī)則存儲(chǔ)在專用的信息包過濾表中,而這些表集成在 Linux 內(nèi)核中。IP信息包過濾系統(tǒng)Iptables是一款功能強(qiáng)大的工具,可用于添加、編輯和移除規(guī)則,實(shí)現(xiàn)設(shè)備收發(fā)數(shù)據(jù)包的雙向過濾等功能[12]。Iptables處理數(shù)據(jù)包流程如圖1所示。
圖1 Iptables工作流程
數(shù)據(jù)通信網(wǎng)關(guān)機(jī)可通過在INPUT和OUTPUT中設(shè)置過濾規(guī)則(fileter),實(shí)現(xiàn)對(duì)進(jìn)出網(wǎng)關(guān)機(jī)報(bào)文的過濾。
數(shù)據(jù)通信網(wǎng)關(guān)機(jī)提供的服務(wù),分為必須經(jīng)過處理和可直接透明轉(zhuǎn)發(fā)兩種。必須經(jīng)過處理的服務(wù)主要有常規(guī)四遙信息,這類服務(wù)的服務(wù)端只能布置在數(shù)據(jù)通信網(wǎng)關(guān)機(jī)上??芍苯油该鬓D(zhuǎn)發(fā)的服務(wù)主要有繼保信息子站和故障錄波器,數(shù)據(jù)通信網(wǎng)關(guān)機(jī)相應(yīng)功能可采用分布式服務(wù)設(shè)計(jì),僅提供一個(gè)通道,將服務(wù)端直接布置在內(nèi)網(wǎng)專用設(shè)備上。具體功能的實(shí)現(xiàn)依賴于Iptables的NAT轉(zhuǎn)換功能。Iptables在數(shù)據(jù)通信網(wǎng)關(guān)機(jī)中的應(yīng)用除了NAT轉(zhuǎn)換,還包含了安全隔離功能。
數(shù)據(jù)通信網(wǎng)關(guān)機(jī)內(nèi)部各應(yīng)用之間通過服務(wù)IP和端口號(hào)進(jìn)行區(qū)分,Iptables通過區(qū)分調(diào)度數(shù)據(jù)網(wǎng)接收數(shù)據(jù)包的源IP、目的IP和端口號(hào)來選擇對(duì)應(yīng)的應(yīng)用。調(diào)度與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)內(nèi)部應(yīng)用通信的處理過程如圖2所示。
圖2 對(duì)數(shù)據(jù)通信網(wǎng)關(guān)機(jī)內(nèi)部應(yīng)用的NAT轉(zhuǎn)換
圖2的處理,將通過本地接口10.16.133.30:2404收到的主站16.10.1.1的數(shù)據(jù)包,轉(zhuǎn)換目的端口為2405后,發(fā)送給目標(biāo)應(yīng)用程序。
轉(zhuǎn)換過程中,僅需對(duì)數(shù)據(jù)包的接入IP和端口號(hào)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的IP和端口號(hào)是目標(biāo)應(yīng)用實(shí)際提供服務(wù)的IP和端口號(hào)。通信過程中,調(diào)度看到的通信雙方是調(diào)度主站(16.10.1.1)與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)調(diào)度接口(10.16.133.30:2404),而網(wǎng)關(guān)機(jī)應(yīng)用程序看到的通信雙方則是服務(wù)接口(10.16.133.30:2405)與調(diào)度主站(16.10.1.1)。
分布式服務(wù)位于變電站內(nèi)網(wǎng)設(shè)備上。變電站內(nèi)不同設(shè)備通過IP進(jìn)行區(qū)分,端口號(hào)則根據(jù)服務(wù)內(nèi)容固定。Iptables通過區(qū)分調(diào)度數(shù)據(jù)網(wǎng)接收數(shù)據(jù)包的源IP、目的IP和端口號(hào)來選擇所對(duì)應(yīng)的設(shè)備。根據(jù)是否對(duì)數(shù)據(jù)包的源IP(主站IP)進(jìn)行轉(zhuǎn)換,分為兩種不同的數(shù)據(jù)包處理過程。
1)不轉(zhuǎn)換主站IP
不轉(zhuǎn)換主站IP的數(shù)據(jù)包處理方式與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)本機(jī)應(yīng)用程序處理相似,區(qū)別僅在于轉(zhuǎn)換后的目的IP并非數(shù)據(jù)通信網(wǎng)關(guān)機(jī)IP,而是變電站局域網(wǎng)其他設(shè)備的IP。調(diào)度與變電站局域網(wǎng)設(shè)備通信不轉(zhuǎn)換主站IP的處理過程如圖3所示。
圖3 對(duì)分布式服務(wù)的NAT轉(zhuǎn)換(源IP不轉(zhuǎn)換)
圖3的處理,將通過本地接口10.16.133.30:3000收到的主站16.10.1.1的數(shù)據(jù)包,轉(zhuǎn)換目的IP為 10.100.100.1后,發(fā)送給變電站局域網(wǎng)的圖形網(wǎng)關(guān)機(jī)。
轉(zhuǎn)換過程中,僅需對(duì)數(shù)據(jù)包的IP和端口號(hào)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后的IP和端口號(hào)為實(shí)際提供服務(wù)的設(shè)備IP和端口號(hào)。由于通信過程中未進(jìn)行源地址(調(diào)度IP)的NAT轉(zhuǎn)換,調(diào)度IP(16.10.1.1)將直接與圖形網(wǎng)關(guān)機(jī)IP(10.100.100.1)通信。由于二者不在一個(gè)子網(wǎng)內(nèi),圖形網(wǎng)關(guān)機(jī)需要將網(wǎng)關(guān)機(jī)IP(10.100.100.7)將成為本地網(wǎng)關(guān)。通信過程中,調(diào)度看到的通信雙方是調(diào)度主站(16.10.1.1)與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)調(diào)度接口(10.16.133.30:3000),而圖形網(wǎng)關(guān)機(jī)看到的通信雙方則是服務(wù)接口(10.100.100.1:3000)與調(diào)度主站(16.10.1.1)。
2)轉(zhuǎn)換主站IP
轉(zhuǎn)換主站IP的數(shù)據(jù)包處理過程,是在目的IP和端口號(hào)轉(zhuǎn)換的基礎(chǔ)上,增加對(duì)源IP(主站IP)的轉(zhuǎn)換。數(shù)據(jù)包處理過程如圖4所示。
圖4 對(duì)分布式服務(wù)的NAT轉(zhuǎn)換(源IP轉(zhuǎn)換)
圖4的處理,將通過本地接口10.16.133.30:3000收到的主站16.10.1.1的數(shù)據(jù)包,除進(jìn)行目的IP和端口號(hào)轉(zhuǎn)換外,還將源IP更換為10.100.100.7。轉(zhuǎn)換過程中,需要使用兩條轉(zhuǎn)換規(guī)則,一條使用在路由前(從調(diào)度數(shù)據(jù)網(wǎng)收到數(shù)據(jù)包時(shí)),進(jìn)行目的IP和端口號(hào)轉(zhuǎn)換;另一條是路由后(向內(nèi)網(wǎng)發(fā)送數(shù)據(jù)包時(shí)),進(jìn)行源IP轉(zhuǎn)換。
通信過程中,調(diào)度看到的通信雙方是調(diào)度主站(16.10.1.1)與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)調(diào)度接口(10.16.133.30:3000),而圖形網(wǎng)關(guān)機(jī)看到的通信雙方則是服務(wù)接口(10.100.100.1:3000)與數(shù)據(jù)通信網(wǎng)關(guān)機(jī)(10.100.100.7)。由于10.100.100.7與10.100.100.1都在內(nèi)網(wǎng)內(nèi),圖形網(wǎng)關(guān)機(jī)也不需要再添加網(wǎng)關(guān)。
數(shù)據(jù)通信網(wǎng)關(guān)機(jī),在與調(diào)度通信過程中,充當(dāng)服務(wù)器角色,只對(duì)特定的主站提供固定的服務(wù)。因此,本側(cè)IP和端口、對(duì)側(cè)IP都相對(duì)固定。通過Iptalbes添加過濾規(guī)則,可實(shí)現(xiàn)對(duì)網(wǎng)關(guān)機(jī)與調(diào)度數(shù)據(jù)網(wǎng)通信雙向IP數(shù)據(jù)包的過濾。
對(duì)于數(shù)據(jù)通信網(wǎng)關(guān)機(jī)接收的調(diào)度數(shù)據(jù)網(wǎng)的數(shù)據(jù)包,使用INPUT規(guī)則鏈,默認(rèn)配置丟棄,只接受指定源IP、目標(biāo)IP和端口的方案,避免調(diào)度數(shù)據(jù)網(wǎng)非法主機(jī)對(duì)變電站非法訪問或合法主機(jī)對(duì)變電站的額外數(shù)據(jù)請(qǐng)求。
iptables -A INPUT -i eth2 -p tcp -m multiport--dport 2404, 102,3000,60000,60001 -j ACCEPT
iptables -A INPUT -i eth2 -p icmp -j ACCEPT
iptables -A INPUT -i eth2 -j DROPT
規(guī)則1實(shí)現(xiàn)了對(duì)網(wǎng)絡(luò)接口eth2接收?qǐng)?bào)文過濾,處理或轉(zhuǎn)發(fā)IEC104(2404端口)、IEC61850(102端口)、DLT476(3000端口)、IEC103(60000和60001端口)服務(wù)和ICMP協(xié)議,并配置默認(rèn)丟棄數(shù)據(jù)包。
對(duì)于數(shù)據(jù)通信網(wǎng)關(guān)機(jī)發(fā)到調(diào)度數(shù)據(jù)網(wǎng)的數(shù)據(jù)包,使用OUTPUT規(guī)則鏈,才用與INPUT相同的包過濾規(guī)則,可以在數(shù)據(jù)包發(fā)出前進(jìn)行阻攔,使不出現(xiàn)在調(diào)度數(shù)據(jù)網(wǎng)絡(luò)上。
iptables -A OUTPUT -o eth2 -p tcp -m multiport --sport 2404, 102,3000,60000,60001 -j ACCEPT
iptables -A OUTPUT -o eth2 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth2 -j DROPT
規(guī)則2在網(wǎng)絡(luò)接口eth2發(fā)送方向上,實(shí)現(xiàn)了與接收相同的過濾規(guī)則。
實(shí)踐中發(fā)現(xiàn),在不啟動(dòng)網(wǎng)絡(luò)代理前置模塊的情況下,僅依靠Iptables的NAT轉(zhuǎn)換功能,數(shù)據(jù)通信網(wǎng)關(guān)機(jī)各項(xiàng)功能運(yùn)行正常,應(yīng)用程序與主站映射關(guān)系清晰,并且能適應(yīng)本地多服務(wù)IP、多服務(wù)端口、多主站IP和雙平面允許互訪等復(fù)雜情況的需求。
Iptables實(shí)現(xiàn)的分布式服務(wù)方案,通過系統(tǒng)內(nèi)核直接將報(bào)文轉(zhuǎn)發(fā)給提供服務(wù)的變電站內(nèi)網(wǎng)設(shè)備。數(shù)據(jù)通信網(wǎng)關(guān)機(jī)在服務(wù)中,僅起支撐通道的作用,優(yōu)化了數(shù)據(jù)通信網(wǎng)關(guān)機(jī)架構(gòu)設(shè)計(jì)(如圖5所示)。圖5中,四遙信息(a、b、c)由數(shù)據(jù)通信網(wǎng)關(guān)機(jī)直接提供,通過NAT轉(zhuǎn)換后的目的IP仍是數(shù)據(jù)通信網(wǎng)關(guān)機(jī)的固有IP或虛擬IP。故障錄波器(d)、保護(hù)信息子站(e)和圖形網(wǎng)關(guān)機(jī)(f)在變電站內(nèi)網(wǎng)設(shè)備上有專用服務(wù)器,通過NAT轉(zhuǎn)換,將調(diào)度對(duì)數(shù)據(jù)網(wǎng)關(guān)機(jī)的數(shù)據(jù)請(qǐng)求轉(zhuǎn)換為直接對(duì)內(nèi)網(wǎng)服務(wù)器的設(shè)備請(qǐng)求。這種分布式服務(wù)方案,數(shù)據(jù)通信網(wǎng)關(guān)機(jī)上架構(gòu)設(shè)計(jì)簡潔,省去不必要的應(yīng)用,節(jié)省了軟硬件成本,提高工作效率,同時(shí)省去了通信中間轉(zhuǎn)換環(huán)節(jié),也使數(shù)據(jù)的及時(shí)性和可靠性得到提高。雙網(wǎng)獨(dú)立轉(zhuǎn)發(fā),滿足冗余通道的需求。
圖5 數(shù)據(jù)通信網(wǎng)關(guān)機(jī)運(yùn)行數(shù)據(jù)流
通過Iptables的報(bào)文過濾,可完全阻斷數(shù)據(jù)通信網(wǎng)關(guān)機(jī)對(duì)調(diào)度數(shù)據(jù)網(wǎng)和變電站內(nèi)網(wǎng)廣播和非法的連接請(qǐng)求,同時(shí)也能過濾來自調(diào)度數(shù)據(jù)非法的服務(wù)請(qǐng)求、非法客戶端的連接和客戶端的不對(duì)應(yīng)服務(wù)請(qǐng)求,極大提高了網(wǎng)絡(luò)安全。
Linux內(nèi)核集成的Iptables不僅可以實(shí)現(xiàn)數(shù)據(jù)通信網(wǎng)關(guān)機(jī)的網(wǎng)絡(luò)地址轉(zhuǎn)換功能和基于網(wǎng)絡(luò)地址轉(zhuǎn)換的數(shù)據(jù)通信網(wǎng)關(guān)機(jī)分布式服務(wù)方案,同時(shí)也能很好地實(shí)現(xiàn)數(shù)據(jù)通信網(wǎng)關(guān)機(jī)與調(diào)度數(shù)據(jù)網(wǎng)和變電站內(nèi)網(wǎng)的網(wǎng)絡(luò)數(shù)據(jù)安全隔離。Iptables由Linux系統(tǒng)內(nèi)核集成,具有可靠性高、開發(fā)周期短和成本低等特點(diǎn),在數(shù)據(jù)通信網(wǎng)關(guān)機(jī)的開發(fā)中有廣闊的應(yīng)用前景。