09.计算机网络---网络层/NAT-SNAT-DNAT/跳板机-堡垒机-中控机

NAT是计算机网络中一个非常重要的技术。在学习IP地址划分时,我们曾经学到,当前IPV4的地址的数量并不能够满足人们生活的需要,而全部转为使用IPV6,代价又太高,并且不方便。那么应该如何解决这个问题呢,NAT很好的帮我们解决了这一难题。NAT又可以分为SNAT和DNAT,SNAT使得我们内网的机器可以正常访问外网,而DNAT也使得外网的机器可以访问我们内网的服务器。接下来就让我们详细的了解一下NAT吧。

NAT

NAT也就是Network Address Translation 网络地址转换

解决的问题:因为IPV4地址不足,不能给每个人或者每个设备都分配足额的IP地址,NAT解决了这个问题。使用NAT技术,可以让私网转公网,公网转私网,解决了IP地址不足的问题,顺便还隐藏了局域网中的IP地址

公有IP:在整个互联网上使用
私有IP:在局域网中使用(A、B、C类网络各拿出一些地址作为私有IP)
A类:10.0.0.0~10.255.255.255
B类:172.16.0.0~172.31.255.255
C类:192.168.0.0~192.168.255.255

如何让一台服务器变成Linux网关服务器呢?

Linux网关服务器:理解为就是一台路由器(可以帮忙转发数据)
Linux网关服务器的netfilter来完成nat功能
NAT功能的实现是通过netfilter模块来实现的,iptables也是给netfilter传递参数(netfilter是内核中非常重要的一个模块,专门对进出系统的数据进行过滤)
[root@xieshan netfilter]# pwd
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/net/netfilter

SNAT

SNAT策略的典型应用环境:局域网主机共享单个公网IP地址接入Internet
SNAT策略的原理:
Source Network Address Translation 源地址转换,修改数据包的源IP地址
未使用SNAT策略,数据出的去,但是回不来(如下图)
在这里插入图片描述
使用了SNAT策略,出去的时候修改源IP地址,回来的时候修改目的IP地址(如下图)
在这里插入图片描述
在Linux内核的netfilter模块中有一个NAT转换表(映射表)
使用场景:有很多公网IP地址的时候,一个内网IP通过NAT转换为一个公网IP(但是实际情况中不太可能,没有这么多公网IP)

在这里插入图片描述
SNAT:共享一个IP地址出去上网,但是源端口号和目的端口号不一样,通过IP地址与端口号的结合来区别不同的主机
TCP封装,里面有源端口号和目的端口号
在这里插入图片描述
PAT又称为NAPT (Network Address PortTranslation),它实现一个公网地址和多个私网地址之间的映射,因此可以节约公网地址。
PAT的基本原理是将不同私网地址的报文的源IP地址转换为同一公网地址,但他们被转换为该地址的不同端口号,因而仍然能够共享同一地址。
在这里插入图片描述

SNAT实验

实验内容:使用一台虚拟机[名为centos 1]作为内部客户机(一块网卡即可),另外一台虚拟机[名为centos 2]作为网关服务器(需要两块网卡),内部客户机通过网关服务器上网
具体步骤:

  1. 设置好网卡的模式
  • 配置内部客户机的网卡模式为hostonly模式(ens33) -》centos 1
  • 配置网关服务器的第一块网卡ens33模式为桥接模式(作为wan口),第二块网卡ens37模式为hostonly模式(作为lan口) ->centos 2
  1. 配置IP地址(就是让网关服务器的ens37成为内部客户机的网关)
  • 内部客户机的IP地址:192.168.66.34,设置网卡为192.168.66.254
  • 网关服务器的IP地址:ens33:192.168.2.128 ens37:192.168.66.254
  1. 验证是否成功
  • 在cnetos 1机器中ping它的网关,192.168.66.254,也就是centos 2机器里的lan口;
  • 在cnetos 1机器中ping192.168.2.128,也就是centos 2机器里的wan口;
  • 都能ping通即为实验成功,但是ping centos 2机器的网关(192.168.2.1)是无法成功的
  1. 实现SNAT实验
  • 开启网关服务器的路由转发功能
    • 如何开启路由转发功能:
    1. 临时开启,刷新网络服务或者重启虚拟机都会变回去
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@localhost ~]# echo 1 >  /proc/sys/net/ipv4/ip_forward	#只能重定向到这个文件里去,不能直接vim

0表示内核里的路由转发功能是关闭的,1表示开启

    1. 永久开启
[root@localhost ~]# vim /etc/sysctl.conf 
[root@localhost ~]# cat /etc/sysctl.conf 
net.ipv4.ip_forward=1		#添加配置,开启路由转发功能
[root@localhost ~]# sysctl -p	#让内核重新加载新的配置,开启路由转发功能
  • 添加使用SNAT策略的防火墙规则
    • iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o ens33 -j SNAT --to-source 192.168.2.128
      -t nat 指定在nat表里操作
      -A POSTROUTING 在POSTROUTING位置追加一条规则 append
      -s 192.168.66.0/24 指定从防火墙过的数据包里的源ip地址来自 192.168.66.0/24 网段
      -o ens33 重ens33接口出去 out-interface
      -j SNAT 采取SNAT策略,进行源ip地址的转换
      –to-source 192.168.2.128 将ip包里的源ip地址修改为192.168.2.128
    • 可以在centos 2中编写一个脚本来开启路由转发功能
