当前位置:   article > 正文

(CentOS7)iptables之网络地址转换NAT实验(SNAT、DNAT)_iptables snat 回包转换流程

iptables snat 回包转换流程

目录

实验拓扑图​

1 实验环境配置

win7:​

Cent1:​

Cent2:​

2 NAT是做什么的

第一回合

第二回合

NAT表是什么?

3 SNAT配置

 如果内网对应的公网IP不一定咋办,比如公司是拨号网络

4 DNAT配置


实验拓扑图

1 实验环境配置

可以参考这篇文章 : https://blog.csdn.net/Drifter_Galaxy/article/details/108366661 的静态IP、子网掩码、网关配置、路由配置 部分,跟着做,配置好实验环境。

win7:

Cent1:

Cent2:


2 NAT是做什么的

NAT,即网络地址转换。

第一回合

现在win7想要访问Cent2的Web服务 80端口,就会构造出一个数据包

tcp协议
s:192.168.1.1
d:12.34.56.78
dport:80

然后这个数据包被发送到了cent2,然后Cent2得回包啊,于是看了看地址:192.168.1.1.
这???         (192.168.1.1是一个私有地址,目的地址是这玩意的包,在网络上直接会被丢弃的)

第二回合

现在想个办法能让数据包回去,就需要用到NAT技术了。用到NAT时候的情形。

内网的数据包发到了网关这里,网关要对这个数据包操作一番。把他的源地址改为本网关的对外公网地址。于是数据包就变成了这样》出了网关》

数据包顺利的到达了Cent2,然后回包的时候就知道要发给12.34.56.254,然后再次到了网关这里。

网关一看,这个包的目标端口是50000,从而得知这是他之前转换过的,从Cent1的NAT地址转换表查到了这个包是给win7的。于是又对数据包一通操作发给了win7。

NAT表是什么?

来看看iptables里面的NAT表是什么样?

  1. [root@localhost ryan]# iptables -t nat -nvL
  2. Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
  3. pkts bytes target prot opt in out source destination
  4. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  5. pkts bytes target prot opt in out source destination
  6. Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
  7. pkts bytes target prot opt in out source destination
  8. Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
  9. pkts bytes target prot opt in out source destination

有一说一,我傻了,网上的都说只有三条链:PREROUTING、OUTPUT、POSTROUTING,我这咋还多了一个呢。算了,继续做实验。

3 SNAT配置

POSTROUTING属于路由后的链。添加一条只要是源为192.168.1.0/24网段的就把源地址转换为12.34.56.254的规则后,再去看看NAT转发表。

  1. [root@localhost ryan]# iptables -t nat -A POSTROUTING -p tcp -o eth37 -s 192.168.1.0/24 -j SNAT --to-source 12.34.56.254
  2. [root@localhost ryan]# iptables -t nat -nvL
  3. Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
  4. pkts bytes target prot opt in out source destination
  5. Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  6. pkts bytes target prot opt in out source destination
  7. Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
  8. pkts bytes target prot opt in out source destination
  9. Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
  10. pkts bytes target prot opt in out source destination
  11. 0 0 SNAT tcp -- * eth37 192.168.1.0/24 0.0.0.0/0 to:12.34.56.254

排除了FORWARD链的影响之后(iptables -F FORWARD)

win7就可以顺利访问对方的80端口了

 如果内网对应的公网IP不一定咋办,比如公司是拨号网络

现在之前的那条规则可就不一定行了。。。因为出口地址不固定。把那条规则删了

iptables -t nat -D POSTROUTING 1

然后配置新规则

iptables -t nat -A POSTROUTING -p tcp -o eth37 -s 192.168.1.0/24 -j MASQUERADE

4 DNAT配置

路由前规则,PREROUTING之后才轮到INPUT

DNAT主要是用在外网访问内网时,在网关那里将Destination改了、

现在的网络拓扑图是外网的win7想要访问内网的cent2

iptables -t nat -A PREROUTING -i eth37 -d 12.34.56.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/184268
推荐阅读
相关标签
  

闽ICP备14008679号