iptables之nat表的学习和实验

本次实验接着上一篇博客《iptables之filter表的学习和实验》进行(https://blog.csdn.net/weixin_40042248/article/details/112477946),主要实现iptables的nat表的功能。

实验目标:实现在ns1空间访问其他的外部网址、添加nat规则后对数据抓包分析ns1访问ns2或者ns3的过程、实现ns1访问www.baidu.com。

理论知识补充:

1、什么是NAT:

nat:Network Address Translatin,网络地址转换

  nat是在网络层以及传输层实现的;更多的它操纵的是网络层的内容。

虽然说nat也可以实现所谓让那些私网地址的客户端经过地址转换以后访问互联网上的主机,不过,nat早期所实现的主要目的不是为了让你访问互联网,而是为了隐藏本地网络中的主机的。所以nat最初出现的目的是为了安全性的。

2、什么是proxy(代理):

代理通常是在应用层实现的;通常它代理对于某一特定应用的请求。

3、nat的工作模型:

既然叫网络地址转换,其实它就是实现地址重写的,说白了就是将地址改为非原来的、非原有的地址,而nat技术(不需描述其细节,了解即可)目前常见的来讲,有两种类型:

(1)SNAT:只修改请求报文的源地址(只是相对于请求报文一方来说的,如果我们要考虑到响应的话,其实SNAT必然对应着DNAT,DNAT必然对应着SNAT);

(2)DNAT:只修改请求报文的目标地址;

(3)NAT表的3个链

NAT表

是网络地址转换的意思。即负责来源与目的IP地址和port的转换、和主机本身无关。一般用于局域网多人共享上网或者内网IP映射外网IP及不同端口转换服务等功能。Nat表的功能很重要、这个表定义了三个链(chains)

 INPUT主机接收的数据包有关。

 

OUTPUT

主机发出去的数据包有关、在数据包路由之前改变主机产生的数据包的目的地址等。

 

PREROUTING

在数据包刚到达防火墙时、进行路由判断之前执行的规则、改变包的目的地址(DNAT功能)、端口等(通俗比喻,就是收信时、根据规则重写收件人的地址、这看上去不地道啊、)把公司IP映射到局域网的机器上、此链多用于把外部IP地址端口的服务、映射为内部IP地址及端口

 

POSTROUTING

在数据包离开防火墙时进行路由判断之后执行的规则、改变包的源地址(SNAT)、端口等(通俗比喻、就是寄信时写好发件人的地址、要让人家回信是能够有地址可回)刺链多用于局域网共享上网,把所有局域网的地址、转换为公网地址上

实验过程:拓扑构建以及其他理论知识见《iptables之filter表的学习和实验》的介绍,这里直接开始实验。

1、实现在ns1空间访问其他的外部网址

首先,在物理机终端中使用命令iptables -t nat -nvL,查看nat表中的规则,如下图所示,可以看出各个链的规则是空的。

此时ns1内的网卡并不能访问外界的ip,比如百度,DNS服务器。为了进行验证,进入ns1空间下,查看路由信息,如下图所示,为了能够访问外界的其他主机,不可能逐条添加路由,因此必须有一条默认路由,即图中的第一条,如果没有这一条,则使用命令ip route add default via 192.168.101.2 dev veth1-ns1添加默认路由。

然后,如下图所示,在ns1中ping 114.114.114.114(DNS服务器),无法ping通,说明没有nat表转换。

接下来,为了实现ns1内部的网卡访问外部地址,就需要对POSTROUTING链进行操作,而且由于需要修改源地址为物理机(路由器、公网IP)的IP,所以是对SNAT进行操作,将ns1的网卡192.168.101.1的地址改为物理机的地址10.0.2.15,在物理机的终端中使用命令iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -j SNAT --to-source 10.0.2.15创建nat转换规则,如下图所示。

此时,进入ns1的空间下,对114.114.114.114进行ping操作,如下图所示,可以看出ns1已经可以访问外部地址了。

2、添加nat规则后对数据抓包分析ns1访问ns2或者ns3的过程

执行此步骤实验前,需要确认每个ns空间的路由表是否完整,建议全部设置好各自的默认路由,否则可能出现ping不同的情况。

为了更加深入的了解nat然后对IP进行转换,使用tcpdump对veth2-ns1和veth2-ns2的数据进行抓包分析。在进行此步骤的时,先在ns1空间下对ns2进行ping操作,然后在物理机终端中执行命令tcpdump -i veth2-ns1 -n抓取veth2-ns1网卡的数据,然后再使用命令tcpdump -i veth2-ns2 -n抓取veth2-ns2网卡的数据,如下图所示,可以清晰的看出192.168.101.1和10.0.2.15两个IP之间的转换过程。

  3、实现ns1访问www.baidu.com

此时,在ns1中ping www.baidu.com,如下图所示,显示域名解析暂时失败,但是ping 百度的IP地址,如ping 220.181.38.150,如下图所示,ping成功了。说明此时域名并不能解析,但是百度可以正常ping通,所以需要配置域名解析。

114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS。所以需要配置DNS解析,在ns1中使用命令cat /etc/resolv.conf查看一下域名解析目录下的内容,如下图所示,可以看出域名解析器只是本地回环地址,所以无法对域名进行解析。

接下来,使用命令echo nameserver 114.114.114.114 > /etc/resolv.conf配置域名解析,如下图所示,域名解析器是114.114.114.114。此时,在ns1中执行命令ping www.baidu.com 就可以ping通了,如下图所示。

实验总结:本次实验过程实现了各个实验的目标,讲解了关于nat表的一些实验步骤,并讲解了基础的语法知识。希望此次实验能给您带来帮助,如有不当,请留言指正,谢谢。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楊木木8023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值