本文共 1782 字,大约阅读时间需要 5 分钟。
根据数据报文的流向,若数据报文是由本机转发的则会经由以下几个链prerouting --> forward --> postrouting。
forward实现的是数据转发的功能,当数据报文经过本机时,网卡接收数据报文至缓冲区,内核读取报文ip首部,发现报文不是送到本机时(目的ip不是本机),由内核直接送到forward链做匹配,匹配之后若符合forward的规则,再经由postrouting送往下一跳或目的主机。~]# systemctl stop firewalld#关闭firewalld~]# systemctl disable firewalld #禁止firewalld服务开机启动~]# iptables -P FORWARD DROP#FORWARD默认规则置为DROP~]# setenforce 0#关闭selinux
~]# echo 1 > /proc/sys/net/ipv4/ip_forward
~]# 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请求)
完成后效果同上图(需事先清空防火墙)
~]# 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_ftpnf_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
转载于:https://blog.51cto.com/11975865/2093587