【Linux】NAT、代理服務、內網穿透

NAT、代理服務、內網穿透

  • 一. NAT
    • 1. NAT 技術
    • 2. NAT IP 轉換過程
    • 3. NAPT 技術
    • 4. NAT 技術的缺陷
  • 二. 代理服務器
    • 1. 正向代理
    • 2. 反向代理
    • 3. NAT 和代理服務器
  • 內網穿透
  • 內網打洞

一. NAT

NAT(Network Address Translation,網絡地址轉換)技術,是解決IP地址不足的主要手段,并且能夠有效地避免來自網絡外部的攻擊,隱藏并保護網絡內部的計算機。

1. NAT 技術

在IPv4協議中,IP地址數量不足是一個大問題,而NAT技術就是當前解決IP地址不夠用的主要手段,是路由器的一個重要功能。

  • 在進行對外通信時,NAT能夠將私有IP經過一系列替換操作最終轉為全局IP,也就是說,NAT是一種將私有IP和全局IP相互轉化的技術方法。
  • 裝有NAT軟件的路由器叫做NAT路由器,所有使用私有IP的主機在和外界通信時,都要在NAT路由器上將其私有IP轉換成全局IP。
  • 很多學校、家庭、公司內部每個終端設置的IP都是私有IP,而只在路由器或必要的服務器上設置全局IP。
  • 全局IP要求唯一,但是私有IP不需要,在不同的局域網中出現相同的私有IP是完全不影響的。

2. NAT IP 轉換過程

在這里插入圖片描述

  • NAT 路由器將源地址從 10.0.0.10 替換成全局的 IP 202.244.174.37
  • NAT 路由器收到外部的數據時,又會把目標 IP 從 202.244.174.37 替換回 10.0.0.10
  • 在 NAT 路由器內部,有一張自動生成的,用于地址轉換的表。
  • 當 10.0.0.10 第一次向 163.221.120.9 發送數據時就會生成表中的映射關系。

3. NAPT 技術

那么問題來了,如果局域網內,有多個主機都訪問同一個外網服務器,那么對于服務器返回的數據中,目的 IP 都是相同的,那么 NAT 路由器如何判定將這個數據包轉發給哪個局域網的主機?

這時候 NAPT 來解決這個問題了,使用 IP+port 來建立這個關聯關系。

NAPT(網絡地址端口轉換)是一種網絡地址轉換技術,它通過將內部地址和端口映射到外部地址和端口,實現多個內部主機共享同一個公網IP地址的功能。

在這里插入圖片描述

這種關聯關系也是由 NAT 路由器自動維護的。例如在 TCP 的情況下,建立連接時,就會生成這個表項,在斷開連接后,就會刪除這個表項。

4. NAT 技術的缺陷

NAT技術進行私有IP和公網之間的替換,主要就是依賴NAT路由器當中維護的網絡地址轉換表,但這張轉換表也體現出了NAT的一些缺陷:

  • 無法從NAT外部向內部服務器建立連接,因為外部無法知道內部的私網IP,也就無法主動與內部服務器建立連接。
  • 轉換表的生成和銷毀都需要額外開銷。
  • 通信過程中一旦NAT設備異常,即使存在熱備,所有的TCP連接也都會斷開。

二. 代理服務器

代理服務器的功能就是代理網絡用戶去取得網絡信息,代理服務器又分為正向代理和反向代理。

1. 正向代理

正向代理是一種常見的網絡代理方式,它位于客戶端和目標服務器之間,代表客戶端向目標服務器發送請求。正向代理服務器接收客戶端的請求,然后將請求轉發給目標服務器,最后將目標服務器的響應返回給客戶端。通過這種方式,正向代理可以實現多種功能,如提高訪問速度、隱藏客戶端身份、實施訪問控制等。

在這里插入圖片描述

工作原理

  • 客戶端將請求發送給正向代理服務器。
  • 正向代理服務器接收請求,并根據配置進行處理,如緩存查找、內容過濾等。
  • 正向代理服務器將處理后的請求轉發給目標服務器。
  • 目標服務器處理請求,并將響應返回給正向代理服務器。
  • 正向代理服務器將響應返回給客戶端。

