详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

标签: | 发表时间:2018-12-14 13:35 | 作者:
出处:http://blog.51cto.com

NAT简介

NAT是将私有IP地址通过边界路由转换成外网IP地址,在边界路由的NAT地址转换表中记录下这个转换,当数据返回时,路由使用NAT技术查询NAT转换表,再将目标地址替换成内网用户IP地址。

SNAT策略

局域网主机共享单个公网IP地址接入Internet(内网的地址改成公网)

DNAT策略

目标地址转换

SNAT、DNAT工作原理

详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

SNAT

局域网PC封装源、目ip(源地址:192.168.100.77,目的地址:172.16.16.101),到达网关路由器,SNAT将源地址转换成唯一的一个公网ip,此时源地址变成了公网ip172.16.16.254(eth0),再把数据包重新封装。当外网服务器收到,进行数据回复的时候。源目对调,源地址是web服务器地址,目标地址是网关地址,找到网关路由之后,在网关路由中会有一个状态记录(局域网内或许不止一台主机访问外网),转发回去。

DNAT

外网客户机发送http请求,请求的是公网IP地址(eth0),数据到达网关服务器时,查看访问是80端口,将目的地址172.16.16.254(公网IP只有一个)改为192.168.100.77。内网服务器收到以后返回数据,使用的是SNAT(通过SNAT原理来解释)

实验环境

  • 系统环境:CentOS6.5
  • 内网IP:192.168.100.77/24
  • 公网IP:172.16.16.101/24
  • 网关防火墙:
    公网网网卡:eth0:172.16.16.254
    内网网卡:eth1:192.168.100.254

搭建步骤:

一、准备工作

1、清空防火墙规则、关闭Selinux

[root@Init5 ~]# vim /etc/sysconfig/selinux 
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

[root@Init5 ~]# reboot #重启

[root@Init5 ~]# /etc/init.d/iptables stop #清空防火墙规则

2、查看网卡信息

