本次实验接着上一篇博客《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表的一些实验步骤,并讲解了基础的语法知识。希望此次实验能给您带来帮助,如有不当,请留言指正,谢谢。

iptables之nat表的学习和实验相关推荐

  1. iptables的nat表中 -j redirect 与-dnat --to-destnation的区别

    redirect是针对本机的,本机产生的包转到localhost的某个端口,适合用redirect,会比DNAT效率高点. 而外部地址只能用DNAT了.

  2. 10.15 iptables filter表小案例10.16/10.17/10.18 iptables nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> 10.15 iptables filter表小案例 iptables 命令.语法总结 iptables-nvL //查看ipt ...

  3. iptables nat表含义_十(4)iptables语法、iptables filter表小案例、iptables nat表应用

    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚 ...

  4. iptables小案例,nat表应用

    2019独角兽企业重金招聘Python工程师标准>>> iptables小案例: 需求1: 只针对filter表,预设INPUT链DROP,其他两个链ACCEPT,然后针对192.1 ...

  5. iptables filter表案例/iptables nat表应用

    iptables filter表案例 iptables filter 表案例 创建一个iptables.sh脚本 [root@Ask-02 ~]# vim /usr/local/sbin/iptabl ...

  6. 31次课(iptables filter表案例、iptables nat表应用)

    10.15 iptables filter表案例 iptables小案例,需求需要把80端口22端口还有21端口放行.但是22端口我需要指定一个ip段,只有这个ip段的ip访问的时候才可以访问,其他段 ...

  7. [网络安全学习篇19]:NAT、动态路由及实验(千峰网络安全视频笔记 19 day)

    引言:我的系列博客[网络安全学习篇]上线了,小编也是初次创作博客,经验不足:对千峰网络信息安全开源的视频公开课程的学习整理的笔记整理的也比较粗糙,其实看到目录有300多集的时候,讲道理,有点怂了,所以 ...

  8. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

    自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...

  9. Lesson 12.1 深度学习建模实验中数据集生成函数的创建与使用

    Lesson 12.1 深度学习建模实验中数据集生成函数的创建与使用   为了方便后续练习的展开,我们尝试自己创建一个数据生成器,用于自主生成一些符合某些条件.具备某些特性的数据集.相比于传统的机器学 ...

最新文章

  1. IF、如果、Rudyard Kipling
  2. Centos7.5.1804永久生效修改主机名
  3. ◎◎identity ,ident_current() ,scope_identity的区别
  4. 翻版“永恒之蓝”入侵手机 信息安全再临大考
  5. python如何查看有什么模块_在python中如何查看模块功能
  6. 2019支付宝集五福高阶玩法 助你快速集齐五福
  7. 周莫凡python_机器学习 | 莫烦Python
  8. android中如何如何让dailog横屏显示
  9. CSP 202112-3 登机牌条码
  10. mysql数据库木马查杀_服务器木马后门怎么查杀
  11. 计算机专业ib选课,IB 课程里,总算发现一个貌似容易的学科了!
  12. Java使用Lambda表达式多字段求和
  13. 原生64位卸载工具Revo Uninstaller Pro V2.5.7
  14. bootstrapr表格父子框_JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】...
  15. 1+X 云计算平台运维与开发(初级)
  16. 无线调试——免除数据线的干扰
  17. 被iPhone 11带火的UWB产业链有哪些?
  18. ansible主机清单配置详解
  19. OpenStack 给nova组件 vnc 配置https(SSL)自验证签名证书
  20. 工作,是人生的另一道窄门

热门文章

  1. 用ps将图片背景设置为透明
  2. Prometheus 实战于源码分析之discovery
  3. 换脸方法之FaceShifter
  4. 初学C语言常见的错误
  5. 51单片机与HC-05蓝牙模块连接使用
  6. 外键和内键.个人理解
  7. 笔记本花屏维修,经验让我大走弯路
  8. RESTful API常用的HTTP请求方法
  9. #瑞波#W底部启动,币须反弹一波!
  10. 如何才能打造优秀高效的项目团队?