SNAT:局域网共享一个公网IP接入lnternel。mysql
意义:linux
一、保护内网用户安全,能被外界扫描的只有防火墙这一台机器,这样就减小了被攻击的可能。nginx
二、Ipv4地址匮乏,不少公司只有一个ipv4地址,可是却有几百个用户须要上网,这个时候就须要使用SNAT。web
三、节约成本,公网地址须要付费,使用SNAT只须要一个公网ip就能够知足几百人同时上网。sql
DNAT:向internel发布内网服务器数据库
意义:vim
在内网中有服务器,若是想让公网用户访问有有两种方法。安全
1.MASQUERADE(地址假装)策略 --》适合与外网口动态得到ip地址的场景bash
1、SNAT
1.准备三台虚拟机,一台配置两块网卡,其中第二个网卡配置hostonly(仅主机)模式
网络配置
服务器
2、配置好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
3、配置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
2、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)
2、在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
运行脚本。
3、验证
在sqlyog上能链接新建的用户就成功了