1、SNAT:源地址转换

实现内网访问外网,修改IP地址,使用POSTROUTING

命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.10/24  -j SNAT  --to-source  202.1.1.1

2、MASQUERADE:地址伪装

适用于外网ip地址非固定的情况

将SNAT规则改为MASQUERADE即可

命令:iptables  -t  nat  -A POSTROUTING  -s  192.168.1.0/24  -j MASQUERADE

3、DNAT:目标地址转换

实现发布公司内部服务器,修改目标地址,使用PREROUTING

命令:iptables  -t nat  -A  PREROUTING -d  202.1.1.1  -p tcp  --dport  8080 -j  DNAT  -to 192.168.1.100:80

4、备份和还原规则:

备份:

1)iptables-save  >  文件

导出到指定文件

2)service  iptables save

导出到/etc/sysconfig/iptables

重启自动加载

还原:

1)iptables-restore  <  文件名

2)service  iptables restart

从默认文件/etc/sysconfig/iptables还原

5、iptables脚本编写

1)定义变量

2)加载必要的模块

modprobe   ip_nat_ftp     ftp地址转换模块

modprobe   ip_conntrack_ftp     ftp连接状态跟踪

lsmod        查看已加载的模块

3)调整内核参数:

启用内核转发功能:有三种方式(详见第十章笔记的第8点)

4)编写防火墙的规则

6、防火墙的类型:

主机型防火墙:针对本机进行保护,使用filter表中的INPUT、OUTPUT链

网络型防火墙:对内、外网转发进行保护,使用filter表中FORWARD链

Iptables防火墙(SNAT和DNAT)应用示例

实验拓扑图:

实验要求:

1、  如图所示,将网络连通,注意在外部服务器上不用配置默认网关。

2、分别在内部和外部服务器上搭建web服务,修改网页,如

内部web服务器的网页内容:

echo   “192.168.1.10”  >  /var/www/html/index.html

在本机访问网页,测试能否成功访问。

步骤:

在网站服务器启动httpd服务

Service  httpd  start

在访问主页写入内容

echo  192.168.1.10  >  /var/www/html/index.html

在本机测试如下图:

外网主机同上,测试结果如下图:

3、分别启动网站服务器和网关服务器的SSh,并把网关ssh服务端口改为2345。

步骤:

启动sshd服务:  service sshd  restart

进入网关服务器的ssh主配置文件vim /etc/ssh/sshd_confing

4、清空三台服务器的防火墙默认配置:service  iptables    stop

5、  SNAT(源地址转换):要求内部主机192.168.1.10能访问外部服务器的网站。

验证:在外部服务器通过查看web的访问日志。

步骤:

SNAT源地址转换命令如下:

到网站服务器访问外网

查看外网的Web访问日志,是否是200.0.0.1访问

6、 DNAT(目标地址转换):

1)外部主机通过http://200.0.0.1能够访问到内部服务器的网站。

在网关服务器上配置DANT

验证可以访问

2)外部主机使用ssh  –p 2345  200.0.0.1 能够远程管理网关服务器。

3)外部主机使用ssh  -p 2222  200.0.0.1 能够远程管理内部192.168.1.10服务器。

在网关服务器配置DNAT

到外网验证可以登录远程登录

7、在网关服务器上对防火墙进行保存和备份。

保存防火墙规则:

备份防火墙规则:iptables -save

8、在网关服务器上写一个防火墙的脚本。实现上面的功能。

脚本提示:路由转发,清空所有防火墙规则,SNAT,DNAT。

设置防火墙开机自动关闭,设置脚本开启自动执行。

脚本如下:

设置脚本开机自启动只需将脚本路径写入/etc/rc.local

文章参考微信公众号:L宝宝聊IT

