Linux中的SNAT與DNAT實踐

Linux中的SNAT與DNAT實踐

  • 1、SNAT的介紹
    • 1.1,SNAT概述
    • 1.2,SNAT源地址轉換過程
    • 1.3,SNAT轉換
  • 2、DNAT的介紹
    • 2.1,DNAT概述
    • 2.2,DNAT轉換前提條件
    • 2.3,DNAT的轉換
  • 3、防火墻規則的備份和還原
    • 4、tcpdump抓包工具的運用

1、SNAT的介紹

1.1,SNAT概述

SNAT(SNAT)一般指源地址轉換。源地址轉換是內網地址向外訪問時,發起訪問的內網ip地址轉換為指定的ip地址(可指定具體的服務以及相應的端口或端口范圍),這可以使內網中使用保留ip地址的主機訪問外部網絡,即內網的多部主機可以通過一個有效的公網ip地址訪問外部網絡。

SNAT 應用環境:局域網主機共享單個公網IP地址接入Internet(私有不能早Internet中正常路由)。
SNAT原理:修改數據包的源地址。
SNAT轉換前提條件:局域網各主機已正確設置IP地址、子網掩碼、默認網關地址、Linux網關開啟IP路由轉發。

臨時打開:
echo 1 > /proc/sys/net/ipv4/ip_forward
或
sysctl -w net.ipv4.ip_forward=1永久打開:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 

1.2,SNAT源地址轉換過程

  1. 數據包從內網發送到公網時,SNAT會把數據包的源地址由私網IP轉換成公網IP。
  2. 當相應的數據包從公網發送到內網時,會把數據包的目的地址由公網IP轉換為私網IP。
  3. 當內網有多臺主機訪問外網時,SNAT在轉換時會自動分配端口,不同內網主機會通過端口號進行區分。
    在這里插入圖片描述

1.3,SNAT轉換

固定的公網IP地址:
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10非固定的公網IP地址(共享動態IP地址):
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o ens33 -j MASQUERADE

2、DNAT的介紹

DNAT 的全稱為Destination Network Address Translation目的地址轉換,常用于防火墻中。

2.1,DNAT概述

DNAT:目的地址轉換的作用是將一組本地內部的地址映射到一組全球地址。通常來說,合法地址的數量比起本地內部的地址數量來要少得多。
私網地址只能作為源地址來訪問公網IP,而無法作為目標地址被其他主機訪問
所以DNAT將私網中web服務器映射到公網IP,使其公網IP作為目標地址被公網中主機進行訪問
DNAT 應用環境:在Internet中發布位于局域網內的服務器
DNAT原理:修改數據包的目的地址。

2.2,DNAT轉換前提條件

  1. 局域網的服務器能夠訪問Internet
  2. 網關的外網地址有正確的DNS解析記錄
  3. Linux網關開啟IP路由轉發
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

2.3,DNAT的轉換

DNAT轉換1:發布內網的Web服務

#把從ens33進來的要訪問web服務的數據包目的地址轉換為 192.168.30.10
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.30.10
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.30.10                            	

DNAT轉換2:發布時修改目標端口

#發布局域網內部的OpenSSH服務器,外網主機需使用250端口進行連接
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.10:22#在外網環境中使用SSH測試
ssh -p 250 root@12.0.0.1

注意:使用DNAT時,同時還有配合SNAT使用,才能實現響應數據包的正確返回。
主機型防火墻: 主要使用 INPUT、OUTPUT 鏈,設置規則時一般要詳細的指定到端口。
網絡型防火墻: 主要使用 FORWARD 鏈,設置規則時很少去指定到端口,一般指定到IP地址或者到網段即可。

3、防火墻規則的備份和還原

`導出(備份)所有表的規則`
iptables-save > /opt/ipt.txt`導入(還原)規則`
iptables-restore < /opt/ipt.txt`將iptables規則文件保存在 /etc/sysconfig/iptables 中,iptables服務啟動時會自動還原規則`
iptables-save > /etc/sysconfig/iptables  
systemctl stop iptables			##停止iptables服務會清空掉所有表的規則
systemctl start iptables		##啟動iptables服務會自動還原/etc/sysconfig/iptables 中的規則

