iptables/netfilter网络防火墙实现及实战分析 推荐
2014-03-29 19:07
477 查看
前提知识任何主机若要与非同网络中的主机通信,则必须将报文发送到默认网关;
对Linux而言,IP地址是属于主机(内核中)的,不属于网卡,只要属于当前主机的IP地址间,都可直接响应,不称为转发
私有地址在路由器上是不允许被路由的
防火墙的类型与作用的链主机防火墙:一般使用INPUT,OUTPUT链来过滤进入和发出的报文
网络防火墙:一般使用PREROUTING,FORWARD,POSTROUTING链来转发经过的报文
不同网络间主机通信的方式路由:对于Linux主机,设定/proc/sys/net/ipv4/ip_forward的值为1,即开启了路由功能,可以作为模拟路由器使用
注:但真实的路由器还应该存在生成路由表的机制,一般是基于路由协议(如RIP2,OSPF)动态学习的,在此不作讨论NAT:工作于网络层和传输层,也可分为静态NAT和动态NATBasic NAT:静态NAT;NAT服务器上有一个外网地址池,内网连接时直接分配一个外网IP使用,很不灵活
NAPT:动态NAT,Network Address Port Translation,即网络端口地址转换,也可分为SNAT和DNATSNAT:源地址转换;适用于内网主机访问互联网,原理图如下:
DNAT:目标地址转换;适用于让互联网主机访问本地内网中的某主机上的服务,原理图如下:
iptables/netfilter基于SNAT和DNAT原理实现报文转发-j SNAT --to-source SIP规则添加:在POSTROUTING链上
-j MASQUERADE用于外网IP是ADSL拨号上网时生成的动态IP,MASQUERADE模式能自行查找能访问互联网的外网IP,并完成SNAT
-j DNAT --to-destination DIP[:Port]支持端口映射
规则添加:在PREROUTING链上
实例:
iptables/netfilter实战解析需求分析
架构设计
配置部署DNS Server配置网络配置
HTTP访问测试
大功告成,哦也!
上一篇:iptables规则基本用法
对Linux而言,IP地址是属于主机(内核中)的,不属于网卡,只要属于当前主机的IP地址间,都可直接响应,不称为转发
私有地址在路由器上是不允许被路由的
防火墙的类型与作用的链主机防火墙:一般使用INPUT,OUTPUT链来过滤进入和发出的报文
网络防火墙:一般使用PREROUTING,FORWARD,POSTROUTING链来转发经过的报文
不同网络间主机通信的方式路由:对于Linux主机,设定/proc/sys/net/ipv4/ip_forward的值为1,即开启了路由功能,可以作为模拟路由器使用
注:但真实的路由器还应该存在生成路由表的机制,一般是基于路由协议(如RIP2,OSPF)动态学习的,在此不作讨论NAT:工作于网络层和传输层,也可分为静态NAT和动态NATBasic NAT:静态NAT;NAT服务器上有一个外网地址池,内网连接时直接分配一个外网IP使用,很不灵活
NAPT:动态NAT,Network Address Port Translation,即网络端口地址转换,也可分为SNAT和DNATSNAT:源地址转换;适用于内网主机访问互联网,原理图如下:
DNAT:目标地址转换;适用于让互联网主机访问本地内网中的某主机上的服务,原理图如下:
iptables/netfilter基于SNAT和DNAT原理实现报文转发-j SNAT --to-source SIP规则添加:在POSTROUTING链上
-j MASQUERADE用于外网IP是ADSL拨号上网时生成的动态IP,MASQUERADE模式能自行查找能访问互联网的外网IP,并完成SNAT
-j DNAT --to-destination DIP[:Port]支持端口映射
规则添加:在PREROUTING链上
实例:
# 将外网对172.16.100.7:22022的访问转发至内网的192.168.20.12.22 iptables -t nat -A PREROUTING -d 172.16.100.7 -p tcp --dport 22022 -j DNAT --to-destination 192.168.20.12.22
iptables/netfilter实战解析需求分析
架构设计
配置部署DNS Server配置网络配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR=172.16.251.178 NETMASK=255.255.0.0 GATEWAY=172.16.251.236DNS主配置文件:/etc/named.conf
# named.conf中需修改的部分 listen-on port 53 { 127.0.0.1; 172.16.251.178;}; allow-query { any; }; recursion no; #zone "." IN { # type hint; # file "named.ca"; #};DNS辅助配置文件:/etc/named.rfc1912.zones
acl inter_net { 172.16.251.0/24; }; view inter_net { match-clients { inter_net; }; zone "." IN { type hint; file "named.ca"; }; zone "jason.com" IN { type master; file "jason.com.inter_net"; }; }; view outer_net { match-clients { any; }; zone "jason.com" IN { type master; file "jason.com.outer_net"; }; };区域数据文件:
# vi /var/named/jason.com.inter_net $TTL 1D jason.com. IN SOA dns.jason.com. admin.jason.com ( 2014032920 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS dns dns A 172.16.251.178 www A 172.16.251.182 # vi /var/named/jason.com.outer_net $TTL 1D jason.com. IN SOA dns.jason.com. admin.jason.com ( 2014032920 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS dns dns A 172.16.251.178 www A 3.3.3.1启动named服务
chown root.named jason.com.inter_net chown root.named jason.com.outer_net service named restartWeb Server配置
配置一个虚拟主机,监听端口8080 在DocumentRoot目录下创建一简单的测试文件test.html,内容随意,如 “Hello Mageedu” 启动httpd服务即可Firewall配置网络配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR=172.16.251.236 NETMASK=255.255.0.0 GATEWAY=172.16.0.1 # vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" BOOTPROTO="static" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR=3.3.3.1 NETMASK=255.255.255.0 DNS1=3.3.3.1注:因为3.3.3.1和3.3.3.3都是模拟的外网IP地址,故对应的网卡应处于同一信道内,且不能和内网的通信信道一致,故在用虚拟机测试时,可将对应内网IP的网卡的网络方式改为桥接,而对应外网IP的网卡的网络方式改为自定义,如vmnet2添加iptables规则
iptables -t nat -A PREROUTING -d 3.3.3.1/32 -p udp --dport 53 -j DNAT --to-destination 172.16.251.178 iptables -t nat -A PREROUTING -d 3.3.3.1/32 -p tcp --dport 8080 -j DNAT --to-destination 172.16.251.182Inter Client配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR=172.16.251.176 NETMASK=255.255.255.0 GATEWAY=172.16.251.236 DNS1=172.16.251.178 # vi /etc/resolv.conf nameserver 172.16.251.178Outer Client配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" IPADDR=3.3.3.3 NETMASK=255.255.255.0 GATEWAY=3.3.3.1 DNS1=3.3.3.1 # vi /etc/resolv.conf nameserver 3.3.3.1DNS解析测试
HTTP访问测试
大功告成,哦也!
上一篇:iptables规则基本用法
相关文章推荐
- 推荐系统中协同过滤算法实现分析
- 实战智能推荐系统(6)-- 用户行为分析
- 实战智能推荐系统(6)-- 用户行为分析
- spark高级数据分析实战---随机森林实现
- iptables实战系列:通过NAT转发实现私网对外发布信息 推荐
- (3)Storm实时日志分析实战--编码实现
- Android BitmapShader 实战 实现圆形、圆角图片——代码分析
- Nginx实战进阶篇一 Nginx反向代理及负载均衡实现过程部署 推荐
- 推荐系统中协同过滤算法实现分析
- 实战智能推荐系统(6)-- 用户行为分析
- 实战智能推荐系统(6)-- 用户行为分析
- 《Spark商业案例与性能调优实战100课》第1课:商业案例之通过RDD实现分析大数据电影点评系统中电影的用户行为信息
- 实战Walker之侧滑菜单的实现分析
- 实战Walker之闪屏界面的实现分析
- shell实战:多种方式实现获取列内容 推荐
- 利用mmSeg4j分词实现网页文本倾向性分析 推荐
- Netfilter实现机制分析
- Netfilter之连接跟踪实现机制初步分析