功能特點

  • 緩存功能:正向代理服務器可以緩存經常訪問的資源,當客戶端再次請求這些資源時,可以直接從緩存中獲取,提高訪問速度。
  • 內容過濾:正向代理可以根據預設的規則對請求或響應進行過濾,如屏蔽廣告、阻止惡意網站等。
  • 訪問控制:通過正向代理,可以實現對特定網站的訪問控制,如限制員工在工作時間訪問娛樂網站。
  • 隱藏客戶端身份:正向代理可以隱藏客戶端的真實 IP 地址,保護客戶端的隱私。
  • 負載均衡:在多個目標服務器之間分配客戶端請求,提高系統的可擴展性和可靠性。

應用場景

  • 企業網絡管理:企業可以通過正向代理實現對員工網絡訪問的管理和控制,確保員工在工作時間內專注于工作,避免訪問不良網站或泄露公司機密。
  • 公共網絡環境:在公共場所如圖書館、學校等提供的網絡環境中,通過正向代理可以實現對網絡資源的合理分配和管理,確保網絡使用的公平性和安全性。
  • 內容過濾與保護:家長可以通過設置正向代理來過濾不良內容,保護孩子免受網絡上的不良信息影響。
  • 提高訪問速度:對于經常訪問的網站或資源,正向代理可以通過緩存機制提高訪問速度,減少網絡延遲。
  • 跨境電商與海外訪問:對于跨境電商或需要訪問海外資源的企業和個人,正向代理可以幫助他們突破網絡限制,順暢地訪問海外網站和資源。

2. 反向代理

反向代理服務器是一種網絡架構模式,其作為 Web 服務器的前置服務器,接收來自客戶端的請求,并將這些請求轉發給后端服務器,然后將后端服務器的響應返回給客戶端。這種架構模式可以提升網站性能、安全性和可維護性等。

在這里插入圖片描述

工作原理

反向代理服務器位于客戶端和 Web 服務器之間,當客戶端發起請求時,它首先會到達反向代理服務器。反向代理服務器會根據配置的規則將請求轉發給后端的 Web 服務器,并將 Web 服務器的響應返回給客戶端。在這個過程中,客戶端并不知道實際與哪個 Web 服務器進行了交互,它只知道與反向代理服務器進行了通信。

應用場景

  • 負載均衡:反向代理服務器可以根據配置的負載均衡策略,將客戶端的請求分發到多個后端服務器上,以實現負載均衡。這有助于提升網站的整體性能和響應速度,特別是在高并發場景下。
  • 安全保護:反向代理服務器可以隱藏后端 Web 服務器的真實 IP 地址,降低其被直接攻擊的風險。同時,它還可以配置防火墻、訪問控制列表(ACL)等安全策略,對客戶端的請求進行過濾和限制,以保護后端服務器的安全。
  • 緩存加速:反向代理服務器可以緩存后端 Web 服務器的響應內容,對于重復的請求,它可以直接從緩存中返回響應,而無需再次向后端服務器發起請求。這可以大大減少后端服務器的負載,提升網站的響應速度。
  • 內容過濾和重寫:反向代理服務器可以根據配置的規則對客戶端的請求進行過濾和重寫,例如添加或刪除請求頭、修改請求路徑等。這有助于實現一些特定的業務需求,如 URL 重寫、用戶認證等。
  • 動靜分離:在大型網站中,通常需要將靜態資源和動態資源分開處理。通過將靜態資源部署在反向代理服務器上,可以直接從反向代理服務器返回靜態資源的響應,而無需再次向后端服務器發起請求。這可以大大提升靜態資源的訪問速度。
  • CDN(Content Delivery Network,內容分發網絡)就是采用了反向代理的原理。

3. NAT 和代理服務器

路由器往往都具備 NAT 設備的功能,通過 NAT 設備進行中轉,完成子網設備和其他子網設備的通信過程。

代理服務器看起來和 NAT 設備有一點像,客戶端像代理服務器發送請求,代理服務器將請求轉發給真正要請求的服務器,服務器返回結果后,代理服務器又把結果回傳給客戶端。