[root@Init5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #查看网关防火墙公网网卡信息
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

[root@Init5 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 #查看网关防火墙内网网卡信息
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #查看公网网卡信息
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用
[root@redhat6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #查看内网网卡信息
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

3、开启网关防火墙路由功能

[root@Init5 ~]# vim /etc/sysctl.conf #配置一些系统信息以及内核参数
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

[root@Init5 ~]# sysctl -p #重新加载配置文件

4、测试互联互通

[root@client ~]# ping -c 3 172.16.16.254 #公网服务器ping公网网关
[root@client ~]# ping -c 3 192.168.100.254 #公网服务器ping内网网关
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

二、构建SNAT地址转换

1、网关防火墙设置SNAT规则

[root@Init5 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 172.16.16.254 #将内网192.168.100.0/24网段的IP转换成公网网关IP172.16.16.254

-t:指定规则表是nat(修改源目IP或端口)
-A:追加规则链是POSTROUTING(路由后)
-s:指定源地址
-o:指定出站网卡
-j:指定控制类型
--to-source:指定转换的源地址

[root@Init5 ~]# iptables -L -t nat -v #查看防火墙规则
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

2、设置公网服务器

[root@client ~]# yum -y install httpd #安装web服务
[root@client ~]# vim /etc/httpd/conf/httpd.conf #修改配置文件
ServerName www.bt.com:80 #开启完整主机名
Listen 172.16.16.101:80 #开启监听地址

[root@client ~]# /etc/init.d/httpd start #启动web服务器

[root@client ~]# tail -f /var/log/httpd/access_log #监视access_log日志文件的尾部内容

3、内网客户机访问公网Web服务器

[root@redhat6 ~]# yum -y install elinks #安装基于文本的浏览器工具
[root@redhat6 ~]# elinks 172.16.16.101 #访问外网Web服务器

详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

4、查看公网访问日志信息

详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

三、构建DNAT地址转换

1、网关防火墙设置SNAT规则

[root@Init5 ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.16.16.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.77 #将公网客户机IP 172.16.16.254/24转换成192.168.100.77/24内网IP

[root@Init5 ~]# iptables -L -t nat -v #查看防火墙规则
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

2、设置内网服务器

[root@redhat6 ~]# yum -y install httpd #安装web服务
[root@redhat6 ~]# vim /etc/httpd/conf/httpd.conf #修改配置文件

#修改以下参数
ServerName www.test.com:80 #开启完整主机名
Listen 192.168.100.77:80 #开启监听地址

[root@redhat6 ~]# /etc/init.d/httpd start #启动web服务器

[root@redhat6 ~]# tail -f /var/log/httpd/access_log #监视access_log日志文件的尾部内容

3、公网客户机访问内网Web服务器

[root@client ~]# elinks 172.16.16.254 #注意访问的是公网网关IP,通公网网关才可以将地址进行转换,之前规则也已经写清楚了
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

4、查看内网访问日志信息

详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

四、公网客户机通过访问内网ssh服务实现修改端口

1、网关防火墙设置端口规则

[root@Init5 ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.16.16.254 -p tcp --dport 999 -j DNAT --to-destination 192.168.100.77:22 #注意这里将ssh服务端口改为999

[root@Init5 ~]# iptables -L -t nat -v #查看防火墙规则
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

2、公网客户端访问内网ssh服务实现远程连接

[root@client ~]# ssh [email protected] -p 999
详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

相关 [iptables 防火墙 snat] 推荐:

详解iptables防火墙SNAT、DNAT地址转换工作原理及使用

- -
NAT是将私有IP地址通过边界路由转换成外网IP地址,在边界路由的NAT地址转换表中记录下这个转换,当数据返回时,路由使用NAT技术查询NAT转换表,再将目标地址替换成内网用户IP地址. 局域网主机共享单个公网IP地址接入Internet(内网的地址改成公网). 局域网PC封装源、目ip(源地址:192.168.100.77,目的地址:172.16.16.101),到达网关路由器,SNAT将源地址转换成唯一的一个公网ip,此时源地址变成了公网ip172.16.16.254(eth0),再把数据包重新封装.

[转]iptables防火墙与NAT服务

- - 小鸥的博客
iptables防火墙与NAT服务. (1)设置在不同的网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性. (2)通过审查经过每一个数据包,判断它是否有相匹配的过滤规则,根据规则先后顺序一一进行比较,直到满足其中的一条规则为止,然后依据控制机制做出相应的动作,若都不能满足,则将数据包丢弃,从而保护网络安全.

iptables NAT 学习

- - BlogJava-首页技术区
为了搞清楚iptables NAT的过程,做了这个实验. 使用了1台双网卡服务器和1台单网卡服务器,2个网段. 1.       为了看到调度服务器上的数据转发过程,首先在调度服务器上分出内核的debug日志:. l 在/etc/rsyslog.conf最后增加:kern.debug /var/log/iptables.log.

iptables 小结

- - CSDN博客系统运维推荐文章
        最近工作上一个作业用到了iptables命令,主要进行端口映射,在网上查了好多资料,尽管有很多例子,但还是整了好几天才整明白. (有一些是从网络中总结的,不断完善中...). (1) iptables简介.            iptables是一个Linux下优秀的nat+防火墙工具,iptables操作的是2.4以上内核的netfilter,所以需要linux的内核在2.4以上.

iptables 详解

- - 行业应用 - ITeye博客
以下文章转载于:http://blog.chinaunix.net/uid-26495963-id-3279216.html. 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种. 无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘. 而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测.

iptables原理说明

- - CSDN博客互联网推荐文章
1.iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具. 2. 作者一共在内核空间中选择了5个位置,.     1).内核空间中:从一个网络接口进来,到另一个网络接口去的.     2).数据包从内核流入用户空间的.

iptables 学习总结

- - 小火箭
参考文章: 朱双印 iptables. 主机防火墙:对单个主机进行防护. 网络防火墙:通常处于网络的入口/出口,服务于其背后的局域网. 硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高. 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低.

linux下IPTABLES配置详解

- - Linux - 操作系统 - ITeye博客
作者博客:http://www.cnblogs.com/JemBai/. 原文地址:http://www.cnblogs.com/JemBai/archive/2009/03/19/1416364.html. 如果你的IPTABLES基础知识还不了解,建议先去看看. 我们来配置一个filter表的防火墙.

firewalld防火墙基础

- - 掘金 后端
firewalld防火墙是centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙. firewalld和iptables的区别. 基于区域内分防火墙规则来过滤数据包. 基于网络接口的规则来过滤数据包. 不会修改当前服务配置,不会现有连接. 修改完配置会立即生效,有可能会中断当前连接.

利用iptables 封与解封IP

- - 傻子-王跸西的blog-WangBiXi.com
I表示Insert(添加),-D表示Delete(删除).