在工業網絡場景中,可能會用到NAT的地方,包括現場級/工廠級/企業級之間存在地址重疊、廠區之間有系統互聯需求但使用了同網段、需要隱藏工業現場的IP地址、從工業現場總線過渡到工業以太網、前期信息網規劃不盡合理、淘工廠興起將線下工廠搬到線上等。本篇先為大家介紹雙向NAT在工業場景的應用。
場景一:工業現場會遇到客戶將網絡設備外包給第三方維護。操作員站與PLC無法通信,但均能與工業防火墻通信,在不修改網絡設備的情況下如何實現操作員站與PLC通信呢?
場景二:工業現場部署安全防護類產品時,常會遇到工業PLC無法配置網關、工業攝像機無法修改網關等問題,沒有網關或網關錯誤的情況下如何實現跨網段通信呢?
場景三:客戶現場由于當初規劃不合理,沒有將服務器單獨劃分網段或DMZ區域,內網用戶訪問內網服務器想隱藏內網地址,同時還想進行安全檢測及保護,應該如何解決?
一、雙向NAT介紹
1.1 什么是雙向NAT
雙向NAT是針對同一條流同時轉換報文的源IP地址和目的IP地址。
1.2 雙向NAT應用場景
① 域間雙向NAT:工業現場一些設備不允改動,例如網絡設備不能修改路由、工業攝像機無法修改網關、工業PLC無法配置網關。
② 域內雙向NAT:想讓內網用戶通過外網地址訪問DMZ區的服務器,且想經過出口墻檢查來增加安全性。
二、解決方案介紹
2.1 場景一解決方案介紹
① 需求:由于三層交換機到操作員站1(192.168.40.3)的路由沒有配置或配置錯誤,導致操作員站1與西門子PLC無法通信。在不修改三層交換機的情況下,實現操作員站1與西門子PLC通信。
② 方案:配置域間雙向NAT,來解決中間網絡設備沒有路由的場景。
③ 原理:通過域間雙向NAT,使操作員站1通過工業防火墻地址(192.168.40.1),來間接訪問到西門子PLC。PLC回應時通過防火墻地址(192.168.182.100),來將數據報文送達操作員站1。
2.2 場景二解決方案介紹
① 需求:由于PLC沒有配置網關或網關錯誤,導致操作員站1與西門子PLC無法通信。客戶反饋PLC沒有條件修改網關,希望在此件條件下能夠解決問題。
② 方案:配置域間雙向NAT,來解決PLC沒有網關或網關錯誤的場景。
③ 原理:通過域間雙向NAT,使操作員站1通過工業防火墻地址(192.168.40.1),來間接訪問到西門子PLC。PLC回應時通過訪問工業防火墻地址(192.168.120.1),此時是同網段不需要網關,發送ARP來獲取工業防火墻(192.168.120.1)接口的MAC來完成通信,最終將數據報文送達操作員站1。
2.3 場景三解決方案介紹
① 需求:由于管理員在規劃網絡時“偷懶”,將內網用戶和內網服務器規劃到同一個網段中。現在希望內網用戶通過外網地址訪問內網服務器。作用是隱藏內網服務器地址,并使流量經過防火墻,由此來提高網絡的安全性。
② 方案:配置域內雙向NAT,將內網用戶訪問內網服務器的報文的源地址進行轉換,轉換后源地址可以是外網地址池IP地址(也可以是內網地址,只要不和內網服務器地址在同網段),這樣內網服務器的回應報文就會被發送到防火墻。
③ 原理:配置域內雙向NAT,當內網用戶通過訪問防火墻外網地址(1.1.1.1),來間接訪問到內網服務器(10.1.1.2)時,防火墻將源地址轉換為地址池中地址(1.1.1.100)。此時服務器回應報文目的地址為地址池中地址(1.1.1.100),使流量仍然經過防火墻處理,再轉換后發給內網用戶。
三、典型案例-場景一
3.1 任務說明
三層交換機沒有到操作員站1的路由,導致操作員站1與西門子PLC無法通信,但均能與工業防火墻通信。在不修改三層交換機的情況下,完成操作員站1與西門子PLC通信。
3.2 配置說明
定義感興趣流
CLI(方法一):acl acl01 src-ip net 192.168.40.0 255.255.255.0 dst-ip net 192.168.40.1 255.255.255.255 protocol-object s7/mms permit
WEB(方法二):
配置域間雙向NAT
CLI(方法一):
nat acl acl01 dnat ip 192.168.120.101 no-port-transfer
nat acl acl01 snat ip 192.168.182.100 no-port-transfer
WEB(方法二):
3.3 驗證說明
在操作員站1用WinCC向西門子PLC下發溫度和濕度指令:
在工業防火墻上可以看到s7工業協議
在工業防火墻上可以看到查看會話信息:
分別在入口(192.168.40.1)和出口(192.168.182.100)抓包
通過會話和抓包,可以看到工業防火墻的域間雙向NAT轉換過程
1)IP報文從操作員站到西門子PLC的轉換過程:
操作員站下發的指令報文經過工業防火墻,目的地址(192.168.40.1)經過DNAT轉換為PLC地址(192.168.120.101):(Ge0/0/4)192.168.40.1:102[192.168.120.101:102],通過會話信息可以看到西門子S7協議使用TCP協議102端口。
源地址(192.168.40.3)經過SNAT轉換為工業防火墻地址(192.168.182.100):
(Ge0/0/5.30)192.168.40.3:63948[192.168.182.100:63948]。
這樣報文的源地址和目的地址就同時進行了轉換,即完成了域間雙向NAT。
2)IP報文從西門子PLC到操作員站的轉換過程:
當PLC的回應報文經過工業防火墻時,目的地址(192.168.182.100)根據session表((Ge0/0/5.30)192.168.40.3:63948[192.168.182.100:63948])轉換為操作員站地址(192.168.40.3)。
源地址(192.168.120.101)經session表((Ge0/0/4)192.168.40.1:102[192.168.120.101:102])轉換為工業防火墻地址(192.168.40.1)。
這樣報文再次進行域間雙向NAT轉換,報文的源地址和目的地址均進行了轉換。
3.4 NAT補充說明
細心的同學可能會問,會不會影響訪問工業防火墻的管理流量?可能會,有2個方案供參考。
工業防火墻啟用第三個口(建議是Ge0/0/0),插上第三根網線,也就是帶外管理啦。
SNAT和DNAT都可以增加地址池,方便內網和外網通過帶內的方式來管理工業防火墻。
四、典型案例-場景二
4.1 任務說明
PLC沒有配置網關或網關錯誤,導致操作員站1與西門子PLC無法通信。在不修改PLC的情況下,實現操作員站1與西門子PLC通信。
配置說明
① 定義感興趣流acl acl01 src-ip net 192.168.40.0 255.255.255.0 dst-ip net 192.168.40.1 255.255.255.255 protocol-object s7/mms permit
② 配置域間雙向NAT
nat acl acl01 dnat ip 192.168.120.101 no-port-transfer
nat acl acl01 snat ip 192.168.120.1 no-port-transfer
驗證說明
在操作員站1用WinCC向西門子PLC下發溫度和濕度指令:
在工業防火墻上可以看到s7工業協議
在工業防火墻上可以看到查看會話信息:
通過查看會話,可以看到工業防火墻的域間雙向NAT轉換過程
1)IP報文從操作員站到西門子PLC的轉換過程:
操作員站訪問西門子PLC的報文到達工業防火墻時,目的地址(192.168.40.1)經過DNAT轉換為西門子PLC(192.168.120.101):(Ge0/0/4)192.168.40.1:102[192.168.120.101:102]。
源地址(192.168.40.3)經過SNAT轉換為工業防火墻地址(192.168.120.1),與西門子PLC屬于同一網段:(Ge0/0/5.30)192.168.40.3:64066[192.168.120.1:64066] 。
這樣報文的源地址和目的地址就同時進行了轉換,即完成了域間雙向NAT。
2)IP報文從西門子PLC到操作員站的轉換過程:
西門子PLC的回應報文經過工業防火墻時,目的地址(192.168.120.1)根據session表((Ge0/0/5.30)192.168.40.3:64066[192.168.120.1:64066])轉換為操作員站地址(192.168.40.3)。
西門子PLC的源地址(192.168.120.101)根據session表((Ge0/0/4)192.168.40.1:102[192.168.120.101:102])轉換為工業防火墻地址(192.168.40.1)。
這樣報文再次進行域間雙向NAT轉換,報文的源地址和目的地址均進行了轉換。
4.3 西門子PLC沒有網關是如何通信的?如果操作員站沒有網關,域間雙向NAT可以解決嗎?
沒有網關還能跨網段通信的大體過程:當西門子PLC回應操作員站的請求時,發現自己的地址(192.168.120.101)和目的地址(192.168.120.1)在同一網段,此時西門子PLC就不會去查找路由,而是發送ARP廣播報文詢問目的地址對應的MAC地址。工業防火墻會收到ARP廣播,一看目的IP正是自己的(192.168.120.1),于是將(192.168.120.1)對應接口MAC地址發給西門子PLC,告訴PLC:“把回應報文發送給我即可”,所以西門子PLC將回應報文發送至工業防火墻,工業防火墻再對其進行后續處理。既然西門子PLC上省去了查找路由的環節,那就不用設置網關了,這就是配置域間雙向NAT的好處。
操作員站沒有網關,通過域間雙向NAT是可以解決的。此場景中操作員站1可以刪除網關,因為操作員站與工業防火墻在同網段。
五、典型案例-場景三
5.1 任務說明
內網用戶和內網服務器在同一個網段,使內網用戶通過外網地址訪問內網服務器。隱藏內網服務器地址,同時使流量經過防火墻來提高安全性。
5.2 配置說明
① 配置感興趣流、配置域內雙向NAT(DNAT配置)
CLI(方法一):
acl acl01 dst-ip net 1.1.1.1 255.255.255.255 permit
nat acl acl01 dnat ip 10.1.1.2 no-port-transfer
WEB(方法二):
② 配置感興趣流、配置域內雙向NAT(SNAT配置)
CLI(方法一):
acl acl02 src-ip net 10.1.1.3 255.255.255.255 permit
object address-pool address_pool
ip address 1.1.1.100 1.1.1.100
nat acl acl02 snat interface Ge0/0/3 ip-pool address_pool hash-mapping no-port-transfer
WEB(方法二):
5.3 驗證說明
① 訪問內網服務器(驗證http和ping)
② 查看會話(nat和icmp)
③ 查看抓包(icmp)
1)內網用戶處抓包
2)內網服務器抓包
④ 通過會話和抓包,可以清晰看到FW做了什么
1)IP報文從內網用戶到內網服務器的轉換過程:
當內網用戶訪問內網服務器的報文到達防火墻時,目的地址(1.1.1.1)經過DNAT轉換為內網服務器地址(10.1.1.2):(Ge0/0/2)1.1.1.1:NA[10.1.1.2:NA] 。
源地址(10.1.1.3)經過SNAT轉換為外網地址(1.1.1.100),與內網服務器(10.1.1.3)在不同網段:(Ge0/0/2)10.1.1.3:NA[1.1.1.100:NA] 。
這樣報文的源地址和目的地址就同時進行了轉換,即完成了域內雙向NAT。
② IP報文從內網服務器到內網用戶的轉換過程:
當內網服務器的回應報文經過防火墻時,目的地址(1.1.1.100)根據session表((Ge0/0/2)10.1.1.3:NA[1.1.1.100:NA])轉換為內網用戶地址(10.1.1.3)。
源地址(10.1.1.2)根據session表((Ge0/0/2)1.1.1.1:NA[10.1.1.2:NA])轉換為外網地址(1.1.1.1)。
這樣報文再次進行域內雙向NAT轉換,報文的源地址和目的地址均轉換為外網地址。
5.4 域內雙向NAT補充說明
① 文中說為了便于防火墻管理使用了地址池,但如果不使用地址池地址,直接使用外網出口地址可以嗎?
1)直接使用外網出口地址是可以的,一樣可以達到需求所要求的效果。
2)其實內網地址也是可以的,只要不和內網服務器在同一網段即可。
② 也許有人會說“內網用戶與內網服務器連接防火墻的不同口,會有什么變化呢?”
1)如果將內網用戶和內網服務器通過不同的接口連接到防火墻,此時內網用戶和內網服務器交互的所有報文會經過防火墻轉發,所以只配置DNAT就可以了。
2)關鍵要明確NAT轉換的方向和轉換后地址的作用,而不要糾結于轉換后是外網地址還是內網地址,靈活應用域內雙向NAT可以起到事半功倍的效果。
六方云作為工業互聯網的資深廠商,有責任和義務盡可能多的向合作伙伴及客戶,傳播正能量的、有價值的、更具深度的解決方案和技術原理,幫助客戶解決問題的同時也實現我們公司的自身價值。
來源:IT時代網
IT時代網(關注微信公眾號ITtime2000,定時推送,互動有福利驚喜)所有原創文章版權所有,未經授權,轉載必究。
創客100創投基金成立于2015年,直通硅谷,專注于TMT領域早期項目投資。LP均來自政府、互聯網IT、傳媒知名企業和個人。創客100創投基金對IT、通信、互聯網、IP等有著自己獨特眼光和豐富的資源。決策快、投資快是創客100基金最顯著的特點。
小何
小何
小何
小何