iptables实现网络防火墙功能,SNAT以及DNAT功能

iptables实现网络防火墙功能,SNAT以及DNAT功能

一、网络防火墙的实现

	1.环境准备:		虚拟机vmware workstation 11		系统CentOS 7.3                软件包安装:yum install httpd vsftpd tcpdump	2.前提条件		2.1各主机正确设置IP地址/子网掩码		  参考设置:			主机A 网卡ens33:10.0.0.110/24 内网客户端 			主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 网关服务器			主机C 网卡ens33:172.16.254.52/24 外网服务端 		2.2各主机正确设置网关地址		  参考设置:			主机A添加默认路由信息				route add default gw 10.0.0.111 			主机C添加路由信息				route add -net 10.0.0.0/24 gw 172.16.252.52	3.推荐实现步骤		开启路由转发功能		在filter表中的FORWARD链中实现	4.要注意的问题		1.请求和响应均会经过FORWARD链,要注意规则的方向性		2.如果要启用conntrack机制,建议双方向的状态为ESTABLISHED的报文直接放行通过		3.配置规则时可使用tcpdump抓包分析数据报文 

步骤:

1.主机A添加默认路由信息
route add default gw 10.0.0.111 
route -n
2.主机B开启核心转发功能
sysctl -w net.ipv4.ip_forward=1
3.tcpdump抓包测试数据
主机A:ping 172.16.254.52 
主机B抓包:tcpdump -i ens33 -nn icmp
测试结果:有10.0.0.110到172.16.254.52的请求报文信息,但没有回应报文信息
4.主机C使用tcpdump抓包测试数据
tcpdump -i ens33 -nn icmp
测试结果:有回应报文信息,但回应报文信息发往给其他主机,因此要设定网关信息
5.主机C添加路由信息
route add -net 10.0.0.0/24 gw 172.16.252.52
route -n
6.主机A ping请求测试
ping 172.16.254.52
测试结果:ping通
7.主机C启动httpd服务
systemctl start httpd.service
8.主机A访问主机C的web页面
curl http://172.16.254.52 #此时应该正常显式页面内容

在上面的基础上搭建网络防火墙

方式一:
9.拒绝所有转发服务
iptables -A FORWARD -j REJECT
10.添加链规则:允许本地主机A访问外网主机C的80端口的服务
iptables -I FORWARD -s 10.0.0.0/24 -p tcp --dport 80 -j ACCEPT
11.添加链规则:允许外网主机C的80端口http服务响应本机
iptables -I FORWARD 2 -d 10.0.0.0/24 -p tcp --sport 80 -j ACCEPT
12.主机A测试能否访问主机C的web页面
curl http://172.16.254.52#此时应该正常显式页面内容
方式二:
9.拒绝所有转发服务
iptables -A FORWARD -j REJECT
10.放行所有建立连接的数据报文
iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT
11.新建一条链规则允许本地主机A访问外网主机C
iptables -I FORWARD 2 -s 10.0.0.0/24 -m state --state NEW -j ACCEPT
12.主机A测试
curl http://172.16.254.52 #此时应该正常显式页面内容
13.添加链规则:允许外网主机C访问本地主机A的80端口的http服务
iptables -I FORWARD 3 -d 10.0.0.110 -p tcp --dport 80 -m state --state NEW -j ACCEPT 
14.主机C测试
curl http://10.0.0.110 #此时应该正常显式页面内容
15.添加链规则:允许本机主机A开放更多端口的服务
iptables -R FORWARD 3 -d 10.0.0.110 -p tcp -m multiport --dport 21:23,80 -m state --state NEW -j ACCEPT
16.加载FTP模块(两种方式)
1.modprobe nf_conntrack_ftp
2.vi /etc/sysconfig/iptables-config 
IPTABLES_MODULES="nf_conntrack_ftp"
17.建立FTP访问链规则,开放FTP被动模式
iptables -A FORWARD -d 10.0.0.110 -p tcp -m state --state RELATED -j ACCEPT
18.主机C测试
lftp 10.0.0.110
ssh [email protected]
curl http://10.0.0.110 #此时测试应该都能正常获取信息

二、SNAT转发功能实现

	前提条件		各主机正确设置IP地址/子网掩码		  参考设置:			主机A 网卡ens33:10.0.0.110/24 内网客户端			主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24 网关服务器			主机C 网卡ens33:172.16.254.52/24 外网服务器		各主机正确设置网关地址		  参考设置:			主机A添加默认路由信息				route add default gw 10.0.0.111 			主机C添加路由信息				route add -net 10.0.0.0/24 gw 172.16.252.52	推荐实现步骤		1. 开启网关主机的路由转发功能			主机B开启核心转发功能				sysctl -w net.ipv4.ip_forward=1		2. 添加使用SNAT策略的防火墙规则			规则示例				iptables -t nat -I POSTROUTING -j SNAT --to-source 172.16.252.52

		3.验证SNAT结果			主机A curl http://172.16.254.52			主机C tail -f /var/log/httpd/access_log #查看到的ip地址应该为主机B的公网地址									