4、tcpdump抓包工具的運用

# tcpdump是Linux系統中自帶抓包工具
tcpdump tcp -i ens32 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.30.0/24 -w ./target.cap=== 字段說明 ===
tcp       :ip、icmp、arp、rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型。
-i  ens33 :只抓經過接口ens33的包。
-t	      :不顯示時間戳
-s0	      :抓取數據包時默認抓取長度為68字節。加上"-s 0"后可以抓到完整的數據包。
-c 100	  :只抓取100個數據包。
dst port ! 22	        :不抓取目標端口是22的數據包。
src net 192.168.1.0/24	:數據包的源網絡地址為192.168.1.0/24。Net:網段,host:主機。
-w ./target.cap	        :保存成cap文件,方便用ethereal (即wireshark)分析。

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

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

相關文章

騰訊再推互動微短劇,游戲的風吹向了短劇

當你看劇時不再擁有上帝視角&#xff0c;處在女主的位置上&#xff0c;你又會做出什么樣的選擇&#xff1f; 騰訊最新上線的短劇《摩玉玄奇2》在原版之外還推出了互動版&#xff0c;就給出了這樣一個新玩法。 《摩玉玄奇2》原版是普通的后宮職場微短劇&#xff0c;互動版則是…

虛擬機VMware安裝centos以及配置網絡

目錄 1、CentOS7的下載2、CentOS7的配置3、CentOS7的安裝4、CentOS7的網絡配置 4.1、自動獲取IP4.2、固定獲取IP 5、XShell連接CentO 準備工作&#xff1a;提前下載和安裝好VMware。VMware的安裝可以參考這一篇文章&#xff1a;VMware15的下載及安裝教程。 1、CentOS7的下載 …

qt 字符串操作

在 QT 中&#xff0c;你可以使用QString類來操作字符串。QString是一個模板類&#xff0c;它可以存儲不同字符集的字符串&#xff0c;并且提供了許多用于操作字符串的方法。 以下是一些常見的操作字符串的方法&#xff1a; append()方法&#xff1a;將一個字符串附加到QString的…

從零開始搭建企業管理系統(五):統一響應結果和全局異常處理

統一響應結果和全局異常處理 前言統一響應結果定義響應結構定義響應對象定義響應狀態對象統一返回響應對象定義 Controller 攔截類 全局異常處理 前言 做個功能之前我們想一下為什么要做統一響應結果和全局異常處理呢&#xff1f; 這是因為我們的項目采用的是前后端分離開發&am…

【C++】小項目:C++實現通訊錄管理系統

文章目錄 1、系統需求完整代碼 1、系統需求 本文將利用C來實現一個通訊錄管理系統 系統中需要實現的功能如下&#xff1a; 添加聯系人&#xff1a;向通訊錄中添加新人&#xff0c;信息包括&#xff08;姓名、性別、年齡、聯系電話、家庭住址&#xff09;最多記錄1000人顯示聯…

LVGL | Demo實例使用說明

LVGL | Demo實例使用說明 時間&#xff1a;2023年12月10日21:51:17 文章目錄 LVGL | Demo實例使用說明Demos for LVGLAdd the examples to your projectsDemosWidgetsMusic playerKeypad and encoderBenchmarkStress Contributing Demos for LVGL Add the examples to your p…

基于SSM的酒店管理旅店系統(Java畢業設計)

大家好&#xff0c;我是DeBug&#xff0c;很高興你能來閱讀&#xff01;作為一名熱愛編程的程序員&#xff0c;我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里&#xff0c;我將會結合實際項目經驗&#xff0c;分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

華為OD機試真題-密碼輸入檢測-2023年OD統一考試(C卷)

題目描述&#xff1a; 給定用戶密碼輸入流input&#xff0c;輸入流中字符<表示退格&#xff0c;可以清除前一個輸入的字符&#xff0c;請你編寫程序&#xff0c;輸出最終得到的密碼字符&#xff0c;并判斷密碼是否滿足如下的密碼安全要求。 密碼安全要求如下&#xff1a; …