NAT 和代理服務器的區別:

  • 從應用上講,NAT 設備是網絡基礎設備之一,解決的是 IP 不足的問題。代理服務器則是更貼近具體應用,比如通過代理服務器進行翻墻,另外像迅游這樣的加速器,也是使用代理服務器。
  • 從底層實現上講,NAT 是工作在網絡層,直接對 IP 地址進行替換。代理服務器往往工作在應用層。
  • 從使用范圍上講,NAT 一般在局域網的出口部署,代理服務器可以在局域網做,也可以在廣域網做,也可以跨網。
  • 從部署位置上看,NAT 一般集成在防火墻,路由器等硬件設備上,代理服務器則是一個軟件程序,需要部署在服務器上。

代理服務器是一種應用比較廣的技術

  • 翻墻:廣域網中的代理。
  • 負載均衡:局域網中的代理。

內網穿透

內網打洞

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902249.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902249.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902249.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MobaXterm連接Ubuntu(SSH)

1.查看Ubuntu ip 打開終端,使用指令 ifconfig 由圖可知ip地址 2.MobaXterm進行SSH連接 點擊session,然后點擊ssh,最后輸入ubuntu IP地址以及用戶名

Spring Boot系列之使用Arthas Tunnel Server 進行遠程調試實踐

Spring Boot系列之使用Arthas Tunnel Server 進行遠程調試實踐 前言 在開發和運維 Java 應用的過程中,遠程診斷和調試是一個不可或缺的需求。尤其是當生產環境出現問題時,能夠快速定位并解決這些問題至關重要。Arthas 是阿里巴巴開源的一款強大的 Java…

圖像預處理-添加水印

