端口转发映射详解、代理反向代理深入认知
端口轉(zhuǎn)發(fā)&&端口映射
端口轉(zhuǎn)發(fā)和端口映射都是為了解決內(nèi)網(wǎng)主機(jī)的端口無法在外部直接訪問而衍生出來的技術(shù),通過中間服務(wù)器進(jìn)行中轉(zhuǎn),將內(nèi)部的端口映射到公網(wǎng)IP上或者將內(nèi)部端口轉(zhuǎn)發(fā)到外部服務(wù)器,供用戶或者自己來使用
端口轉(zhuǎn)發(fā)
概念:端口轉(zhuǎn)發(fā)(Port forwarding),有時(shí)被叫做隧道,是安全殼(SSH) 為網(wǎng)絡(luò)安全通信使用的一種方法。
其他網(wǎng)域其他網(wǎng)域例子:在一個(gè)特定網(wǎng)域中,是沒有辦法直接訪問其他網(wǎng)域的。但是我們可以通過路由器的NAT方式訪問q。假如我們內(nèi)網(wǎng)現(xiàn)在有100臺(tái)主機(jī),那么我們現(xiàn)在都是通過路由器的這一個(gè)公網(wǎng)IP和q通信的。那么,當(dāng)互聯(lián)網(wǎng)上的消息發(fā)送回來時(shí),就要我們的ip地址和路由器的端口進(jìn)行綁定,在路由器中就會(huì)有一個(gè)內(nèi)網(wǎng)ip和路由器端口對(duì)應(yīng)的一張表。當(dāng)路由器的10000端口收到消息時(shí),就知道把消息發(fā)送給他,而當(dāng)20000端口收到消息時(shí),就知道把消息發(fā)送給你。這就是端口轉(zhuǎn)發(fā),其轉(zhuǎn)發(fā)一個(gè)端口收到的流量,給另一個(gè)主機(jī)。
比如我們拿到一臺(tái)內(nèi)網(wǎng)服務(wù)器A的權(quán)限,通過掃描發(fā)現(xiàn)了同內(nèi)網(wǎng)的另一臺(tái)服務(wù)器B且開了80端口,我們該如何使用瀏覽器訪問它呢?分析如下
從上圖中可以看到,我們已經(jīng)與A建立了通道,我們可以在A上上傳任意文件,執(zhí)行任意的系統(tǒng)命令,我們?nèi)绾文軌蛟L問B的80端口?假設(shè)A是在公網(wǎng)上,有公網(wǎng)IP,我們可以訪問它的任意端口。
1、直接在A上執(zhí)行curl命令訪問B的80端口(但不方便測試B的80端口的漏洞和使用)
curl命令是一個(gè)利用URL規(guī)則工作的文件傳輸工具,支持文件的上傳和下載。curl支持包括HTTP、HTTPS、ftp等眾多協(xié)議,還支持POST、cookies等協(xié)議,小巧好用。
2、在A上開啟一個(gè) socks 5代理,我們使用瀏覽器設(shè)置好代理,將我們的瀏覽器代理到目標(biāo)內(nèi)網(wǎng),然后訪問B的80端口。
3、在A上執(zhí)行端口轉(zhuǎn)發(fā),將B的80端口轉(zhuǎn)發(fā)到A的8080,然后我們直接用瀏覽器訪問A的8080端口即可,這個(gè)原理就是端口轉(zhuǎn)發(fā)。
總結(jié)一下,端口轉(zhuǎn)發(fā)就是將一個(gè)端口,這個(gè)端口可以本機(jī)的端口也可以是本機(jī)可以訪問到的任意主機(jī)的端口都可以轉(zhuǎn)發(fā)到任意一臺(tái)可以訪問到的IP上,通常這個(gè)IP是公網(wǎng)IP,方便我們使用。
端口映射
概念:端口映射就是將內(nèi)網(wǎng)中的主機(jī)的一個(gè)端口映射到其他網(wǎng)域主機(jī)的一個(gè)端口,提供相應(yīng)的服務(wù)。當(dāng)用戶訪問其他網(wǎng)域IP的這個(gè)端口時(shí),服務(wù)器自動(dòng)將請(qǐng)求映射到對(duì)應(yīng)局域網(wǎng)內(nèi)部的機(jī)器上。
其他網(wǎng)域例子:我們在內(nèi)網(wǎng)中有一臺(tái)Web服務(wù)器,但是其他網(wǎng)域中的用戶是沒有辦法直接訪問該服務(wù)器。所以在路由器上設(shè)置一個(gè)端口映射,只要q用戶訪問路由器ip的80端口,那么路由器會(huì)把自動(dòng)把流量轉(zhuǎn)到內(nèi)網(wǎng)Web服務(wù)器的80端口上。并且,在路由器上還存在一個(gè)Session,當(dāng)內(nèi)網(wǎng)服務(wù)器返回?cái)?shù)據(jù)給路由器時(shí),路由器能準(zhǔn)確的將消息發(fā)送給外網(wǎng)請(qǐng)求用戶的主機(jī)。在這過程中,路由器充當(dāng)了一個(gè)反向代理的作用,他保護(hù)了內(nèi)網(wǎng)中主機(jī)的安全。
端口映射就是映射端口,就是將一個(gè)內(nèi)網(wǎng)端口映射到公網(wǎng)上的某個(gè)端口,我們來看一個(gè)實(shí)例,我自己的電腦是在內(nèi)網(wǎng)中,沒有公網(wǎng)IP,但是我想提供一個(gè)端口供其他人使用,怎么辦呢?我們來看一個(gè)圖:
A和B在不同的內(nèi)網(wǎng),各自有自己的內(nèi)網(wǎng)IP,但是互相無法直接訪問,這時(shí)就需要一個(gè)中間服務(wù)器,要A和B都可以訪問然后作為中轉(zhuǎn)服務(wù)器,實(shí)現(xiàn)上面的目標(biāo),這個(gè)中間服務(wù)器需要有一個(gè)公網(wǎng)IP,如圖:
上圖的C就是有公網(wǎng)IP的中間服務(wù)器,我們可以將A的80端口映射到C的80端口,這時(shí),B就可以訪問C的80端口,也就相當(dāng)于訪問A的80端口了,這里其實(shí)核心原理也是端口轉(zhuǎn)發(fā),只不過是將本機(jī)的端口轉(zhuǎn)發(fā)到遠(yuǎn)程的某個(gè)端口。
有的路由器也有端口映射與端口轉(zhuǎn)發(fā)功能。端口映射與端口轉(zhuǎn)發(fā)實(shí)現(xiàn)的功能類似,但又不完全一樣。端口映射是將外網(wǎng)域的一個(gè)端口完全映射給內(nèi)網(wǎng)一個(gè)地址的指定端口,而端口轉(zhuǎn)發(fā)是將發(fā)往外網(wǎng)的一個(gè)端口的通信完全轉(zhuǎn)發(fā)給內(nèi)網(wǎng)一個(gè)地址的指定端口
端口轉(zhuǎn)發(fā)和端口映射區(qū)別:
端口轉(zhuǎn)發(fā):轉(zhuǎn)發(fā)的重點(diǎn)在“轉(zhuǎn)”上面。送快遞的過來,把所有快遞都交給門口保安,保安再根據(jù)每件快遞上的收件人來分發(fā)。
端口映射:就是在大門口給每個(gè)人裝個(gè)柜子,送快遞的直接按收件人名字,把快遞放到對(duì)應(yīng)的柜子里面。(外網(wǎng)訪問本地服務(wù)器)
代理和反向代理
概念:代理也被叫做網(wǎng)絡(luò)代理,是一種比較特殊的網(wǎng)絡(luò)服務(wù),允許一個(gè)終端(通常指客戶端)通過這個(gè)服務(wù)與另一個(gè)終端(通常指服務(wù)器端)進(jìn)行非直接的連接。例如:一些網(wǎng)關(guān)、路由器等網(wǎng)絡(luò)設(shè)備都具備網(wǎng)絡(luò)代理的功能。代理服務(wù)有利于保障網(wǎng)絡(luò)終端的隱私或者安全,可以在一定程度上阻止網(wǎng)絡(luò)攻擊(因?yàn)橥ㄟ^代理,可以隱藏真正的服務(wù)器端/客戶端)
代理服務(wù)器
左邊和右邊的電腦在通訊時(shí)候,需要經(jīng)過中間的電腦中轉(zhuǎn),而中間的那部電腦就是代理服務(wù)器。
代理請(qǐng)求過程
客戶端首先根據(jù)代理服務(wù)器所使用的代理協(xié)議,與代理服務(wù)器創(chuàng)建連接,接著按照協(xié)議請(qǐng)求對(duì)目標(biāo)服務(wù)器創(chuàng)建連接、或者獲得目標(biāo)服務(wù)器的指定資源(如:文件)。
代理協(xié)議
此處的協(xié)議指的是網(wǎng)絡(luò)傳輸協(xié)議。
主要是兩種:
- Socks
- HTTP
網(wǎng)絡(luò)傳輸協(xié)議在本篇就不做過多介紹。
正向代理
通常我們說的代理,都是指的正向代理。
代理服務(wù)器可以由客戶端提供,也可以由服務(wù)器端提供。當(dāng)客戶端主動(dòng)使用代理服務(wù)器時(shí),此時(shí)的代理叫正向代理。比如:一些網(wǎng)絡(luò)代理工具(加速器/VPN…)
場景:我需要訪問一個(gè)服務(wù)器C,但是由于某些原因我無法訪問到它,可是我就是控制不住自己,這個(gè)時(shí)候,服務(wù)器B告訴我,來吧,你想要什么,我來幫你傳話,于是,我把自己的請(qǐng)求給了B,B接收到之后,幫我轉(zhuǎn)給了C,(因?yàn)锽和C之間的線路是暢通的),C把返回結(jié)果給了B,B非常友好地把結(jié)果又還給了我,我覺得太好用了簡直,于是我周圍的小伙伴都開始將請(qǐng)求發(fā)給B,通過B的轉(zhuǎn)發(fā),來獲取C的信息,這個(gè)時(shí)候?qū)τ诜?wù)器C,C只知道是B發(fā)了請(qǐng)求過來,不知道我們這群小伙伴的存在,所以這就是代理。
正向代理完整流程
正向代理時(shí),由客戶端發(fā)送對(duì)某一個(gè)目標(biāo)服務(wù)器的請(qǐng)求,代理服務(wù)器在中間將請(qǐng)求轉(zhuǎn)發(fā)給該目標(biāo)服務(wù)器,目標(biāo)服務(wù)器將結(jié)果返回給代理服務(wù)器,代理服務(wù)器再將結(jié)果返回給客戶端。使用正向代理時(shí),客戶端是需要配置代理服務(wù)的地址、端口、賬號(hào)密碼(如有)等才可使用的。
通過上圖可以看到,客戶端并沒有直接與服務(wù)器相連。正向代理隱藏了真實(shí)的客戶端地址。可以很好地保護(hù)客戶端的安全性。
正向代理的適用場景
- 訪問被禁止的資源(讓客戶端訪問原本不能訪問的服務(wù)器。可能是由于路由的原因,或者策略配置的原因,客戶端不能直接訪問某些服務(wù)器。為了訪問這些服務(wù)器,可通過代理服務(wù)器來訪問)
-
- 再比如客戶端IP被服務(wù)器封禁,可以繞過
- 也可以突破網(wǎng)站的區(qū)域限制
-
隱藏客戶端的地址(對(duì)于被請(qǐng)求的服務(wù)器而言,代理服務(wù)器代表了客戶端,所以在服務(wù)器或者網(wǎng)絡(luò)拓?fù)渖?#xff0c;看不到原始客戶端)
-
進(jìn)行客戶訪問控制
-
- 可以集中部署策略,控制客戶端的訪問行為(訪問認(rèn)證等)
- 記錄用戶訪問記錄(上網(wǎng)行為管理)
- 內(nèi)部資源的控制(公司、教育網(wǎng)等)
-
加速訪問資源
-
- 使用緩沖特性減少網(wǎng)絡(luò)使用率(代理服務(wù)器設(shè)置一個(gè)較大的緩沖區(qū),當(dāng)有外界的信息通過時(shí),同時(shí)也將其保存到緩沖區(qū)中,當(dāng)其他用戶再訪問相同的信息時(shí), 則直接由緩沖區(qū)中取出信息,傳給用戶,以提高訪問速度。)
-
過濾內(nèi)容(可以通過代理服務(wù)器統(tǒng)一過濾一些危險(xiǎn)的指令/統(tǒng)一加密一些內(nèi)容、防御代理服務(wù)器兩端的一些攻擊性行為)
反向代理
場景:我向B發(fā)送了一個(gè)請(qǐng)求,B對(duì)我的請(qǐng)求進(jìn)行分析,發(fā)現(xiàn)我請(qǐng)求的是文章詳情,于是B將請(qǐng)求轉(zhuǎn)發(fā)給處理文章詳情的應(yīng)用服務(wù)器C1,我又向B發(fā)了一個(gè)請(qǐng)求,B解析之后,發(fā)現(xiàn)請(qǐng)求的是我的聲望值等個(gè)人信息,于是B將請(qǐng)求轉(zhuǎn)發(fā)給專門處理個(gè)人信息的應(yīng)用服務(wù)器C2,就這樣,我不在乎我要請(qǐng)求的數(shù)據(jù)是在C1,C2,還是C3上,我只需要發(fā)送請(qǐng)求到B就可以了,B會(huì)對(duì)我的請(qǐng)求進(jìn)行解析,決定轉(zhuǎn)發(fā)請(qǐng)求給Cx來處理,并得到處理結(jié)果后返回給我。
概括一下就是,一個(gè)請(qǐng)求對(duì)于客戶端是透明的,我不知道我的請(qǐng)求具體由誰處理,我將請(qǐng)求都發(fā)給B,至于B發(fā)給Cx,隨便。
代理與反向代理在實(shí)際工程中應(yīng)用很廣泛,反向代理是許多大公司業(yè)務(wù)處理過程中的經(jīng)典方式,前端由一個(gè)nignx負(fù)責(zé)根據(jù)用戶的請(qǐng)求信息轉(zhuǎn)發(fā)請(qǐng)求給后端相應(yīng)的應(yīng)用服務(wù)器(這個(gè)過程中也可以加入負(fù)載均衡)。
**反向代理:**服務(wù)器根據(jù)客戶端的請(qǐng)求,從其關(guān)系的一組或多組后端服務(wù)器(如Web服務(wù)器)上獲取資源,然后再將這些資源返回給客戶端,客戶端只會(huì)得知代理服務(wù)器的IP地址,而不知道在代理服務(wù)器后面的服務(wù)器集群的存在。
反向代理整個(gè)流程:由客戶端發(fā)起對(duì)代理服務(wù)器的請(qǐng)求,代理服務(wù)器在中間將請(qǐng)求轉(zhuǎn)發(fā)給某一個(gè)服務(wù)器,服務(wù)器將結(jié)果返回給代理服務(wù)器,代理服務(wù)器再將結(jié)果返回給客戶端。
反向代理的適用場景
-
負(fù)載均衡
-
- 如果服務(wù)器集群中有負(fù)荷較高者,反向代理通過URL重寫,根據(jù)連線請(qǐng)求從負(fù)荷較低者獲取與所需相同的資源或備援。可以有效降低服務(wù)器壓力,增加服務(wù)器穩(wěn)定性
-
提升服務(wù)器安全性
-
- 可以對(duì)客戶端隱藏服務(wù)器的IP地址
- 也可以作為應(yīng)用層防火墻,為網(wǎng)站提供對(duì)基于Web的攻擊行為(例如DoS/DDoS)的防護(hù),更容易排查惡意軟件等
-
**加密/SSL加速:**將SSL加密工作交由配備了SSL硬件加速器的反向代理來完成
-
提供緩存服務(wù),加速客戶端訪問
-
- 對(duì)于靜態(tài)內(nèi)容及短時(shí)間內(nèi)有大量訪問請(qǐng)求的動(dòng)態(tài)內(nèi)容提供緩存服務(wù)
-
數(shù)據(jù)統(tǒng)一壓縮
-
- 節(jié)約帶寬
- 為網(wǎng)絡(luò)帶寬不好的網(wǎng)絡(luò)提供服務(wù)
-
統(tǒng)一的訪問權(quán)限控制
-
統(tǒng)一的訪問控制
-
突破互聯(lián)網(wǎng)的封鎖
-
- 突破谷歌訪問封鎖
-
- 也就是說,不需要客戶端進(jìn)行代理,我們通過谷歌代理網(wǎng)站(該代理服務(wù)器可以訪問谷歌,而我們可以訪問該公開的代理服務(wù)器),也可以突破封鎖。
-
為在私有網(wǎng)絡(luò)下(如局域網(wǎng))的服務(wù)器集群提供NAT穿透及外網(wǎng)發(fā)布服務(wù)
-
上傳下載減速控制
正向代理與反向代理的區(qū)別
當(dāng)前面的內(nèi)容理解后,對(duì)于正向代理和反向代理的區(qū)別就很好理解了。最核心的不同在于代理的對(duì)象不同。
- 正向代理是代理客戶端。
- 反向代理是代理服務(wù)器。
而根據(jù)這核心的區(qū)別,我們也可以記住:代理哪端便可以隱藏哪端。也就是說:
- 正向代理隱藏真實(shí)客戶端
- 反向代理隱藏真實(shí)服務(wù)端
反向代理為什么叫反向代理
從我們用戶的角度來看:
代理我們發(fā)出請(qǐng)求的客戶端被稱為正向代理。
而代理我們訪問的服務(wù)器,則被稱為反向代理。從代理結(jié)構(gòu)的角度來看(代理服務(wù)器在兩種代理中的作用均為收發(fā)請(qǐng)求與響應(yīng)):
客戶端與代理服務(wù)器屬于一個(gè)局域網(wǎng)(上圖),稱為正向代理。
服務(wù)器端與代理服務(wù)器屬于一個(gè)局域網(wǎng)時(shí)(上圖),稱為反向代理。
最后,請(qǐng)記住:
- 正向代理為客戶端服務(wù)。
- 反向代理為服務(wù)器端服務(wù)。
后記
這是很早前學(xué)習(xí)時(shí)綜合網(wǎng)上查閱的各類文章資料最后匯總的個(gè)人筆記,因?yàn)楸容^久遠(yuǎn)所以難以備注參考文章鏈接
總結(jié)
以上是生活随笔為你收集整理的端口转发映射详解、代理反向代理深入认知的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: USB下载正常,但拷文件慢
- 下一篇: 139邮箱 push mail