1、iptables基础
1.1、标题iptables基础
iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就
是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样
的条件,就这样处理这个数据包"。规则存储在内核空间的信息包过滤表
中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、
UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规
则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行
(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作
就是添加、修改和删除这些规则
iptables 内核流程图
1.2、数据经过防火墙的流程
1.3、iptables 链
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
1.4、iptables 表
raw 表中的规则可以被哪些链使用:PREROUTING,OUTPUT
mangle 表中的规则可以被哪些链使用:PREROUTING,INPUT, FORWARD,OUTPUT,POSTROUTING
nat 表中的规则可以被哪些链使用:PREROUTING,OUTPUT,POSTROUTING(centos7中还有INPUT,centos6中没有)
filter 表中的规则可以被哪些链使用:INPUT,FORWARD,OUTPUT
1.5、iptables 链策略
处理动作在iptables中被称为target(这样说并不准确,我们暂且这样称呼),动作也可以分为基本动作和扩展动作。
此处列出一些常用的动作,之后的文章会对它们进行详细的示例与总结:
ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
2、iptables常用命令
2.1、iptables常用命令
1、查看某表中的规则:
iptables --line-number -t 表名 -nL
2、添加新的入站规则:
iptables -A INPUT -s ip地址 -p 协议 --dport 端口 -j 处理方式
3、替换规则:
iptables -R INPUT 编号 -s ip地址 -p 协议 --dport 端口 -j 处理方式
4、删除规则:
iptables -D INPUT 编号
5、清空规则:
iptables -F
6、修改默认规则:
iptables -t 表名 -P INPUT 处理方式
7、允许路由转发(由内向外):
iptables -t nat -A POSTROUTING -s 内网ip/网段 -j SNAT --to-source 外网ip
8、允许路由转发(由外向内):
iptables -t nat -A PREROUTING -d 外网ip -p 协议 --dport 端口 -j DNAT --to-destination 内网ip/网段
9、实现地址转发(反向代理,基于内网ip):
iptables -t nat -A PREROUTING -d 外网ip -p 协议 --dport 端口 -j DNAT --to-destination 内网ip/网段
iptables -t nat -I POSTROUTING -p 协议 --dport 端口 -j MASQUERADE
10、限制每秒钟接受到的数据包的个数(防止垃圾***):
iptables -I INPUT -m limit --limit 个数/sec -j ACCEPT
11、拒绝新的连接请求:
iptables -A INPUT -m state --state NEW -j DROP
2.2、备份:
iptables-save > 文件
2.3、还原:
iptables-restore < 文件
2.4、查看iptables错误信息:
dmesg
iptables 常用命令
2.5、常用的文件:
查看系统中标准的端口信息:
cat /etc/services