NAT與DNAT的原理與應用

1、SNAT原理與應用

一、SNAT應用環境

局域網主機共享單個公網IP地址接入Internet (私有IP不能在Internet中正常路由)linux

二、SNAT原理

修改數據包的源地址web

三、SNAT轉換前提條件

① 局域網各主機已正確設置IP地址、子網掩碼、默認網關地址vim

② Linux網關開啓IP路由轉發bash

臨時打開:
echo 1 > /proc/sys/net/ ipv4/ip_forward
或
sysctl -W net.ipv4. ip_forward=1

永久打開:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
#將此行寫入配置文件
sysctl -P
#讀取修改後的配置

 

四、SNAT轉換1:固定的公網IP地址:

SNAT轉換1:固定的公網IP地址:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to 12.0.0.1
或
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 12.0.0.1-12.0.0.10
									內網IP	      出站 外網網卡                   外網IP或地址池
-s 內網IP
-o 出站外網網卡
source 外網IP或地址池

 

五、SNAT轉換2:非固定的公網IP地址(共享動態IP地址) :

iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE

 

小知識擴展: 一個I P地址作SNAT轉換,通常可讓內網100到200 臺主機實現上網服務器

2、DNAT原理與應用

DNAT轉換前提條件:

1.局域網的服務器可以訪問Internet網絡

2.網關的外網地址有正確的DNS解析記錄ssh

3.Linux網關開啓IDNAT轉換1:發佈內網的Web服務tcp

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -P

 

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

#把從ens33進來的要訪問web服務的數據包目的地址轉換爲 192.168.80.11
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.80.11
或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.80.11
                             入站 外網網卡  外網IP											   內網服務器IP

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to 192.168.80.11-192.168.80.20

 

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.11:22

#在外網環境中使用SSH測試
ssh -p 250 root@12.0.0.1
yum -y install net-tools
#若沒有ifconfig 命令可提早使用yum 進行安裝
ifconfig ens33

 

注意:使用DNAT時,同時還有配合SNAT使用,才能實現響應數據包的正確返回

小知識擴展:ide

  • 主機型防火牆主要使用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、Linux抓包

一、tcpdump簡介

tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它能夠打印出全部通過網絡接口的數據包的頭信息。

tcpdump命令工做時先要把網卡的工做模式切換到混雜模式。因此tcpdump命令須要以root身份運行。tcpdump命令是linux下使用最普遍的網絡協議分析工具。使用tcpdump命令時,必須精通TCP/IP協議工做原理。

二、格式

tcpdump [參數]

三、經常使用參數

經常使用參數 說明
-a 嘗試將網絡和廣播地址轉換成名稱
-c<數據包數目> 收到指定的數據包數目後,就中止進行傾倒操做
-d 把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標準輸出
-dd 把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標準輸出
-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標準輸出
-e 在每列傾倒資料上顯示鏈接層級的文件頭
-f 用數字顯示網際網絡地址
-F<表達文件> 指定內含表達方式的文件
-i<網絡界面> 使用指定的網絡截面送出數據包
-l 使用標準輸出列的緩衝區
-n 不把主機的網絡地址轉換成名字
-N 不列出域名
-O 不將數據包編碼最佳化
-p 不讓網絡界面進入混雜模式
-q 快速輸出,僅列出少數的傳輸協議信息
-r<數據包文件>  從指定的文件讀取數據包數據
-s<數據包大小> 設置每一個數據包的大小
-S 用絕對而非相對數值列出TCP關聯數
-t 在每列傾倒資料上不顯示時間戳記
-tt 在每列傾倒資料上顯示未經格式化的時間戳記
-T<數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型
-v 詳細顯示指令執行過程
-vv 更詳細顯示指令執行過程
-x 用十六進制字碼列出數據包資料
-w<數據包文件> 把數據包數據寫入指定的文件

四、示例

image

image

image

相關文章
相關標籤/搜索