首先使用vmware建立兩臺虛擬機,這裏所有選用了centos7系統,後端
同時虛擬機的網絡連接使用橋接,橋接的方式使每個虛擬機在網絡內和獨立的機器表現一致centos
查看SNAT服務器的ip地址bash
ip address show
複製代碼
顯示服務器
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:21:73:be brd ff:ff:ff:ff:ff:ff
inet 192.168.199.134/24 brd 192.168.199.255 scope global noprefixroute dynamic ens33
valid_lft 35442sec preferred_lft 35442sec
inet6 fe80::59eb:3929:5162:3f61/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::957e:fa38:5e70:d608/64 scope link noprefixroute
valid_lft forever preferred_lft forever
複製代碼
說明已經經過DHCP獲取到了局域網IP,這個網段爲192.168.199.0/24,所綁定的網卡爲ens33網絡
咱們就把這個網段看成公網ip(只能是看成了。。。)架構
咱們建立一個虛擬網卡ens33:0並綁定192.168.100.201/24這個網段看成私有ipoop
ip add address
複製代碼
此時查看ip地址ui
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:21:73:be brd ff:ff:ff:ff:ff:ff
inet 192.168.199.134/24 brd 192.168.199.255 scope global noprefixroute dynamic ens33
valid_lft 35442sec preferred_lft 35442sec
inet 192.168.100.201/24 brd 192.168.100.255 scope global ens33:0
valid_lft forever preferred_lft forever
inet6 fe80::59eb:3929:5162:3f61/64 scope link tentative noprefixroute dadfailed
valid_lft forever preferred_lft forever
inet6 fe80::957e:fa38:5e70:d608/64 scope link noprefixroute
valid_lft forever preferred_lft forever
複製代碼
已經多了inet 192.168.100.201/24 brd 192.168.100.255 scope global ens33:0
這一條記錄了centos7
此時SNAT的網絡設置如圖spa
第一步設置INPUT鏈爲接受
iptables -A INPUT -i ens33:0 -j ACCEPT
複製代碼
而後開啓轉發功能
echo "1" > /proc/sys/net/ipv4/ip_forward
複製代碼
加入NAT table數據包假裝
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
複製代碼
此時的iptables 策略爲
> iptables-save
# Generated by iptables-save v1.4.21 on Wed Mar 20 01:12:40 2019
*nat
:PREROUTING ACCEPT [200:74558]
:INPUT ACCEPT [126:69331]
:OUTPUT ACCEPT [36:2704]
:POSTROUTING ACCEPT [36:2704]
-A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
COMMIT
# Completed on Wed Mar 20 01:12:40 2019
# Generated by iptables-save v1.4.21 on Wed Mar 20 01:12:40 2019
*filter
:INPUT ACCEPT [343:167886]
:FORWARD ACCEPT [1896:4166748]
:OUTPUT ACCEPT [43:4105]
COMMIT
# Completed on Wed Mar 20 01:12:40 2019
複製代碼
通過上面的設置服務器已經具備了SNAT的功能
首先查看ip地址
ip address add 192.168.100.201/24 broadcast + dev ens33:0
複製代碼
顯示
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e7:a6:ec brd ff:ff:ff:ff:ff:ff
inet 192.168.199.176/24 brd 192.168.199.255 scope global noprefixroute dynamic ens33
valid_lft 43106sec preferred_lft 43106sec
inet6 fe80::59eb:3929:5162:3f61/64 scope link noprefixroute
valid_lft forever preferred_lft forever
複製代碼
說明已經經過DHCP獲取到了局域網IP,這個網段爲192.168.199.0/24,所綁定的網卡爲ens33
咱們不用這個,刪除所分配的ip
ip address del 192.168.199.176/24 dev ens33
複製代碼
如今咱們從新設置一個不一樣網段的ip,同時綁定到ens33的網卡上,下面命令重的broadcast + 表示全播地址自動計算
ip address add 192.168.100.200/24 broadcast + dev ens33
複製代碼
查看當前路由
> ip route show
192.168.100.0/24 dev ens33 proto kernel scope link src 192.168.100.200
複製代碼
此時ping 咱們模擬的公網服務器192.168.199.116確定是不會通的 由於既不在同一個網段,又沒有設置網關
咱們添加一個默認的網關,網關的地址就是咱們SNAT服務器的私有ip,這個路由信息必須在SNAT服務器設置完私有ip以後才能添加,由於本機與網關之間必須是聯通的狀態
> ip route add default via 192.168.100.201 dev ens33
> ip route show
default via 192.168.199.1 dev ens33 proto dhcp metric 100
192.168.100.0/24 dev ens33 proto kernel scope link src 192.168.100.200
複製代碼
設置完成後整個鏈路就變成了下圖
因而PC-ONE就隱藏在了SNAT服務器以後,對外只能看到SNAT服務器的地址,SANT充當着防火牆的做用
此次咱們在模擬的公網服務器192.168.199.116上監聽一個端口
nc -l 8000
複製代碼
而後在PC-ONE上鍊接此端口確定是能夠聯通的並互相通訊的
因此在公共網絡上看到這個數據的來源都是來自SNAT的public ip