iptables命令详解
数据包经过防火墙流程
如果想要Linux主机支持转发 则需要开启内核的IP_FORWARD的功能选项
数据包匹配条件
匹配条件分为基本匹配条件和扩展匹配条件
基本匹配条件
1.源地址Source IP,目标地址 Destination IP
扩展匹配条件
除了上述的条件可以用于匹配,还有很多其他的条件可以用于匹配,这些条件泛称为扩展条件,这些扩展条件其实也是netfilter中的一部分,只是以模块的形式存在,如果想要使用这些条件,则需要依赖对应的扩展模块.
1.源端口Source Port, 目标端口Destination Port
处理动作
处理动作在iptables中被称为target,动作也可以分为基本动作和扩展动作
1.ACCEPT 允许数据包通过
2.DROP 直接丢弃数据包,不给任何回应信息,这时候客户端会过了超时时间才会有反应
3.REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息
4.SNAT 源地址转换,解决内网用户用同一个公网地址上网的问题
5.MASQUERADE 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
6.DNAT 目标地址转换
7.REDIRECT 在本机做端口映射
8.LOG 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
匹配规则
规则的顺序很重要
如果报文已经被前面的规则匹配到,iptables则会对报文执行对应的动作,即使后面的规则也能匹配到当前报文,很有可能也没有机会再对报文执行相应的动作了
报文先被第一条规则匹配到了 于是当前报文被"放行"了,因为报文已经被放行了.即使第二条规则能够匹配到刚才"放行"的报文.也没有机会再对刚才的报文进行丢弃操作了。这就是iptables的工作机制
iptables和firewalld的区别
firewalld和iptables是两个不同的服务
在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等.
systemctl status firewalld
systemctl status iptables
firewalld是iptables的一个封装,可以让你更容易地管理iptables规则。它并不是iptables的替代品,虽然iptables命令仍可用于firewalld,但建议firewalld时仅使用firewalld命令