NAT

NAT的基本原理

NAT的定义

由来

解决IPv4短缺问题

现在

简化网络ip地址管理,提高完全性

定义

Network address translator

NAT的分类

传统的/单向出站的NAT

对应iptables 的SNAT

  • 基本的NAT
  • 网络地址/端口转换

双向NAT

对应 iptables DNAT,在公共地址与私有地址之间有一一映射关系。
常见的应用场景是把内网的服务器发不到外网。

  • 发布一台内网服务器到外网
  • IPv4 与 IPv6 地址空间之间的双向地址映射

两次NAT

  • 执行双向的源和目的 地址转换,但源和目的 地址在两个方向上都被转换

SNAT 与 Masquerade 的工作机制

SNAT

一般用来解决内网用户上网的问题

  • 客户机将一个数据包发给运行NAT的计算机,数据包修改前(src:192.168.1.5:[1024<随机<65535], dst:61.62.63.65:80)
  • 运行NAT的计算机修改数据包的src ip为NAT的外网地址:125.100.2.1,然后发给web server(61.62.63.65:80)。由于只有一个外网ip,还需要把数据包的源端口,NAT把自己的随机端口替换源端口,用map记录映射。
  • 外部的web server 收到包后返回一个应答消息给NAT服务器(dst:125.100.2.1:[NAT的随机端口] )
  • 运行NAT的服务器收到包后,检查它的map信息以确定目标主机,然后修改包头信息为(dst:192.168.1.5:[原来客户机的端口])把包发给客户机。

Masquerade 是SNAT的特例

Masquerade从指定的网卡上自动获得当前ip地址来做SNAT

DNAT的工作机制

NAT的优缺点

SNAT与DNAT的应用

iptables

源NAT的语法结构

标准SANT

iptables [-t table] {-A|-C|-D} chain rule-specification
iptables -t nat -A POSTROUTING -o <out intface> -j SNAT --to-source <address> [port]

Masquerade 的源NAT

iptables -t nat -A POSTROUTING -o <out intface> -j MASQUERADE --to-port <port>

SNAT:局域网共享一个公网IP接入lnternel,好处如

1、保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能。

2、Ipv4地址匮乏,很多公司只有一个ipv4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT。

3、省钱,公网地址付费,使用SNAT只需要一个公网ip就可以满足几百人同时上网。

DNAT:向internel发布内网服务器

在内网中有服务器,如果想让公网用户访问有有两种方法。

配置双网卡,一网卡对内,一网卡对外;一般是高访问量的web服务器,为了避免占用网关的流量才这样做,使用不是很广泛。

内网web服务器,或是ftp服务器,为了用户在公网也可以访问,有不想买公网ip地址,采用DNAT方案。

SNAT

企业内部的主机A想访问互联网上的主机C,首先将请求数据包(源:ipA,目标:ipC)发送到防火墙所在主机B,B收到后将数据包源地址改为本机公网网卡的ip(源:ipA,目标:ipB),然后经互联网发送给C;C收到后将回应包(源:ipC,目标:ipB)转发给C的路由器,经互联网将回应包转发给B,B收到回应包后修改其目的地址,即回应包改为(源:ipC,目标:ipA)然后将数据包转发给A。

在这个过程中,修改了请求报文的源地址,叫做SNAT(source NAT POSTROUTING),用于局域网访问互联网。

不能在防火墙B的prerouting链上设置转换源地址的防火墙策略,因为若在B的prerouting链上设置转换源地址的防火墙策略,此时还未检查路由表,还不知道要到达数据包中目标主机需经过本机的哪个网卡接口,即还不知道需将源地址替换为哪个公网网卡的ip,需在postrouting设置转换源地址的防火墙策略。

实验环境:(本实验中用172.18.0.0/16网段模拟公网ip)

局域网主机A:192.168.25.106黄色提示符 白色字

防火墙B:eth0 192.168.25.107 eth1 172.18.0.107绿色提示符 白色字

互联网主机C:172.18.0.108紫色提示符 白色字

实验主机A B C

本实验中,A是局域网主机,将数据包转发至防火墙主机B,B实际上也充当了路由器的作用。
实际环境中,B与C之间会有多个路由器,本实验只是为了说明SNAT的工作原理,不再考虑这些因素。
nat表共有4个链:INPUT、OUTPUT、PREROUTING、POSTROUTING
查看路由表 iptables -vnL -t nat

添加 SNAT 规则

iptables -t nat -A POSTROUTING -s 172.16.200.0/24 -j SNAT --to-source 172.16.200.12

原文链接:https://blog.csdn.net/beanewself/article/details/78317626

posted on 2021-03-01 19:52  ims-  阅读(321)  评论(0编辑  收藏  举报

导航