SNAT:局域网共享一个公网IP接入lnternel。
意义:
1、保护内网用户安全,能被外界扫描的只有防火墙这一台机器,这样就减少了被攻击的可能。
2、Ipv4地址匮乏,很多公司只有一个ipv4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT。
3、节约成本,公网地址需要付费,使用SNAT只需要一个公网ip就可以满足几百人同时上网。
DNAT:向internel发布内网服务器
意义:
在内网中有服务器,如果想让公网用户访问有有两种方法。
1.MASQUERADE(地址伪装)策略 --》适合与外网口动态获得ip地址的场景
一、SNAT
1.准备三台虚拟机,一台配置两块网卡,其中第二个网卡配置hostonly(仅主机)模式
网络配置
二、配置好ip,网关和dns服务器,router机器开启路由功能。
(1)route机器
在 /etc/sysconfig/network-script 下修改ens33配置
刷新网卡
ifdown ens33
ifup ens33
因为新配置的第二块网卡没有相应的配置文件,所以我们要手动去新建一个ifcfg-ens37
刷新网卡
ifdown ens37
ifup ens37
#再查看ip地址
ip add
#开启路由功能 --》成为路由器
#临时开启
echo 1 >/proc/sys/net/ipv4/ip_forward 1表示开启 0 关闭 默认是0
#永久生效的话,需要修改sysctl.conf:
vim /etc/sysctl.conf
# 添加
net.ipv4.ip_forward = 1
sysctl -p
# 让内核重新读取/etc/sysctl.conf配置文件里的内容,开启路由功能
#net.ipv4.ip_forward = 1
三、配置snat策略,开启snat功能
# route机器上
#临时开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#在iptables里添加一条snat的转发策略,让内网 192.168.82.0的网络从ens33接口出去,出去的时候将源ip地址转换为192.168.0.159
iptables -t nat -A POSTROUTING -s 192.168.82.0/24 -o ens33 -j SNAT --to-source 192.168.0.159
二、DNAT实验
一.内网准备一台 web和mysql服务器
mysql机器上安装数据库 mariadb或mysql
yum install nginx mariadb mariadb-server
service mariadb start
授权一个可以远程连接的mariadb的账户
mysql -uroot -p
#回车键mariadb默认是不需要输入密码的
MariaDB [(none)]> grant all on *.* to 'wangsy'@'%' identified by '123456';
Query OK, 0 rows affected (0.001 sec)
二、在linux网关服务器上
1.开启路由功能
2.添加DNAT策略
脚本文件
#!/bin/bash
#清除原来的规则
iptables -F
iptables -t nat -F
#临时开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#dnat策略-mysql
iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.159 -p tcp --dport 3306 -j DNAT --to-destination 192.168.82.129
# dnat -web
iptables -t nat -A PREROUTING -i ens33 -d 192.168.0.159 -p tcp --dport 80 -j DNAT --to-destination 192.168.82.129
运行脚本。
三、验证
在sqlyog上能连接新建的用户就成功了
来源:oschina
链接:https://my.oschina.net/u/4297638/blog/4494269