【軟件測試】年薪30萬跟年薪15萬的面試有些什么區別?

1、什么是兼容性測試&#xff1f;兼容性測試側重哪些方面&#xff1f; 參考答案&#xff1a; 兼容測試主要是檢查軟件在不同的硬件平臺、軟件平臺上是否可以正常的運行&#xff0c;即是通常說的軟件的可移植性。 兼容的類型&#xff0c;如果細分的話&#xff0c;有平臺的兼容…

7記一次組網過程

這段時間學習了服務器、操作系統、網絡相關的知識&#xff0c;后面真的進行了一次組網操作。這次把組網的過程記錄下來&#xff0c;方便下次操作的時候有資料可查詢。 前期準備 要組網&#xff0c;首先要做好規劃&#xff0c;把前期要準備的事情提前做好&#xff0c;才能事半…

Numpy數組中數據的排序【sort(),argsort()與 lexsort()】 (第13講)

Numpy數組中數據的排序【sort(),argsort()與 lexsort()】 (第13講) ??????? ??博主 侯小啾 感謝您的支持與信賴。?? ???????????????????????????????????????????????????????????????????…

【C++ 程序設計入門基礎】- 第3節-循環結構02

目錄 while 語句 案例 while 循環 輸入一個整數 n &#xff0c;輸出 1~n 的所有整數。 查看運行結果&#xff1a; while 語句結構解析 do while 語句 案例 do while 循環 輸入一個整數n&#xff0c;輸出1&#xff5e;n的所有整數。 查看運行結果 while、do while的區別 …

AE-制作唯美星空粒子動態視頻

目錄 1.新建合成 2.導入一張星空圖片,拖入到新建的合成中 3.新建純色層面命名為bj

【git 相關操作】

git status - 查看當前狀態 git add - 將文件添加到暫存區 git commit -m "msg" - 提交暫存區文件到本地倉庫 git push origin master - 本地倉庫文件推送到遠程倉庫 git merge - 合并分支 git clone - 從指定地址克隆項目 git log - 查看commit日志 git stash push …

SpringSecurity6 | 登錄成功后的JSON處理

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a; Java從入門到精通 ?特色專欄&#xf…

Android:java.lang.SecurityException: Provider must not be exporte

java.lang.SecurityException: Provider must not be exporte 解決方案 首先在AndroidManifest.xml中添加provider android:authorities&#xff1a; 是用來標識provider的唯一標識&#xff0c;在同一部手機上一個"authority"串只能被一個app使用&#xff0c;沖突的話…

架構LNMP

目錄 1.安裝Nginx服務 2.安裝 MySQL 服務 3.安裝配置 PHP 解析環境 4.部署 Discuz&#xff01;社區論壇 Web 應用 1.安裝Nginx服務 實驗準備 systemctl stop firewalld systemctl disable firewalld setenforce 0 安裝依賴包 yum -y install pcre-devel zlib-devel gcc…

JavaScript中的async await基本使用

目錄 1. async await是什么2. 為什么會出現3. 需要怎么去使用4. 最終的結果解決什么5. 使用的注意點6. 常用的技巧 JavaScript中的async await是一種處理異步代碼的語法糖&#xff0c;它可以讓我們更加方便地處理異步操作&#xff0c;避免了回調地獄和Promise鏈式調用的問題。 …

Jmeter測試實踐:文件下載接口

一 Jmeter步驟 1.打開jmeter4.0&#xff0c;新建測試計劃&#xff0c;添加線程組。根據實際情況配置線程屬性。 2.添加HTTP請求。根據接口文檔進行配置。 Basic部分修改如下&#xff0c;Advanced部分保持默認。這里的參數id是文件的id&#xff0c;我進行了參數化&#xff0c…

vue基本運用之常見問題及案例代碼

前言 一些 Vue.js 的常見問題以及對應的案例代碼 Vue實例生命周期 問題描述:如何在Vue的生命周期鉤子中調用其他鉤子?案例代碼: new Vue({el: #app, created: function () {console.log(m