一.ROI切割 類似裁剪圖片,但是原理是基于Numpy數組的切片操作(ROI數組切片是會修改原圖數據的),也就是說這個“裁剪”不是為了保存“裁剪”部分,而是為了方便修改等處理。 import cv2 as cv import numpy as npimg cv.imread(../images/dem…

數據結構——八大排序算法

排序在生活中應用很多,對數據排序有按成績,商品價格,評論數量等標準來排序。 數據結構中有八大排序,插入、選擇、快速、歸并四類排序。 目錄 插入排序 直接插入排序 希爾排序 選擇排序 堆排序 冒泡排序 快速排序 hoare…

吃透LangChain(五):多模態輸入與自定義輸出

多模態數據輸入 這里我們演示如何將多模態輸入直接傳遞給模型。我們目前期望所有輸入都以與OpenAl 期望的格式相同的格式傳遞。對于支持多模態輸入的其他模型提供者,我們在類中添加了邏輯以轉換為預期格式。 在這個例子中,我們將要求模型描述一幅圖像。 …

【Rust 精進之路之第10篇-借用·規則】引用 (``, `mut`):安全、高效地訪問數據

系列: Rust 精進之路:構建可靠、高效軟件的底層邏輯 作者: 碼覺客 發布日期: 2025年4月20日 引言:所有權的“限制”與“變通”之道 在上一篇【所有權核心】中,我們揭示了 Rust 如何通過所有權規則和移動 (Move) 語義來保證內存安全,避免了垃圾回收器的同時,也防止了諸…

劍指Offer(數據結構與算法面試題精講)C++版——day16

劍指Offer(數據結構與算法面試題精講)C版——day16 題目一:序列化和反序列化二叉樹題目二:從根節點到葉節點的路徑數字之和題目三:向下的路徑節點值之和附錄:源碼gitee倉庫 題目一:序列化和反序…

OpenCV 模板與多個對象匹配方法詳解(繼OpenCV 模板匹配方法詳解)

文章目錄 前言1.導入庫2.圖片預處理3.輸出模板圖片的寬和高4.模板匹配5.獲取匹配結果中所有符合閾值的點的坐標5.1 threshold 0.9:5.2 loc np.where(res > threshold): 6.遍歷所有匹配點6.1 loc 的結構回顧6.2 loc[::-1] 的作用6.2.1 為什么需要反轉…

產品經理學習過程

一:掃盲篇(初始產品經理) 階段1:了解產品經理 了解產品經理是做什么的、產品經理的分類、產品經理在實際工作中都會接觸什么樣的崗位、以及產品經理在實際工作中具體要做什么事情。 二:準備篇 階段2:工…

【消息隊列RocketMQ】一、RocketMQ入門核心概念與架構解析

在當今互聯網技術飛速發展的時代,分布式系統的架構設計愈發復雜。消息隊列作為分布式系統中重要的組件,在解耦應用、異步處理、削峰填谷等方面發揮著關鍵作用。RocketMQ 作為一款高性能、高可靠的分布式消息中間件,被廣泛應用于各類互聯網場景…

從“鏈主”到“全鏈”:供應鏈數字化轉型的底層邏輯

1. 制造業與供應鏈數字化轉型的必然性 1.1. 核心概念與戰略重要性 制造業的數字化轉型,是利用新一代數字技術(如工業互聯網、人工智能、大數據、云計算、邊緣計算等)對制造業的整體價值鏈進行根本性重塑的過程。這不僅涉及技術的應用&#…

x-ui重新申請ssl證書失敗

由于某些需要我們重新申請ssl證書,x-ui自動化腳本不能強制更新,根據x-ui倉庫源碼: https://github.com/vaxilu/x-ui/blob/main/x-ui.sh 在申請ssl證書的地方稍作修改,得到,運行下面的腳本就可以重新申請ssl證書&#…

Java NIO Java 虛擬線程(微線程)與 Go 協程的運行原理不同 為何Go 能在低配機器上承接10萬 Websocket 協議連接

什么是Java NIO? Java NIO(New Input/Output) 是Java 1.4(2002年)引入的一種非阻塞、面向緩沖區的輸入輸出框架,旨在提升Java在高性能和高并發場景下的I/O處理能力。它相比傳統的 Java IO(java…

go環境安裝mac

下載go安裝包:https://golang.google.cn/dl/ 找到對應自己環境的版本下載。 注意有二進制的包,也有圖形界面安裝的包。圖形界面直接傻瓜式點就行了。 二進制的按照下面操作: 1、下載二進制包。 2、將下載的二進制包解壓至 /usr/local目錄…

LVGL源碼(9):學會控件的使用(自定義彈窗)

LVGL版本:8.3 LVGL的控件各式各樣,每種控件都有自己的一些特性,當我們想要使用一個LVGL控件時,我們首先可以通過官網去了解控件的一些基本特性,官網鏈接如下: LVGL Basics — LVGL documentation&#xf…

《軟件設計師》復習筆記(1)——考試介紹【新】

目錄 一、考試介紹 證書價值 考試要求 二、【新】計算機與軟件工程知識 三、軟件設計 一、考試介紹 >考試科目>考題形式>考試時長>合格標準計算機與軟件工程知識75道單選題(每題1分,總分75分)2023年11月改革機試后&#…

MCU中的BSS和data都占用SRAM空間嗎?

在MCU中,BSS段和data段都占用SRAM空間,但它們的存儲方式和用途有所不同。? BSS段 BSS段(Block Started by Symbol)用于存儲未初始化的全局變量和靜態變量。這些變量在程序啟動時會被清零,因此它們不占用Flash空間&a…

Ubuntu 22.04 更換 Nvidia 顯卡后啟動無法進入桌面問題的解決

原顯卡為 R7 240, 更換為 3060Ti 后, 開機進桌面時卡在了黑屏界面, 鍵盤有反應, 但是無法進入 shell. 解決方案為 https://askubuntu.com/questions/1538108/cant-install-rtx-4060-ti-on-ubuntu-22-04-lts 啟動后在開機菜單中(如果沒有開機菜單, 需要按shift鍵), 進入recove…

Python爬蟲-爬取貓眼演出數據

前言 本文是該專欄的第53篇,后面會持續分享python爬蟲干貨知識,記得關注。 貓眼平臺除了有影院信息之外,它還涵蓋了演出信息,比如說“演唱會,音樂節,話劇音樂劇,脫口秀,音樂會,戲曲藝術,相聲”等等各種演出相關信息。 而本文,筆者將以貓眼平臺為例,基于Python爬蟲…

人工智能-機器學習(線性回歸,邏輯回歸,聚類)

人工智能概述 人工智能分為:符號學習,機器學習。 機器學習是實現人工智能的一種方法,深度學習是實現機器學習的一種技術。 機器學習:使用算法來解析數據,從中學習,然后對真實世界中是事務進行決策和預測。如垃圾郵件檢…