Iptables防火墙(SNAT和DNAT)的更多相关文章

  1. 10.Linux防火墙iptables之SNAT与DNAT

    Linux防火墙iptables之SNAT与DNAT 目录 Linux防火墙iptables之SNAT与DNAT SNAT策略及应用 SNAT策略概述 SNAT策略典型应用环境 SNAT策略原理 SN ...

  2. Iptables 下 SNAT、DNAT和MASQUERADE三者之间的区别

    Iptables 中可以灵活的做各种网络地址转换(NAT,Network Address Translation) 网络地址转换(NAT)主要有两种:SNAT 和 DNAT,但是也有一种特例 MASQ ...

  3. iptables snat和dnat

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  4. iptables snat 和dnat说明

    iptables中的snat和dnat是非常有用的,感觉他们二个比较特别,所以单独拿出来说一下. dnat是用来做目的网络地址转换的,就是重写包的目的IP地址.如果一个包被匹配了,那么和它属于同一个流 ...

  5. iptables SNAT 和DNAT的转化配置实验

    原文链接:http://www.jb51.net/LINUXjishu/402441.html DNAT(Destination Network Address Translation,目的地址转换) ...

  6. Iptables实现公网IP DNAT/SNAT

    Iptables实现NAT是最基本的功能,大部分家用路由都是基于其SNAT方式上网,使用Iptables实现外网DNAT也很简单,不过经常会出现不能正常NAT的现象.以下命令将客户端访问1.1.1.1 ...

  7. [转]IPTABLES中SNAT和MASQUERADE的区别

    IPtables中可以灵活的做各种网络地址转换(NAT)网络地址转换主要有两种:SNAT和DNAT SNAT是source network address translation的缩写即源地址目标转换 ...

  8. iptables防火墙原理详解

    1. netfilter与iptables Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤.数 ...

  9. linux 的iptables防火墙

    .a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A  ???.a看到的 symbolic符合名称都是 相应的,  包含的  .o文件.... linux 2.4内核中 ...

随机推荐

  1. table滑块

    我们做table时,常常想做一个滑块的移动效果,来让app显得更加生动,原理很简单,废话不说,直接上code public class AnimationActivity extends AppCom ...

  2. 如何在IDEA里给大数据项目导入该项目的相关源码(博主推荐)(类似eclipse里同一个workspace下单个子项目存在)(图文详解)

    不多说,直接上干货! 如果在一个界面里,可以是单个项目 注意:本文是以gradle项目的方式来做的! 如何在IDEA里正确导入从Github上下载的Gradle项目(含相关源码)(博主推荐)(图文详解 ...

  3. [java初探外篇]__关于StringBuilder类与String类的区别

    前言 我们前面学习到String类的相关知识,知道了它是一个字符串类,并且了解到其中的一些方法,但是当时并没有太过注意到String类的特点,今天就StringBuilder类的学习来比较一下两者的区 ...

  4. Linux 学习手记(1):命令行BASH的基本操作

    1. Shell 是什么 Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令.操作传递给操作系统底层. Shell一般分为:图形化Shell(GUI).命令行Shel ...

  5. Spring Boot + Spring Cloud 构建微服务系统(四):容错机制和熔断(Hystrix)

    雪崩效应 在微服务架构中,由于服务众多,通常会涉及多个服务层级的调用,而一旦基础服务发生故障,很可能会导致级联故障,进而造成整个系统不可用,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者 ...

  6. tf.estimator.Estimator类的用法

    官网链接:https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator Estimator - 一种可极大地简化机器学习编程的高阶 ...

  7. 信号为E时,如何让语音识别脱“网”而出?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯教育云发表于云+社区专栏 一般没有网络时,语音识别是这样的 ▽ 而同等环境下,嵌入式语音识别,是这样的 ▽ 不仅可以帮您边说边识. ...

  8. JAVA开发者的Golang快速指南

    Golang作为Docker.Kubernetes和OpenShift等一些酷辣新技术的首选编程语言,越来越受欢迎.尤其它们都是开源的,很多情况下,开源是非常有价值的.深入学习阅Golang等源代码库 ...

  9. (转)Sphinx中文分词安装配置及API调用

    这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂 ...

  10. java基础之继承(一)

    虽然说java中的面向对象的概念不多,但是具体的细节还是值得大家学习研究,java中的继承实际上就是子类拥有父类所有的内容(除私有信息外),并对其进行扩展.下面是我的笔记,主要包含以下一些内容点: 构 ...