三、DNAT转发功能的实现

         前提条件		各主机正确设置IP地址/子网掩码		  参考设置:			主机A 网卡ens33:10.0.0.110/24 内网服务器			主机B 网卡ens33:10.0.0.111/24 ens37:172.16.252.52/24,网关服务器			主机C 网卡ens33:172.16.254.52/24 外网客户端 		各主机正确设置网关地址		  参考设置:			主机A添加默认路由信息				route add default gw 10.0.0.111 			主机C添加路由信息				route add -net 10.0.0.0/24 gw 172.16.252.52	推荐实现步骤		1. 开启网关主机的路由转发功能			主机B开启核心转发功能				sysctl -w net.ipv4.ip_forward=1		2. 添加使用SNAT策略的防火墙规则			规则示例				 iptables -t nat -I PREROUTING  -d 172.16.252.52 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.110		3.验证DNAT结果(主机C访问主机B的公网地址显式的内应该为主机A的web内容)			主机C curl http://172.16.252.52			主机A tail -f /var/log/httpd/access_log #查看到的ip地址应该为外网主机C的地址 
时间: 2024-11-02 02:54:26

iptables实现网络防火墙功能,SNAT以及DNAT功能的相关文章

【linux】iptables防火墙SNAT和DNAT的简单演示

首先说明SNAT和DNAT都大致相当于网络中的NAT和PAT协议,本实验是通过用一台linxu虚拟机来模拟内网网关,并且利用linux上的iptables防火墙策略,达到地址转换和端口映射的目的. SNAT 实验结构: 真机----------------(v1)网关服务器s1(v2)--------------(v2)外网服务器s2 开2台虚拟机linux,分别模拟s1和s2. 其中,s1上另增加一块网卡,使用vmnet1与真机相连. 使用vmnet2与外网服务器的s2的vmnet2相连. I

网关服务器iptables的SNAT与DNAT地址转换

SNAT(Source Network Address Translation 源地址转换)是Linux防火墙的一种地址转换操作,也是iptables命令中的一种数据包控制类型,其作用是根据指定条件修改数据包的源IP地址.DNAT(Destination Network Address Translation 目标地址转换)是Linux防火墙的另一种地址转换操作,同样也是iptables命令中的一种数据包控制类型,其作用是可以根据指定条件修改数据包的目标IP地址和目标端口. 实验描述 需求分析:

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

NAT简介 NAT是将私有IP地址通过边界路由转换成外网IP地址,在边界路由的NAT地址转换表中记录下这个转换,当数据返回时,路由使用NAT技术查询NAT转换表,再将目标地址替换成内网用户IP地址. SNAT策略 局域网主机共享单个公网IP地址接入Internet(内网的地址改成公网) DNAT策略 目标地址转换 SNAT.DNAT工作原理 SNAT 局域网PC封装源.目ip(源地址:192.168.100.77,目的地址:172.16.16.101),到达网关路由器,SNAT将源地址转换成唯一

SNAT和DNAT

SNAT和DNAT简介 SNAT:局域网共享一个公网IP接入lnternel,好处如下 1.保护内网用户安全,因为公网地址总有一些人恶意扫描,而内网地址在公网没有路由所以无法被扫描,能被扫描的只有防火墙这一台,这样就减少了被攻击的可能. 2.Ipv4地址匮乏,很多公司只有一个ipv4地址,但是却有几百个用户需要上网,这个时候就需要使用SNAT. 3.省钱,公网地址付费,使用SNAT只需要一个公网ip就可以满足几百人同时上网. DNAT:向internel发布内网服务器 在内网中有服务器,如果想让

linux命令:iptables、网络防火墙服务

1.iptables的发展: iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具.但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的).当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables,可以将规则组成一个列表

深入浅出新一代云网络——VPC中的那些功能与基于OpenStack Neutron的实现(二)

在VPC功能实现第一篇中,简单介绍了一下VPC网络对租户间隔离能力的提升以及基于路由提供的一系列网络功能.在这一篇中,将继续介绍VPC网络中十分重要的一个内容:网络带宽的控制,共享以及分离. 首先是对第一篇中,端口转发功能的样例代码,all-in-one http service 风格的实现. 核心功能: find_router_ip = "ip netns exec qrouter-{router_id} ifconfig |grep -A1 qg- | grep inet | awk '{{

SNAT、DNAT、NPT

SNAT 源地址转换 ------------- 内网访问外网 问题:这里我们模拟内外网的访问,网关互指,中间网关打开ip_forward,但实际的网络访问环境中,外网客户会把网关指向你公司的网关吗? 张三 李四 王五 内网 iptables 网关 外网 (其实就是模拟一个路由器) 192.168.1.128 --------------> 192.168.1.1 vmnet1 网关指向 打开ip_forward 172.16.2.9 eth0 172.16.2.10 SIP:192.168.1

构建分离解析的域名服务器,以及实现SNAT和DNAT 转换

分离解析(Split DNS)的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录.来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果. 实验准备: l  一台linux作为网关服务器 l  一台linux事先搭建好Apache服务作为局域网Web服务器, l  一台Win7作为外网主机 l  关闭三台主机的防火墙和selinux service iptables stop setenforce 0 实验要求: 如图所示 1.在网关服务器搭建DNS分离

iptables作为网络防火墙的应用

iptables网络防火墙 iptables做为网络防火墙是需要将其充当网关使用,需要使用到filer表的FORWARD链iptables作为网络防火墙时需要注意的问题1.请求-响应报文均会经由FORWARD链,需要注意规则的方向性2.如果要启用conntrack机制,建议将两个方向的状态都为ESTABLISHED的报文直接放行 实验环境 准备3台主机,node1为外网主机,node2为网络防火墙,node3为内网主机 主机 外网IP 内网IP node1 172.22.27.10 - node