絡(luò)運(yùn)維實(shí)戰(zhàn):從CIDR原理到防火墻“開(kāi)墻”配置全解析)
1. 項(xiàng)目概述從“開(kāi)墻”需求到網(wǎng)絡(luò)地址規(guī)劃最近在排查一個(gè)網(wǎng)絡(luò)訪問(wèn)問(wèn)題時(shí)又遇到了那個(gè)經(jīng)典且令人頭疼的場(chǎng)景開(kāi)發(fā)同事跑過(guò)來(lái)說(shuō)某個(gè)部署在測(cè)試環(huán)境的服務(wù)突然無(wú)法訪問(wèn)了報(bào)錯(cuò)是“連接超時(shí)”。一通檢查下來(lái)防火墻策略、服務(wù)狀態(tài)都正常最后問(wèn)題出在了一個(gè)不起眼的地方——IP地址段沒(méi)配對(duì)。對(duì)方給的服務(wù)器地址是10.0.20.5而我們安全策略里只放行了10.0.10.0/24這個(gè)網(wǎng)段。類似xx.xx.xx.0/24或/23這樣的網(wǎng)絡(luò)地址規(guī)劃問(wèn)題看似基礎(chǔ)卻往往是網(wǎng)絡(luò)連通性故障的“罪魁禍?zhǔn)住庇绕涫窃谏婕翱绮块T(mén)協(xié)作、云資源混合部署或者安全策略也就是大家常說(shuō)的“開(kāi)墻”、“加白名單”時(shí)。所謂“開(kāi)墻”在運(yùn)維和網(wǎng)絡(luò)工程師的日常交流中通常指在防火墻、安全組或網(wǎng)絡(luò)訪問(wèn)控制列表ACL上添加一條允許規(guī)則讓特定來(lái)源的IP地址能夠訪問(wèn)特定的目標(biāo)服務(wù)。這個(gè)過(guò)程的核心輸入往往就是一個(gè)或一段IP地址。而10.0.10.0/24或172.16.32.0/23這樣的寫(xiě)法就是用來(lái)精確描述一段IP地址范圍的專業(yè)術(shù)語(yǔ)叫“無(wú)類別域間路由”CIDR表示法。/24、/23后面的數(shù)字叫做“前綴長(zhǎng)度”它和子網(wǎng)掩碼一一對(duì)應(yīng)直接決定了這個(gè)網(wǎng)段里有多少個(gè)可用的IP地址。很多人覺(jué)得這很簡(jiǎn)單但實(shí)際操作中寫(xiě)錯(cuò)一位數(shù)字、混淆了/24和/23的含義就可能導(dǎo)致策略失效要么該通的沒(méi)通要么不該通的卻通了帶來(lái)安全風(fēng)險(xiǎn)。這篇文章我就以一個(gè)老運(yùn)維的視角幫你徹底搞懂IP地址/前綴長(zhǎng)度這套表示法。我們不止于理論更會(huì)深入到實(shí)際工作中當(dāng)你拿到一個(gè)類似192.168.1.0/24的需求時(shí)如何準(zhǔn)確理解它、計(jì)算它、驗(yàn)證它并最終形成正確的安全策略。無(wú)論你是剛?cè)胄械倪\(yùn)維新手還是經(jīng)常需要和運(yùn)維打交道的開(kāi)發(fā)、測(cè)試同學(xué)理解這些都能讓你在排查網(wǎng)絡(luò)問(wèn)題時(shí)更加得心應(yīng)手。2. 核心概念拆解IP地址、子網(wǎng)掩碼與CIDR在動(dòng)手配置任何網(wǎng)絡(luò)規(guī)則之前我們必須對(duì)幾個(gè)核心概念有清晰的認(rèn)識(shí)。這就像蓋房子要先看懂圖紙理解IP地址、子網(wǎng)掩碼和CIDR之間的關(guān)系是正確進(jìn)行網(wǎng)絡(luò)規(guī)劃和安全配置的基石。2.1 IP地址的本質(zhì)與分類IP地址互聯(lián)網(wǎng)協(xié)議地址是分配給網(wǎng)絡(luò)上每個(gè)設(shè)備的唯一標(biāo)識(shí)符用于定位和尋址。目前廣泛使用的是IPv4地址由32位二進(jìn)制數(shù)組成通常用“點(diǎn)分十進(jìn)制”表示如192.168.1.1。每一段0-255對(duì)應(yīng)8位二進(jìn)制。過(guò)去我們常聽(tīng)說(shuō)A、B、C類地址這是基于IP地址前幾位進(jìn)行的分類類ful路由但這種方式地址浪費(fèi)嚴(yán)重。例如一個(gè)需要300臺(tái)主機(jī)的公司申請(qǐng)一個(gè)C類地址/24254個(gè)可用地址不夠申請(qǐng)一個(gè)B類地址/1665534個(gè)可用地址又浪費(fèi)巨大。因此CIDR無(wú)類別域間路由取代了這種分類方式它允許更靈活地劃分網(wǎng)絡(luò)/24、/23正是CIDR的表示法。一個(gè)關(guān)鍵的理解當(dāng)我們說(shuō)192.168.1.0/24時(shí)這里的192.168.1.0并不是一個(gè)可分配給設(shè)備使用的IP地址它是這個(gè)子網(wǎng)的“網(wǎng)絡(luò)地址”。同樣192.168.1.255是這個(gè)子網(wǎng)的“廣播地址”。真正可供主機(jī)使用的地址范圍是192.168.1.1到192.168.1.254。在配置防火墻規(guī)則時(shí)很多系統(tǒng)會(huì)自動(dòng)排除網(wǎng)絡(luò)地址和廣播地址但明確知道這個(gè)范圍對(duì)于手動(dòng)計(jì)算和驗(yàn)證至關(guān)重要。2.2 子網(wǎng)掩碼界定網(wǎng)絡(luò)與主機(jī)子網(wǎng)掩碼Subnet Mask是一串32位的數(shù)字用來(lái)指明IP地址中哪些位代表網(wǎng)絡(luò)部分哪些位代表主機(jī)部分。網(wǎng)絡(luò)部分相同的IP地址屬于同一個(gè)子網(wǎng)可以直接通信在二層網(wǎng)絡(luò)內(nèi)網(wǎng)絡(luò)部分不同則需要通過(guò)路由器網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā)。子網(wǎng)掩碼也常用點(diǎn)分十進(jìn)制表示如255.255.255.0。將其轉(zhuǎn)換為二進(jìn)制連續(xù)為1的部分對(duì)應(yīng)網(wǎng)絡(luò)位連續(xù)為0的部分對(duì)應(yīng)主機(jī)位。255.255.255.0的二進(jìn)制是11111111.11111111.11111111.00000000意味著前24位是網(wǎng)絡(luò)位后8位是主機(jī)位。這直接引出了CIDR表示法/24。CIDR表示法如/24就是子網(wǎng)掩碼中“1”的個(gè)數(shù)。它比點(diǎn)分十進(jìn)制更簡(jiǎn)潔尤其在書(shū)寫(xiě)和配置大量規(guī)則時(shí)。/24255.255.255.0/23255.255.254.0/16255.255.0.0/32255.255.255.255代表單個(gè)精確的IP地址2.3 CIDR表示法的深度解析與計(jì)算理解了CIDR是掩碼位長(zhǎng)度后我們就可以進(jìn)行實(shí)際計(jì)算了。這是網(wǎng)絡(luò)工程師和運(yùn)維人員的基本功。1. 計(jì)算一個(gè)CIDR塊包含的IP地址總數(shù)公式是可用IP數(shù)量 2^(32 - 前綴長(zhǎng)度) - 2 這里的“-2”就是減去網(wǎng)絡(luò)地址和廣播地址。但請(qǐng)注意在某些上下文中比如某些云平臺(tái)的安全組或路由表可能會(huì)使用包含這兩個(gè)地址的“網(wǎng)段”概念但在主機(jī)配置和大多數(shù)防火墻規(guī)則中我們關(guān)心的是可用的主機(jī)地址。/24: 2^(32-24) - 2 2^8 - 2 256 - 2 254個(gè)可用地址。/23: 2^(32-23) - 2 2^9 - 2 512 - 2 510個(gè)可用地址。/30: 2^(32-30) - 2 2^2 - 2 4 - 2 2個(gè)可用地址常用于點(diǎn)到點(diǎn)鏈路。2. 根據(jù)CIDR確定具體的IP地址范圍這是“開(kāi)墻”時(shí)最實(shí)用的技能。假設(shè)我們拿到一個(gè)需求允許10.0.20.0/23網(wǎng)段訪問(wèn)。步驟1將IP地址轉(zhuǎn)換為二進(jìn)制。10.0.20.0的二進(jìn)制為00001010.00000000.00010100.00000000步驟2根據(jù)/23確定網(wǎng)絡(luò)位。/23意味著前23位是網(wǎng)絡(luò)位固定不變。第24位及以后是主機(jī)位可以變化。00001010.00000000.0001010 | 0.00000000豎線|之前是23位網(wǎng)絡(luò)位之后是9位主機(jī)位步驟3計(jì)算起始地址網(wǎng)絡(luò)地址和結(jié)束地址廣播地址。網(wǎng)絡(luò)地址主機(jī)位全為0。即00001010.00000000.0001010**0**.00000000轉(zhuǎn)換回十進(jìn)制是10.0.20.0。廣播地址主機(jī)位全為1。即00001010.00000000.0001010**1**.11111111轉(zhuǎn)換回十進(jìn)制是10.0.21.255。步驟4得出可用地址范圍。因此10.0.20.0/23這個(gè)網(wǎng)段覆蓋的所有IP地址注意是包含網(wǎng)絡(luò)和廣播地址的整個(gè)段是從10.0.20.0到10.0.21.255。而可分配給設(shè)備使用的地址是10.0.20.1到10.0.21.254。注意一個(gè)非常常見(jiàn)的誤區(qū)有人看到/23可能會(huì)覺(jué)得它是“兩個(gè)/24的合并”但具體是哪兩個(gè)從上面的計(jì)算可以看出10.0.20.0/23合并了10.0.20.0/24和10.0.21.0/24。它的起始點(diǎn)必須是主機(jī)位第24位為0的地址。如果給你的是10.0.21.0/23那就是無(wú)效的CIDR表示因?yàn)?0.0.21.0的二進(jìn)制第三段是00010101其最后一位屬于網(wǎng)絡(luò)位是1不符合主機(jī)位全0的定義。有效的表示應(yīng)是10.0.20.0/23。3. 實(shí)戰(zhàn)場(chǎng)景“開(kāi)墻”操作的全流程解析理論清晰后我們進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。當(dāng)業(yè)務(wù)方提出“需要為xx.xx.xx.0/24這個(gè)網(wǎng)段開(kāi)通對(duì)某端口訪問(wèn)權(quán)限”時(shí)一個(gè)專業(yè)的運(yùn)維人員應(yīng)該如何思考和操作這個(gè)過(guò)程遠(yuǎn)不止是在界面上添加一條規(guī)則。3.1 需求澄清與驗(yàn)證避免“想當(dāng)然”的錯(cuò)誤這是最關(guān)鍵的一步很多故障都源于需求傳遞失真。確認(rèn)IP地址段的準(zhǔn)確性直接向需求方索要完整的CIDR表示例如192.168.100.0/24。如果對(duì)方只給了IP和子網(wǎng)掩碼如192.168.100.1255.255.255.0你需要驗(yàn)證其網(wǎng)絡(luò)地址。192.168.100.1/24的網(wǎng)絡(luò)地址是192.168.100.0但192.168.100.123/24的網(wǎng)絡(luò)地址也是192.168.100.0。在配置防火墻規(guī)則時(shí)我們通常使用網(wǎng)絡(luò)地址192.168.100.0來(lái)代表整個(gè)段。明確訪問(wèn)關(guān)系是單向訪問(wèn)還是雙向通?!伴_(kāi)墻”指開(kāi)放入方向Ingress的訪問(wèn)。需要明確源SourceIP段是什么目標(biāo)Destination是哪個(gè)IP的哪個(gè)端口或端口范圍協(xié)議是TCP還是UDP確認(rèn)環(huán)境與對(duì)象這條規(guī)則是加到公司數(shù)據(jù)中心的硬件防火墻、服務(wù)器的本地防火墻如iptables、云平臺(tái)的安全組還是負(fù)載均衡的ACL上不同的平臺(tái)配置語(yǔ)法和粒度可能不同。評(píng)估安全風(fēng)險(xiǎn)/24意味著最多254個(gè)IP/23是510個(gè)。這個(gè)范圍是否過(guò)大是否有可能縮小到更精確的范圍例如某個(gè)具體的服務(wù)器IP或一個(gè)/30的管理段永遠(yuǎn)遵循最小權(quán)限原則。實(shí)操心得我習(xí)慣在收到需求后用郵件或辦公軟件書(shū)面確認(rèn)并附上我的理解“根據(jù)溝通我將為源IP段10.0.20.0/23即10.0.20.1至10.0.21.254添加一條規(guī)則允許其訪問(wèn)目標(biāo)服務(wù)器172.16.1.100的TCP 8080端口。請(qǐng)確認(rèn)?!?這能有效避免后續(xù)扯皮。3.2 工具輔助快速計(jì)算與校驗(yàn)手動(dòng)計(jì)算二進(jìn)制固然可靠但效率低且易錯(cuò)。善用工具能極大提升準(zhǔn)確性和速度。命令行工具ipcalc命令Linux這是網(wǎng)絡(luò)工程師的瑞士軍刀。直接輸入ipcalc 10.0.20.0/23它會(huì)輸出網(wǎng)絡(luò)地址、廣播地址、子網(wǎng)掩碼、可用地址范圍、地址總數(shù)等所有信息一目了然。$ ipcalc 10.0.20.0/23 Address: 10.0.20.0 00001010.00000000.0001010 0.00000000 Netmask: 255.255.254.0 23 11111111.11111111.1111111 0.00000000 Wildcard: 0.0.1.255 00000000.00000000.0000000 1.11111111 Network: 10.0.20.0/23 00001010.00000000.0001010 0.00000000 HostMin: 10.0.20.1 00001010.00000000.0001010 0.00000001 HostMax: 10.0.21.254 00001010.00000000.0001010 1.11111110 Broadcast: 10.0.21.255 00001010.00000000.0001010 1.11111111 Hosts/Net: 510 Class A, Private Internetnmap命令nmap -sL 10.0.20.0/23可以列出該網(wǎng)段內(nèi)所有可能的主機(jī)地址用于快速掃描或確認(rèn)范圍。在線計(jì)算器 在瀏覽器搜索 “CIDR calculator” 或 “子網(wǎng)計(jì)算器”有很多優(yōu)秀的網(wǎng)頁(yè)工具。輸入IP和前綴長(zhǎng)度能即時(shí)得到所有信息并且通常支持IPv6。腳本自動(dòng)化 對(duì)于需要頻繁處理此類任務(wù)的環(huán)境可以寫(xiě)一個(gè)簡(jiǎn)單的Python腳本。Python的ipaddress庫(kù)是處理IP地址的利器。import ipaddress net ipaddress.ip_network(10.0.20.0/23, strictFalse) print(f網(wǎng)絡(luò)地址: {net.network_address}) print(f廣播地址: {net.broadcast_address}) print(f子網(wǎng)掩碼: {net.netmask}) print(f可用地址數(shù): {net.num_addresses - 2}) # 減去網(wǎng)絡(luò)和廣播 print(f第一個(gè)可用地址: {list(net.hosts())[0]}) print(f最后一個(gè)可用地址: {list(net.hosts())[-1]}) # 檢查一個(gè)IP是否在此網(wǎng)段內(nèi) if ipaddress.ip_address(10.0.20.123) in net: print(IP在網(wǎng)段內(nèi))3.3 配置實(shí)施以常見(jiàn)防火墻為例理解了網(wǎng)段并確認(rèn)了需求后我們來(lái)看如何在不同的平臺(tái)上實(shí)施。這里以最常見(jiàn)的iptablesLinux本地防火墻和云平臺(tái)安全組為例。場(chǎng)景允許10.0.20.0/23網(wǎng)段訪問(wèn)本機(jī)假設(shè)IP為192.168.1.100的TCP 80端口。1. 使用 iptables 配置# 添加一條規(guī)則到INPUT鏈的頂端 sudo iptables -I INPUT -p tcp --dport 80 -s 10.0.20.0/23 -j ACCEPT # 解釋 # -I INPUT: 在INPUT鏈的頭部插入規(guī)則優(yōu)先級(jí)高 # -p tcp: 協(xié)議為T(mén)CP # --dport 80: 目標(biāo)端口80 # -s 10.0.20.0/23: 源地址為10.0.20.0/23網(wǎng)段 # -j ACCEPT: 動(dòng)作為接受 # 保存規(guī)則根據(jù)發(fā)行版不同 sudo iptables-save /etc/iptables/rules.v4 # 對(duì)于使用iptables-persistent的系統(tǒng) # 或 sudo netfilter-persistent save2. 在阿里云/騰訊云安全組配置云平臺(tái)的安全組配置通常有圖形界面在“入方向規(guī)則”中添加一條授權(quán)策略允許協(xié)議類型TCP (80)端口范圍80/80授權(quán)對(duì)象源10.0.20.0/23優(yōu)先級(jí)按需設(shè)置數(shù)字越小優(yōu)先級(jí)越高3. 在Windows防火墻高級(jí)安全配置通過(guò)“高級(jí)安全Windows Defender防火墻”控制臺(tái)創(chuàng)建入站規(guī)則。規(guī)則類型端口協(xié)議和端口TCP特定本地端口 80操作允許連接作用域在“遠(yuǎn)程IP地址”部分添加10.0.20.0/23這個(gè)IP地址范圍。重要注意事項(xiàng)在配置任何防火墻規(guī)則后務(wù)必先在本機(jī)或同網(wǎng)段一臺(tái)測(cè)試機(jī)上驗(yàn)證再通知需求方。驗(yàn)證命令如telnet 目標(biāo)IP 80或curl -v http://目標(biāo)IP。同時(shí)要檢查規(guī)則是否被其他更高優(yōu)先級(jí)的拒絕規(guī)則所覆蓋。4. 進(jìn)階網(wǎng)絡(luò)規(guī)劃與CIDR塊劃分對(duì)于需要自己規(guī)劃內(nèi)部網(wǎng)絡(luò)如數(shù)據(jù)中心、云VPC的工程師來(lái)說(shuō)理解如何從一個(gè)大的地址塊中劃分出/24、/23甚至更小的子網(wǎng)是一項(xiàng)核心技能。4.1 子網(wǎng)劃分的邏輯與實(shí)例假設(shè)公司分配到一個(gè)私有地址段172.16.0.0/16需要為不同的部門(mén)如研發(fā)、測(cè)試、生產(chǎn)劃分獨(dú)立的子網(wǎng)。目標(biāo)為研發(fā)部劃分一個(gè)約500個(gè)IP地址的子網(wǎng)。確定所需的主機(jī)位數(shù)需要 500 個(gè)可用地址。根據(jù)公式 2^n - 2 500n至少為92^9 -2 510。所以主機(jī)位需要9位。計(jì)算網(wǎng)絡(luò)位IPv4總共32位主機(jī)位占9位則網(wǎng)絡(luò)位為 32 - 9 23位。所以我們需要一個(gè)/23的子網(wǎng)。從父網(wǎng)段中劃分172.16.0.0/16的地址范圍是172.16.0.0到172.16.255.255。我們需要從中切出一個(gè)個(gè)/23的塊。第一個(gè)/23子網(wǎng)172.16.0.0/23范圍172.16.0.0-172.16.1.255第二個(gè)/23子網(wǎng)172.16.2.0/23范圍172.16.2.0-172.16.3.255第三個(gè)/23子網(wǎng)172.16.4.0/23范圍172.16.4.0-172.16.5.255... 以此類推。 我們可以將172.16.0.0/23分配給研發(fā)部。目標(biāo)為某個(gè)小型應(yīng)用集群劃分一個(gè)約10個(gè)IP地址的子網(wǎng)用于服務(wù)器和管理。確定主機(jī)位數(shù)需要 10 個(gè)地址2^n -2 10n最小為42^4 -214。主機(jī)位需要4位。計(jì)算網(wǎng)絡(luò)位32 - 4 28位。所以是/28的子網(wǎng)。劃分可以從172.16.0.0/23這個(gè)研發(fā)網(wǎng)段中繼續(xù)劃分。172.16.0.0/28(范圍:172.16.0.0-172.16.0.15, 可用IP:.1-.14)172.16.0.16/28(范圍:172.16.0.16-172.16.0.31)...4.2 路由聚合Summarization與超網(wǎng)Supernet這是與子網(wǎng)劃分相反的操作。當(dāng)你有多個(gè)連續(xù)的小網(wǎng)段時(shí)可以在上游路由器上將它們合并成一個(gè)大網(wǎng)段通告以簡(jiǎn)化路由表。這正是/23這類掩碼的另一個(gè)重要應(yīng)用。例如你的網(wǎng)絡(luò)中有兩個(gè)連續(xù)的/24網(wǎng)段10.0.10.0/24和10.0.11.0/24。在向核心路由器或ISP通告路由時(shí)你可以將它們聚合為一個(gè)10.0.10.0/23的路由。這樣外部網(wǎng)絡(luò)只需要記住一條10.0.10.0/23的路由就可以到達(dá)這兩個(gè)子網(wǎng)極大地減少了全局路由表的規(guī)模。如何判斷能否聚合兩個(gè)網(wǎng)段必須連續(xù)并且聚合后的掩碼位數(shù)必須小于或等于原網(wǎng)段的掩碼位數(shù)。10.0.10.0/24和10.0.11.0/24是連續(xù)的它們可以聚合為10.0.10.0/23。但10.0.10.0/24和10.0.12.0/24不連續(xù)中間隔了10.0.11.0/24就不能直接聚合為/23。5. 常見(jiàn)問(wèn)題排查與避坑指南在實(shí)際運(yùn)維中圍繞IP地址段和“開(kāi)墻”的坑數(shù)不勝數(shù)。下面是我總結(jié)的一些典型問(wèn)題和排查思路。5.1 問(wèn)題一規(guī)則加了但訪問(wèn)依然不通這是最常遇到的問(wèn)題。不要只盯著剛加的規(guī)則要按照網(wǎng)絡(luò)分層模型系統(tǒng)排查。確認(rèn)規(guī)則是否生效iptables使用sudo iptables -L -n -v查看規(guī)則列表和匹配計(jì)數(shù)pkts和bytes列。如果計(jì)數(shù)沒(méi)有增加說(shuō)明流量沒(méi)有匹配到這條規(guī)則。云安全組檢查規(guī)則是否關(guān)聯(lián)到了正確的實(shí)例或網(wǎng)卡。檢查是否有優(yōu)先級(jí)更高的“拒絕”規(guī)則覆蓋了你的“允許”規(guī)則。確認(rèn)路由可達(dá)在客戶端使用tracerouteLinux或tracertWindows命令跟蹤到目標(biāo)IP的路由路徑看數(shù)據(jù)包在哪一跳丟失。可能問(wèn)題根本不在目標(biāo)服務(wù)器的防火墻而在中間的網(wǎng)絡(luò)設(shè)備上。確認(rèn)目標(biāo)服務(wù)狀態(tài)在目標(biāo)服務(wù)器上用netstat -tlnp | grep :80確認(rèn)服務(wù)是否真的在80端口監(jiān)聽(tīng)且監(jiān)聽(tīng)地址是0.0.0.0所有接口還是特定的IP。確認(rèn)中間防火墻公司出口防火墻、IDC入口防火墻、云平臺(tái)的網(wǎng)絡(luò)ACL都可能存在額外的控制策略。需要逐層排查。確認(rèn)IP地址是否真實(shí)對(duì)方給的IP地址段10.0.20.0/23其內(nèi)部的服務(wù)器網(wǎng)關(guān)配置是否正確服務(wù)器是否真的獲取到了這個(gè)范圍內(nèi)的IP可能存在IP沖突或配置錯(cuò)誤。5.2 問(wèn)題二混淆網(wǎng)絡(luò)地址與網(wǎng)關(guān)地址這是一個(gè)經(jīng)典錯(cuò)誤。10.0.20.0/24的網(wǎng)絡(luò)地址是10.0.20.0但該網(wǎng)段的默認(rèn)網(wǎng)關(guān)通常是10.0.20.1或10.0.20.254取決于網(wǎng)絡(luò)規(guī)劃。在配置防火墻規(guī)則時(shí)如果你錯(cuò)誤地將網(wǎng)關(guān)地址排除在允許范圍之外例如只允許了10.0.20.100-200那么即使服務(wù)器IP在范圍內(nèi)也可能因?yàn)榫W(wǎng)關(guān)無(wú)法路由而無(wú)法通信。最佳實(shí)踐是在規(guī)劃網(wǎng)段時(shí)明確記錄下網(wǎng)絡(luò)地址、廣播地址、網(wǎng)關(guān)地址和可供分配的地址池并在配置規(guī)則時(shí)予以考慮。5.3 問(wèn)題三/32、/31、/30 的特殊用途/32代表一個(gè)單一的主機(jī)地址。在防火墻規(guī)則中10.0.20.5/32和10.0.20.5是等價(jià)的都只表示這一個(gè)IP。常用于為某個(gè)特定服務(wù)器或管理終端設(shè)置精確規(guī)則。/31在RFC 3021中定義專門(mén)用于點(diǎn)到點(diǎn)鏈路如兩個(gè)路由器直連。一個(gè)/31網(wǎng)絡(luò)恰好提供2個(gè)地址沒(méi)有網(wǎng)絡(luò)地址和廣播地址的浪費(fèi)這兩個(gè)地址可以直接配置為互聯(lián)接口的IP。但在某些舊設(shè)備或系統(tǒng)上可能不支持/31此時(shí)需使用/30。/30這是最常用的點(diǎn)到點(diǎn)鏈路掩碼提供4個(gè)地址其中2個(gè)可用除去網(wǎng)絡(luò)和廣播地址。例如192.168.1.0/30可用地址是192.168.1.1和192.168.1.2。5.4 問(wèn)題四IPv6地址的CIDR表示IPv6地址是128位其CIDR表示法原理相同。例如2001:db8::/32、fd00::/8唯一本地地址。計(jì)算和規(guī)劃工具如ipcalc同樣支持IPv6。隨著IPv6的普及理解其地址規(guī)劃也愈發(fā)重要。IPv6的地址空間極其龐大通常一個(gè)子網(wǎng)會(huì)分配/64的前綴為主機(jī)位留出64位這幾乎是無(wú)限的主機(jī)數(shù)量。6. 安全最佳實(shí)踐與策略管理“開(kāi)墻”本質(zhì)上是在安全墻上開(kāi)洞必須慎之又慎。以下是一些必須遵守的黃金準(zhǔn)則最小權(quán)限原則這是最高原則。能精確到IP (/32) 就不要用網(wǎng)段 (/24)能用/30就不用/23。時(shí)刻問(wèn)自己這個(gè)訪問(wèn)范圍是否還能縮小時(shí)間維度控制如果訪問(wèn)只是臨時(shí)需求如數(shù)據(jù)遷移、臨時(shí)測(cè)試務(wù)必設(shè)置規(guī)則的生效時(shí)間或添加備注并在工作完成后立即清理。很多云防火墻和安全組支持基于時(shí)間的策略。標(biāo)簽與注釋為每一條防火墻規(guī)則添加清晰的描述或標(biāo)簽說(shuō)明創(chuàng)建人、創(chuàng)建時(shí)間、用途例如“2023-10-27張三為XX項(xiàng)目測(cè)試環(huán)境開(kāi)放Web訪問(wèn)”。這在后續(xù)審計(jì)和清理時(shí)能節(jié)省大量時(shí)間。定期審計(jì)與清理建立制度定期如每季度審查所有防火墻規(guī)則清理那些已經(jīng)過(guò)期、無(wú)人認(rèn)領(lǐng)或用途不明的規(guī)則。僵尸規(guī)則是安全體系的巨大隱患。變更流程所有防火墻規(guī)則的變更必須通過(guò)工單或變更管理系統(tǒng)禁止私自操作。流程中應(yīng)包含需求提出、技術(shù)評(píng)審評(píng)估范圍是否過(guò)大、實(shí)施、驗(yàn)證和記錄歸檔。使用“安全組”或“應(yīng)用防火墻”等更高級(jí)抽象在云環(huán)境中盡量使用面向?qū)嵗驊?yīng)用的安全組而不是直接在網(wǎng)絡(luò)ACL上配置龐大的IP列表。安全組的規(guī)則更貼近業(yè)務(wù)易于管理。圍繞IP地址/24、/23網(wǎng)絡(luò)進(jìn)行“開(kāi)墻”操作是網(wǎng)絡(luò)與安全運(yùn)維中最基礎(chǔ)、最高頻的工作之一。它要求我們不僅理解CIDR表示法的數(shù)學(xué)含義更要具備嚴(yán)謹(jǐn)?shù)牧鞒桃庾R(shí)、熟練的工具使用能力和系統(tǒng)的排查思路。從準(zhǔn)確理解需求開(kāi)始借助工具驗(yàn)證計(jì)算在正確的設(shè)備上實(shí)施精確的規(guī)則最后進(jìn)行完備的測(cè)試和記錄每一步都容不得馬虎。記住網(wǎng)絡(luò)連通性是業(yè)務(wù)的基礎(chǔ)而防火墻規(guī)則是安全的閘門(mén)在這兩者之間找到平衡正是我們工作的價(jià)值所在。下次當(dāng)你再看到xx.xx.xx.0/24這樣的字符串時(shí)希望你能立刻在腦海中浮現(xiàn)出它的地址范圍、主機(jī)數(shù)量并清晰地知道該如何安全、優(yōu)雅地為它打開(kāi)那扇“門(mén)”。