一、SNAT环境

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_服务器

二、未启用的SNAT

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_vim_02

三、启用的SNAT

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_服务器_03

### --- 前提条件

~~~ 局域网各主机正确设置IP地址/子网掩码
~~~ 局域网各主机正确设置默认网关地址
~~~ Linux网关支持IP路由转发
### --- 实现方法:编写SNAT转换规则

~~~ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
~~~ MASQUERADE —— 地址伪装
~~~ 适用于外网IP地址,非固定的情况
~~~ 对于ADSL拨号连接,接口通常为ppp0、ppp1
~~~ 将SNAT规则改为MASQUERADE 即可
~~~ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

四、实验专题.SNAT转换<——通过SNAT转换让内网主机访问公网。

### --- HA-server1:10.10.10.11:私有客户端内网
### --- HA-server2:10.10.10.12:第一块网卡:仅主机模式。第二块网卡:NAT模式;可以访问外网
### --- 添加路由交给10.10.10.12

[root@server11 ~]# echo "GATEWAY=10.10.10.12" >>/etc/sysconfig/network-scripts/ifcfg-eth0
[root@server11 ~]# service network restart
[root@server11 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.10.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
0.0.0.0 10.10.10.12 0.0.0.0 UG 0 0 0 eth0
### --- 设置HA-server2第二块网卡为DHCP可以访问公网

[root@server12 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
[root@server12 ~]# service network restart
[root@server12 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 // 开启路由转发
[root@server12 ~]# sysctl -p
net.ipv4.ip_forward = 1 // 刷新内核规则
### --- 开启防火墙并清除默认规则

[root@server12 ~]# service iptables start
[root@server12 ~]# chkconfig iptables on
[root@server12 ~]# iptables -L
[root@server12 ~]# iptables -F
### --- 增加SNAT转换规则

[root@server12 ~]# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j SNAT --to-source 192.168.120.129 //-t nat:nat表 -A POSTROUTING:路由后 -s 10.10.10.0/24内网地址 -o eth1:出口网卡 -j SNAT:动作SNAT转换 --to-source 192.168.120.129出口地址
[root@server12 ~]# iptables -t nat -L
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.10.10.0/24 anywhere to:192.168.120.129
[root@server12 ~]# service iptables restart // 重启iptables这条规则就消失,因为是临时生效的
[root@server12 ~]# iptables -t nat -L
### --- 添加SNAT规则永久生效;持久化

[root@server12 ~]# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j SNAT --to-source 192.168.120.129
[root@server12 ~]# iptables -t nat -L
[root@server12 ~]# service iptables save // 保存永久生效
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@server12 ~]# cat /etc/sysconfig/iptables
*nat // 代表那张表
:PREROUTING ACCEPT [0:0] // PREROUTING 默认规则是ACCEPT[0过滤的数据包数:0过滤的字节数]
:POSTROUTING ACCEPT [1:69] // POSTROUTING 默认规则时ACCEPT
:OUTPUT ACCEPT [1:69] // OUTPUT 默认规则是ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth1 -j SNAT --to-source 192.168.120.129 // 刚才添加的规则
COMMIT // COMMIT 表示这条规则结束
[root@server12 ~]# vim  /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [1:69]
:OUTPUT ACCEPT [1:69]
-A POSTROUTING -s 10.10.10.0/24 -o eth1 -j SNAT --to-source 192.168.120.129
COMMIT
[root@server12 ~]# service iptables save
[root@server12 ~]# service iptables restart

[root@server12 ~]# iptables -t nat -L
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.10.10.0/24 anywhere to:192.168.120.129
### --- 验证:在HA-server1:10.10.10.11通过HA-server2:10.10.10.12上网。

[root@server11 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@server11 ~]# service network restart
[root@server11 ~]# ping baidu.com // HA-server1:10.10.10.11为仅主机模式,不可访问公网,添加路由设置SNAT转换可以访问公网。
64 bytes from 39.156.69.79: icmp_seq=6 ttl=127 time=40.9 ms

五、通过MASQUERADE自动的识别并添加公网地址

### --- 在真正的生产环境中,做的SNAT转换,需要些固定的公网地址,若是每次都需要抓取公网地址,动态的转换机制MASQUERADE:地址伪装
~~~ MASQUERADE自动的判断你的公网地址是多少,而不需要去指定公网地址。
### --- 添加一条动态的SNAT转化并验证

[root@server12 ~]# iptables -t nat -F // 清空NAT表
[root@server12 ~]# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE
[root@server12 ~]# iptables -t nat -L
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.10.10.0/24 anywhere // 自动的判断地址是多少且添加上,其实这条规则就是家里的路由器设置的规则。 若是这台服务器安装了DHCP且添加了这条规则,那么就可以当做家里的路由器来使用了。
[root@server11 ~]# ping baidu.com                                           // 可以正常访问
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=11 ttl=127 time=746 ms

六、DNAT策略

### --- DNAT策略的典型应用环境
### --- 在Internet中发布位于企业局域网内的服务器

~~~ DNAT策略的原理
~~~ 目标地址转换:Destination Network Address Translation
~~~ 修改数据包的目标地址

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_内网_04

### --- DNAT策略的典型应用环境

~~~ 内网中的服务器肯定是不可以被客户端直接访问到的。
~~~ 只能访问到路由器上,路由器通过DNAT转化把数据包传输到服务器。

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_vim_05

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_服务器_06

### --- 前提条件

~~~ 局域网的web服务器能够访问Internet
~~~ 网关的外网IP地址有正确的DNS解析记录
~~~ Linux网关支持IP路由转发
~~~ 实现方法
~~~ 编写DNAT转换规则
~~~ iptables -t nat -A PREROUTING -i eht0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

|NO.Z.00049|——————————|Applications|——|防火墙.V3|——|3台server|_服务器_07

### --- 发布时修改目标端口

~~~ 在DNAT规则中以“IP:Port”的形式指定目标地址
~~~ iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT -to-destination 192.168.1.6:22

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor