首先說明snat和dnat都大緻相當于網絡中的nat和pat協定,本實驗是通過用一台linxu虛拟機來模拟内網網關,并且利用linux上的iptables防火牆政策,達到位址轉換和端口映射的目的。
snat
實驗結構:
真機----------------(v1)網關伺服器s1(v2)--------------(v2)外網伺服器s2
開2台虛拟機linux,分别模拟s1和s2。
其中,s1上另增加一塊網卡,使用vmnet1與真機相連。
使用vmnet2與外網伺服器的s2的vmnet2相連。
ip位址規劃
真機:
vmnet1:192.168.80.5/24
s1:
vmnet1:192.168.80.20/24
vmnet2:192.168.90.1/24
s2:
vmnet2:192.168.90.22/24
實驗步驟:
設定s1,s2的網卡參數
vi /etc/sysconfig/network-scripts/ifcfg-eth0
設定如下
繼續設定另一塊網卡的參數
首先ifconfig檢視一下eth1的mac位址,然後
cd /etc/sysconfig/network-scripts/
複制模闆
cp -p ifcfg-eth0 ifcfg-eth1
修改
vi ifcfg-eth1
在s1上開啟路由轉發功能
vi /etc/sysctl.conf
設定s2的網卡參數
s2
vi /etc/sysconfig/network-scripts/ifcfg-eth1
關閉s2的防火牆
service iptables stop
将真機vmnet1的ip位址設定為192.168.80.5/24 ,網關設定為192.168.80.20
2.在s1上設定防火牆,使得s1可以做pat,将真機位址192.168.80.5轉換為外網口
位址192.168.90.1
iptables –t nat –i postrouting –s 192.168.80.0/24 –o eth1 –j snat --to
192.168.90.1
注釋:-t 規則表 -i 規則鍊 -s 源位址 -o出站接口 -j 政策
測試結果,在真機上ping 192.168.90.22
是通的。
可以在s2上搭建一個ftp,來觀察結果。
service vsftpd start
然後在真機上登入 ftp
在s2上檢視一下是誰在登入
netstat –anpt
登入自己的主機位址為192.168.90.1 表明pat已經轉換位址成功。
dnat
真機(模拟外網)(v1)----------(vmnet1)網關伺服器s1(vmnet2)---- -----(vmnet2)内網伺服器s2
ip位址的規劃依舊不變
在s1上做修改
s1
首先清空原來的防火牆配置
iptables –f
配置新的dnat政策
iptables –t nat –a prerouting –i eth0 –d 192.168.80.20 –p tcp --dport 21 –j dnat
--to 192.168.90.22
注釋:-t 規則表 -a 規則鍊 -i 入站接口 -d 目标位址 –p協定 --dport 目标端口 -j 政策
測試,用真機ftp 192.168.90.22
成功登入
在s2上netstat -anpt
驗證登入的為真機ip位址192.168.80.5。
實驗結束。