美文网首页
snat和dnat

snat和dnat

作者: Wu杰语 | 来源:发表于2022-05-23 22:09 被阅读0次

snat和dnat怎么理解,发现不同的文章都解释了一遍,角度都不一样,很难深入。通过各个文章综合来看,应该从场景概念、原理和实践几个角度。参考文章:

场景概念
SNAT

内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换成公有ip。网关这个地址转换称为SNAT


snat

如上图,内网客户端为了访问外网服务器,源ip是192.168.109.131,目的ip是12.0.0.12,请求过程必须先把源ip在网管上转换为公网ip,从192.168.109.131转换为12.0.0.254。

DNAT

内部需要对外提供服务时,外部发起主动连接,路由器或着防火墙的网关接收到这个连接,然后把连接转换到内部,此过程是由带公有ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT.主要用于内部服务对外发布


DNAT

当内部对外部提供服务的时候,外部发起请求,源ip是192.168.109.20,目的ip是12.0.0.200,请求过程必须把目的ip修改未12.0.0.200.

原理和时间

原理上都是通过netfilter框架实现


netfileter框架

对于snat属于数据流出用户空间进程-->OUTPUT--> POSTROUTING,在POSTROUTING修改源ip

在网关上配置iptables规则
源地址转换需要在iptables的postrouting上做NAT转换,如果放在prerouting做转换,数据报文尚未经过路由决策,无法知道数据报文所要到达的目标是内网还是外网,所以在prerouting上做转换不合理
在gw上添加规则进行SNAT转换
·POSTROUTING:修改要离开防火墙数据包的源IP地址
-A:指定链名   
-p:指定协议类型   
-d:指定目标地址   
--dport:指定目标端口(destination port 目的端口)   
--sport:指定源端口(source port 源端口)   
-j:指定动作类型  
[root@gw ~]# iptables -t nat -A POSTROUTING -s 173.22.90.0/24 ! -d 173.22.90.0/24 -j SNAT --to-source 192.168.1.107

如上,实际是配置了一条规则

对于dnat属于数据流入:PREROUTING --> INPUT-->用户空间进程, 在PREROUTING配置规则

在网关上配置itables规则

在prerouting链上配置DNAT的转换规则
[root@GW ~]#  iptables -t nat -A PREROUTING -d 192.168.1.106 -p tcp --dport 80 -j DNAT --to-destination 173.22.90.4
·PREROUTING:修改到达防火墙数据包的目的IP地址
[root@GW ~]# service iptables save 
保存防火墙规则

#当内网的web服务使用的为非标准端口时也可以将其端口进行转换,以内网的http服务为8080为例
#[root@gw ~]# iptables -t nat -A PREROUTING -d 172.22.27.20 -p tcp --dport 80 -j DNAT --to-destination 192.168.73.20:8080

snat和dnat,需要通过场景理解概念,通过netfilter框架理解原理和配置。

解决问题

实际上,我碰到的要解决的问题是,对于一个微服务系统,如何打印外部客户端过来的ip。

一般的微服务系统,都存在网关,默认情况下,从http报文中解截获的ip都是网关ip,因为socket通信都是一跳一跳的,每跳都会修改源和目的ip,为了能打印源ip,就必须使用dnat设置。

相关文章

  • iptables之SNAT与DNAT

    iptables之SNAT与DNAT

  • SNAT和DNAT

    1、SNAT SNAT,源地址转换,其作用是将ip数据包的源地址转换成另外一个地址。 名词解释: SNAT,可能有...

  • snat和dnat

    snat和dnat怎么理解,发现不同的文章都解释了一遍,角度都不一样,很难深入。通过各个文章综合来看,应该从场景概...

  • iptable masquerade中源地址选择问题

    背景 在iptable/ip6table上可以在nat table上完成SNAT和DNAT操作。SNAT指将匹配i...

  • DragonFlow SNAT + DNAT + Provid

    Table of Contents DragonFlow SNAT DNAT Provider 混合部署S...

  • SNAT、NAT、SNAT、DNAT

    LVS 由 ipvs 和 ipvsadm两部分程序组成1、 ipvs(ip virtual server):是LV...

  • snat和dnat实验

    三台vm虚机,1台hostonly作为内网 1台hostonly+bridge 做路由 1台brid...

  • 关于NAT的总结

    NAT一般分为两大类转换源的NAT(SNAT)和转换目的的NAT(DNAT)SNAT一般是内网访问Internet...

  • DNAT与SNAT

    SNAT (使用服务者配置) 用户私有地址想访问公网,网关将私有地址(源)转换为公网地址 需要在postrouti...

  • SNAT 和 DNAT 的区别:

    从定义上讲,SNAT是原地址转换,DNAT是目标地址转换。区分这两个功能可以简单的由服务的发起者是谁来区分,内部地...

网友评论

      本文标题:snat和dnat

      本文链接:https://www.haomeiwen.com/subject/lrnrprtx.html