1. forward链的作用
2. 实现
1. forward链的作用
根据数据报文的流向,若数据报文是由本机转发的则会经由以下几个链prerouting --> forward --> postrouting。
forward实现的是数据转发的功能,当数据报文经过本机时,网卡接收数据报文至缓冲区,内核读取报文ip首部,发现报文不是送到本机时(目的ip不是本机),由内核直接送到forward链做匹配,匹配之后若符合forward的规则,再经由postrouting送往下一跳或目的主机。
2. 实现
2.1 试验环境:
试验环境如上图
防火墙网卡1与客户端在一个物理网络,ftp服务器与http服务器与防火墙网卡2在同一物理网络。
四台主机防火墙规则都清空,默认规则都为ACCEPT,仅充当防火墙的主机FORWARD链默认规则为DROP。且SELinux与firewalld服务关闭。
~]# systemctl stop firewalld
#关闭firewalld
~]# systemctl disable firewalld
#禁止firewalld服务开机启动
~]# iptables -P FORWARD DROP
#FORWARD默认规则置为DROP
~]# setenforce 0
#关闭selinux
2.2 试验步骤
- 防火墙开启核心转发
  ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
- 实现1.1.1.0网络与192.168.1.0网络的通信
客户端添加路由规则:~]# route add -net 192.168.1.0/24 gw 1.1.1.1
http服务器与ftp服务器分别添加规则
~]# route add -net 1.1.1.0/24 gw 192.168.104
- 开放1.1.1.0网络对192.168.1.0网络的回显请求
~]# iptables -A FORWARD -s 1.1.1.0/24 -d 0/0 -p icmp --icmp-type 8 -j ACCEPT #放行1.1.1.0网络的主机对任意主机的回显请求(ping请求) ~]# iptables -A FORWARD -s 0/0 -d 1.1.1.0/24 -p icmp --icmp-type 0 -j ACCEPT #开启任意主机至1.1.1.0网络主机的ping回显响应(ping响应)
完成操作后如下图:
若基于状态追踪机制实现以上功能则方法如下:~]# iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT #对状态是ESTABLISHED状态的相关请求放行 ~]# iptables -A FORWARD -s 1.1.1.0/24 -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT #放行来自1.1.1.0网络,状态是NEW的icmp回显请求(ping请求)
完成后效果同上图(需事先清空防火墙)
- 基于状态追踪机制实现1.1.1.0网络对192.168.1.0网络80、21端口的请求(需服务器支持状态追踪机制)
~]# iptables -R FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT #把第3步forward链第一条规则修改为放行已经连接状态地址的连接和相关联的连接 ~]# modprobe nf_conntrack_ftp #ftp服务器加载nf_conntrack_ftp模块 ~]# lsmod | grep ^nf_conntrack_ftp #查看已加载模块中是否有nf_conntrack_ftp nf_conntrack_ftp 12049 0 ~]# iptables -A FORWARD -s 1.1.1.0/24 -d 0/0 -p tcp -m multiport --dport 21,80 -m state --state NEW -j ACCEPT
原文地址:http://blog.51cto.com/11975865/2093587
时间: 2024-11-03 09:04:07