shell SNAT與DNAT的使用與區(qū)別
SNAT
SNAT原理與應(yīng)用
SNAT 應(yīng)用環(huán)境:局域網(wǎng)主機(jī)共享單個(gè)公網(wǎng)IP地址接入Internet(私有不能早Internet中正常路由)
SNAT原理:修改數(shù)據(jù)包的源地址。
SNAT轉(zhuǎn)換前提條件
局域網(wǎng)各主機(jī)已正確設(shè)置IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)地址
Linux網(wǎng)關(guān)開啟IP路由轉(zhuǎn)發(fā)
- 臨時(shí)打開:echo 1 > /proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip_forwared=1
- 永久打開
- vim /etc/sysctl.conf
- 加入內(nèi)容:net.ipv4.ip_forward=1,保存退出
- sysctl -p ##讀取修改后的配置
SNAT實(shí)驗(yàn)
首先配置服務(wù)端:
服務(wù)器位于公網(wǎng),IP地址為12.0.0.100/24。開啟http服務(wù)
vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=12.0.0.100 NETMASK=255.255.255.0 GATEWAY=12.0.0.50 systemctl restart network yum -y install httpd #進(jìn)入http服務(wù)的網(wǎng)頁目錄 cd /var/www/html #在其中寫入一個(gè)文件 echo 'hello world!' > test.html #開啟服務(wù) systemctl start httpd
再配置網(wǎng)關(guān)服務(wù)器
進(jìn)行SNAT轉(zhuǎn)換,ens33作為私網(wǎng)IP地址,ens35作為公網(wǎng)IP地址。首先,在虛擬機(jī)中設(shè)置兩張網(wǎng)卡。
vim /etc/sysconfig/network-scripts/ifcfg-ens35 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=12.0.0.50 NETMASK=255.255.255.0 vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.88.40 NETMASK=255.255.255.0 systemctl restart network
網(wǎng)關(guān)服務(wù)器設(shè)置iptables規(guī)則
#安裝iptables服務(wù) yum -y install iptables* #刪除iptables規(guī)則及nat表中規(guī)則 iptables -F && iptables -F -t nat #查看iptables規(guī)則 iptables -nL vim /etc/sysctl.conf net.ipv4.ip_forward=1 sysctl -p #允許192.168.88.0網(wǎng)段進(jìn)入網(wǎng)關(guān)服務(wù)器轉(zhuǎn)發(fā) iptables -t filter -A FORWARD -s 192.168.88.0/24 -j ACCEPT #指定出站網(wǎng)卡ens35,將192.168.88.0網(wǎng)段IP地址轉(zhuǎn)換為12.0.0.50 iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT --to 12.0.0.50
客戶端
vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.88.20 NETMASK=255.255.255.0 GATEWAY=192.168.88.40 systemctl restart network
服務(wù)端
cd /var/log/httpd grep 'test.html' access_log
DNAT
DNAT原理與應(yīng)用
DNAT 應(yīng)用環(huán)境:在Internet中發(fā)布位于局域網(wǎng)內(nèi)的服務(wù)器
DNAT原理:修改數(shù)據(jù)包的目的地址。
DNAT轉(zhuǎn)換前提條件
- 局域網(wǎng)的服務(wù)器能夠訪問Internet
- 網(wǎng)關(guān)的外網(wǎng)地址有正確的DNS解析記錄
- Linux網(wǎng)關(guān)開啟IP路由轉(zhuǎn)發(fā)
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p
DNAT轉(zhuǎn)換
##發(fā)布內(nèi)網(wǎng)的web服務(wù) ##把從ens35進(jìn)來的要訪問web服務(wù)的數(shù)據(jù)包目的地址轉(zhuǎn)換為 192.168.88.40 iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.50 -p tcp --dport 80 -j DNAT --to 192.168.88.40 或 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.50 -p tcp --dport 80 -j DNAT --to-destination 192.168.88.40 ##發(fā)布時(shí)修改目標(biāo)端口 ##發(fā)布局域網(wǎng)內(nèi)部的OpenSSH服務(wù)器,外網(wǎng)主機(jī)需使用250端口進(jìn)行連接 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.80.10:22
注意:使用DNAT時(shí),同時(shí)還有配合SNAT使用,才能實(shí)現(xiàn)響應(yīng)數(shù)據(jù)包的正確返回
DNAT實(shí)驗(yàn)
服務(wù)端
vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.88.30 NETMASK=255.255.255.0 GATEWAY=192.168.88.40 systemctl restart network yum -y install httpd #進(jìn)入http服務(wù)的網(wǎng)頁目錄 cd /var/www/html #在其中寫入一個(gè)文件 echo 'hello world!' > test.html #開啟服務(wù) systemctl start httpd
客戶端
vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=12.0.0.200 NETMASK=255.255.255.0 GATEWAY=12.0.0.50 systemctl restart network
網(wǎng)關(guān)服務(wù)器
vim /etc/sysconfig/network-scripts/ifcfg-ens35 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=12.0.0.2 NETMASK=255.255.255.0 vim /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.88.2 NETMASK=255.255.255.0 systemctl restart network
配置DNAT策略
#外網(wǎng)主機(jī)訪問發(fā)送數(shù)據(jù)包允許通過 iptables -t nat -A PREROUTING -i ens35 -d 12.0.0.2 -p tcp --dport 8080 -j DNAT --to 192.168.88.30:80 #服務(wù)器的回包發(fā)送給訪問主機(jī) iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o ens35 -j SNAT --to 12.0.0.2
到此這篇關(guān)于shell SNAT與DNAT的使用與區(qū)別的文章就介紹到這了,更多相關(guān)shell SNAT DNAT內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解shell數(shù)組${arr[*]}和${arr[@]}區(qū)別
- bash shell和dash shell的區(qū)別詳解
- Shell編程之/bin/bash和/bin/sh的區(qū)別淺析
- shell 中小括號(hào)、中括號(hào)及大括號(hào)的區(qū)別解析
- 詳談python中subprocess shell=False與shell=True的區(qū)別
- 詳解Shell $*和$@之間的區(qū)別
- linux shell中“.” 和 “./”執(zhí)行的區(qū)別詳解
- 詳解shell中source、sh、bash、./執(zhí)行腳本的區(qū)別
- Linux下Shell腳本中幾種基本命令的替換區(qū)別
- linux shell 管道命令(pipe)使用及與shell重定向區(qū)別
- 執(zhí)行Shell腳本的4種方法及區(qū)別介紹
相關(guān)文章
Shell腳本對(duì)文件中的行、單詞、字符進(jìn)行迭代輸出示例
這篇文章主要介紹了Shell腳本對(duì)文件中的行、單詞、字符進(jìn)行迭代輸出示例,本文講解了迭代文件中的每一行、迭代一行中的每一個(gè)單詞、迭代一個(gè)單詞中的每一個(gè)字符等內(nèi)容,需要的朋友可以參考下2014-11-11Linux?shell使用trap命令優(yōu)雅進(jìn)行處理程序中斷
這篇文章主要為大家詳細(xì)介紹了Linux?shell如何使用trap命令優(yōu)雅進(jìn)行處理程序中斷,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考一下2024-12-12crond構(gòu)建linux定時(shí)任務(wù)及日志查看腳本詳解
這篇文章主要為大家介紹了crond構(gòu)建linux定時(shí)任務(wù)及日志查看腳本詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10exit(-1)或者return(-1)shell得到的退出碼為什么是255
exit(-1)或者return(-1)shell得到的退出碼為是255,大家知道為什么嗎?帶著這個(gè)疑問來腳本之家學(xué)習(xí)下吧,本篇文章告訴大家答案2015-10-10Linux啟動(dòng)與自啟動(dòng)的實(shí)例詳解
這篇文章主要介紹了Linux啟動(dòng)與自啟動(dòng)的實(shí)例詳解的相關(guān)資料,希望通過本文大家能理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09用模板的方式創(chuàng)建守護(hù)進(jìn)程代碼實(shí)例
用模板的方式創(chuàng)建守護(hù)進(jìn)程,只需要定義一個(gè)與int work(int argc,char **argv)相同的偽入口函數(shù)傳入start_domain()函數(shù)即可2013-12-12Linux?Shell腳本多命令執(zhí)行邏輯的示例詳解
Linux?中可以使用分號(hào)";“、雙and號(hào)”&&“和雙豎線”||"來連接多個(gè)命令。根據(jù)場景的不同適當(dāng)?shù)氖褂煤线m的符號(hào),感興趣的小伙伴可以了解一下2022-10-10Shell腳本經(jīng)典之Fork炸彈的分析與預(yù)防
這篇文章主要給大家介紹了Shell腳本經(jīng)典之Fork炸彈的分析與預(yù)防,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06