[root@localhost ~]# vim snat.sh
[root@localhost ~]# cat snat.sh 
#!/bin/bash
#清除原来iptables里的防火墙规则
iptables -F
iptables -t nat -F
#添加开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#开启snat功能
iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o ens33 -j SNAT --to-source 192.168.2.128
[root@localhost ~]# bash snat.sh 		#执行脚本
[root@localhost ~]# iptables -t nat -L -n 		#查看nat表里的规则
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination    <br>     
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        <br>
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         <br>
Chain POSTROUTING (policy ACCEPT)		#出现这一条就说明路由转发功能开启成功
target     prot opt source               destination         <br>
SNAT       all  --  192.168.66.0/24      0.0.0.0/0            to:192.168.2.128
  1. 结果
    完成上述步骤之后,centos 1机器可以正常上网,ping 192.168.2.1可以成功,ping www.baidu.com也可以成功
    上网出去的路由如下图所示:
    在这里插入图片描述

实验布局示意图(让局域网内的机器可以上网):
在这里插入图片描述
实验要实现的功能:
在这里插入图片描述

DNAT

DNAT策略的典型应用环境
在Internet中发布位于企业局域网内的服务器,也就是 在Internet中发布内网的服务器
发布: 公开出去, 背后是对内部资源的管控
将一个网络里的服务器发布出来让另外的网络能够访问
DNAT策略的原理
目标地址转换,Destination Network Address Translation,修改数据包的目标IP地址
在这里插入图片描述

DNAT就是让外面的机器,可以访问到局域网内部的机器
在这里插入图片描述
DNAT原理图
在这里插入图片描述
通过DNAT策略同时修改目标端口号
在这里插入图片描述

DNAT实验

实验内容:让外网的机器,能够访问内网的服务器(也就是能访问到centos 1)
实验步骤:
在这里插入图片描述
步骤:

  1. 内网的服务器配置好IP和网关,dns,关闭防火墙
    #内网服务器(centos 1):IP-192.168.66.34,网关-192.168.66.254,dns1-114.114.114.114
    #关闭防火墙
    service firewalld stop
    iptables -L
  2. 内网的服务器搭配好web服务,启动nginx
    #下载nginx一键安装脚本,并且启动好
  3. 网关服务器开启路由功能配置好dnat策略
    #在原来开启snat的脚本中添加一行:iptables -t nat -A PREROUTING -i eth0 -d 192.168.2.128 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.34
    -t nat 指定nat表里操作
    -A PREROUTING 在 PREROUTING位置追加一条规则 append
    -i ens33 从ens33接口进入系统 in-interface
    -d 192.168.2.128目的ip地址是192.168.2.128
    -p tcp --dport 80 传输层采用tcp协议,同时目的端口是80 Destination port
    -j DNAT 采取DNAT策略
    –to-destination 192.168.66.34 修改目的ip为192.168.66.34
    [root@localhost ~]# cat snat_dnat.sh
    #!/bin/bash
    #清除原来iptables里的防火墙规则
    iptables -F
    iptables -t nat -F
    #添加开启路由功能
    echo 1 >/proc/sys/net/ipv4/ip_forward
    #开启snat功能
    iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -o ens33 -j SNAT --to-source 192.168.2.128
    #开启dnat功能
    iptables -t nat -A PREROUTING -d 192.168.2.128 -p tcp --dport 80 -i ens33 -j DNAT --to-destination 192.168.66.34
  4. 最后在路由器中都试试访问通过ens33接口(192.168.2.123)进入,转到192.168.66.34

实验布局示意图:
在这里插入图片描述

DNAT如何发布内网不同的服务器呢?

可以使用不同的端口号来对应内网不同的ip地址服务器

iptables -t nat -A PREROUTING   -d 192.168.0.127 -p tcp --dport 80  -i ens33 -j DNAT  --to-destination 192.168.88.27
iptables -t nat -A PREROUTING   -d 192.168.0.127 -p tcp --dport 80  -i ens33 -j DNAT  --to-destination 192.168.88.27:80
iptables -t nat -A PREROUTING   -d 192.168.0.127 -p tcp --dport 8080  -i ens33 -j DNAT  --to-destination 192.168.88.88:8080
iptables -t nat -A PREROUTING   -d 192.168.0.127 -p tcp --dport 3306  -i ens33 -j DNAT  --to-destination 192.168.88.136:3306

#发布跳板机192.168.88.27
iptables -t nat -A PREROUTING   -d 192.168.0.127 -p tcp --dport 2233  -i ens33 -j DNAT  --to-destination 192.168.88.27:22

dnat修改ip包的目的ip地址,还可以修改tcp或者udp里的目的端口号

跳板机/堡垒机/中控机

跳板机/堡垒机/中控机:外网的用户想要ssh到内网的机器上,不可能将内网所有的机器都发布出去,一是不安全,二是要在网关服务器上添加的DNAT策略会太多,所以会选中一台机器作为跳板机,然后添加DNAT策略,将这个跳板机发布出去,例如指定跳板机的端口为2233,那么外网的用户通过网关服务器的2233端口连接到跳板机,然后在跳板机上再通过ssh服务连接到内网的其他机器。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值