日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux-SNAT和DNAT

發(fā)布時(shí)間:2025/3/21 linux 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux-SNAT和DNAT 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • Pre
  • 前提:開啟IP轉(zhuǎn)發(fā)
  • IP包的結(jié)構(gòu)
  • 數(shù)據(jù)包在iptables中要經(jīng)過的鏈(chain)
  • 總結(jié)
    • -j SNAT
    • -j DNAT


Pre

Linux-iptables命令

Linux-SNAT和DNAT

在上一博客Linux-iptables命令中,我們知道了一些iptable的nat表中幾個(gè)鏈的區(qū)別,這里單獨(dú)講其中兩個(gè)鏈拿出來詳細(xì)說明。

  • DNAT(Destination Network Address Translation,目的地址轉(zhuǎn)換) 通常被叫做目的映射。

  • SNAT(Source Network Address Translation,源地址轉(zhuǎn)換)通常被叫做源映射


前提:開啟IP轉(zhuǎn)發(fā)

開啟內(nèi)核轉(zhuǎn)發(fā)的模塊。

echo 1 > /porc/sys/net/ipv4/ip_forward #臨時(shí)生效,重啟失效

永久生效:

vi /etc/sysctl.conf

修改其中的net.ipv4.ip_forward = 1

執(zhí)行

sysctl -p

立刻生效


IP包的結(jié)構(gòu)

我們在設(shè)置Linux網(wǎng)關(guān)或者防火墻時(shí)經(jīng)常要用來的兩種方式。
首先,我們要了解一下IP包的結(jié)構(gòu)

在任何一個(gè)IP數(shù)據(jù)包中,都會(huì)有Source IP Address與Destination IP Address這兩個(gè)字段,數(shù)據(jù)包所經(jīng)過的路由器也是根據(jù)這兩個(gè)字段是判定數(shù)據(jù)包是由什么地方發(fā)過來的,它要將數(shù)據(jù)包發(fā)到什么地方去。而iptables的DNAT與SNAT就是根據(jù)這個(gè)原理,對Source IP Address與Destination IP Address進(jìn)行修改。


數(shù)據(jù)包在iptables中要經(jīng)過的鏈(chain)

圖中正菱形的區(qū)域是對數(shù)據(jù)包進(jìn)行判定轉(zhuǎn)發(fā)的地方。

在這里,系統(tǒng)會(huì)根據(jù)IP數(shù)據(jù)包中的destination ip address中的IP地址對數(shù)據(jù)包進(jìn)行分發(fā)。如果destination ip adress是本機(jī)地址,數(shù)據(jù)將會(huì)被轉(zhuǎn)交給INPUT鏈。如果不是本機(jī)地址,則交給FORWARD鏈檢測。

這也就是說,我們要做的DNAT要在進(jìn)入這個(gè)菱形轉(zhuǎn)發(fā)區(qū)域之前,也就是在PREROUTING鏈中做,

比如我們要把訪問202.103.96.112的訪問轉(zhuǎn)發(fā)到192.168.0.112上:

iptables -t nat -A PREROUTING -d 202.103.96.112 -j DNAT --to-destination 192.168.0.112

這個(gè)轉(zhuǎn)換過程當(dāng)中,其實(shí)就是將已經(jīng)達(dá)到這臺Linux網(wǎng)關(guān)(防火墻)上的數(shù)據(jù)包上的destination ip address從202.103.96.112修改為192.168.0.112然后交給系統(tǒng)路由進(jìn)行轉(zhuǎn)發(fā)。

SNAT自然是要在數(shù)據(jù)包流出這臺機(jī)器之前的最后一個(gè)鏈也就是POSTROUTING鏈來進(jìn)行操作

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 58.20.51.66

這個(gè)語句就是告訴系統(tǒng)把即將要流出本機(jī)的數(shù)據(jù)的source ip address修改成為58.20.51.66。這樣,數(shù)據(jù)包在達(dá)到目的機(jī)器以后,目的機(jī)器會(huì)將包返回到58.20.51.66也就是本機(jī)。如果不做這個(gè)操作,那么你的數(shù)據(jù)包在傳遞的過程中,reply的包肯定會(huì)丟失。


總結(jié)

PREROUTING: 位于 nat 表,用于修改目的地址(DNAT)(上一節(jié)說的是數(shù)據(jù)包作路由選擇前應(yīng)用此鏈中的規(guī)則 記住!所有的數(shù)據(jù)包進(jìn)來的時(shí)侯都先由這個(gè)鏈處理)

POSTROUTING:位于 nat 表,用于修改源地址 (SNAT)(上一節(jié)說的是對數(shù)據(jù)包作路由選擇后應(yīng)用此鏈中的規(guī)則,所有的數(shù)據(jù)包出來的時(shí)侯都先由這個(gè)鏈處理.


-j SNAT

簡單的說,開放內(nèi)網(wǎng)機(jī)器外網(wǎng)權(quán)限

注意:【系統(tǒng)在路由及過慮等處理直到數(shù)據(jù)包要被送出時(shí)才進(jìn)行SNAT】

-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING鏈) 源地址轉(zhuǎn)換,SNAT 支持轉(zhuǎn)換為單 IP,也支持轉(zhuǎn)換到 IP 地址池 (一組連續(xù)的 IP 地址)

例如:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1

將內(nèi)網(wǎng) 192.168.0.0/24 的原地址修改為 1.1.1.1,用于 NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

同上,只不過修改成一個(gè)地址池里的 IP


-j DNAT

簡單的來說是發(fā)布內(nèi)部服務(wù)器,讓外面的internet用戶能訪問到服務(wù)器,如網(wǎng)站等

有一種DNAT的特殊情況是重定向,也就是所謂的Redirection,這時(shí)候就相當(dāng)于將符合條件的數(shù)據(jù)包的目的ip地址改為數(shù)據(jù)包進(jìn)入系統(tǒng)時(shí)的網(wǎng)絡(luò)接口的ip地址

-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 鏈) 目的地址轉(zhuǎn)換,DNAT 支持轉(zhuǎn)換為單 IP,也支持轉(zhuǎn)換到 IP 地址池 (一組連續(xù)的 IP 地址)

例如:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.1

把從 ppp0 進(jìn)來的要訪問 TCP/80 的數(shù)據(jù)包目的地址改為 192.168.0.1

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.0.2:80 iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to192.168.0.1-192.168.0.10

公網(wǎng)訪問 http://218.100.100.111時(shí):(假設(shè)公網(wǎng)上用戶的IP為199.199.199.199,端口12345為隨機(jī)的產(chǎn)生的。)

數(shù)據(jù)源 : ip:199.199.199.199 sport:12345
數(shù)據(jù)目標(biāo): ip:218.100.100.111 dport 80

此時(shí),通過-A PREROUTING –i eth0 –p tcp –d 218.100.100.111 --dport 80 –j DNAT --to-destination 192.168.5.179:80 告訴199.199.199.199,您要訪問的真正地址應(yīng)該是192.168.5.179:80

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的Linux-SNAT和DNAT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。