iptables是Linux系统中的一个强大工具,用来设置、管理和查看防火墙规则。它可以帮助你控制网络流量,决定哪些数据包可以通过,哪些要被丢弃,哪些要转发到其他地方。
1. 基本概念
表(Table):iptables使用不同的表来处理不同类型的网络包。常见的表有: filter表:默认的表,用来控制数据包的过滤(允许或拒绝)。 nat表:用于网络地址转换(NAT),通常用于端口转发或地址映射。 mangle表:用于修改数据包的内容(如TTL值)。 raw表:用于数据包处理的特定设置,比如决定是否要对数据包进行连接跟踪。 链(Chain):每个表包含几个预定义的链,链是一组有序的规则。常见的链有: INPUT链:处理进入主机的数据包。 OUTPUT链:处理从主机发出的数据包。 FORWARD链:处理经过主机转发的数据包(如路由器功能)。 PREROUTING链:在数据包到达路由前修改数据包(用于NAT)。 POSTROUTING链:在数据包离开路由后修改数据包(用于NAT)。 规则(Rule):每个链中包含多个规则,每条规则定义了当数据包匹配某些条件时应该执行的操作。
iptables -L:列出当前所有链中的规则。 iptables -t nat -L:列出nat表中的规则。 添加规则:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT:允许22端口(SSH)流量通过。 删除规则:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT:删除允许22端口流量的规则。 清空规则:
iptables -F:清空所有链中的规则。 3. 规则的匹配 规则通常基于各种数据包头字段,比如源IP、目标IP、协议类型、端口号等,来决定如何处理数据包。
举个例子,如何阻止一个IP地址访问你的服务器:
iptables -A INPUT -s 192.168.1.100 -j DROP这条命令将会阻止来自192.168.1.100的所有流量。
保存规则:在某些Linux发行版中,你可以使用service iptables save或iptables-save > /etc/iptables/rules.v4来保存当前的规则到文件。
恢复规则:
使用iptables-restore < /etc/iptables/rules.v4可以从文件中恢复规则。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT:允许已经建立连接或相关的流量通过。
端口转发:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80:将所有到8080端口的流量转发到内网的192.168.1.10的80端口。
打开虚拟机进入centos系统
在终端输入iptables –L –n -v”查看防火墙所有配置

在终端输入“iptables –F”可以清理防火墙所有配置

常用的配置防火墙策略,配置如下
Iptables –A INPUT –s 127.0.0.1 –j ACCEPT 允许本地地址可以被访问
Iptables –A OUTPUT –j ACCEPT` 允许本地访问外网
Iptables –A INPUT –p tcp --dport 80 –j ACCEPT 允许80端口被访问
Iptables –A INPUT –j REJECT 未经允许的服务及地址被拒绝访问配置防火墙禁止地址策略,配置如下
Iptables –l INPUT –S 192.168.248.1 –j DROP 禁止192.168.248.1的访问
Iptables –l INPUT –S 192.168.1.0/24 –j DROP 禁止192.168.1.0-192.168.1.254的访问
在终端输入“iptables –D INPUT 4”,可以删除防火墙策略中第四条规则

根据实际需求设置完成iptables策略之后在终端输入“/etc/re.d/init.d/iptables save”对防护墙配置进行保存。输入“service iptables restart”对防火墙进行重启,使其规则生效。
