文章目录
- iptables 概述
 - 四表五链
 - iptables 安装启动
 - iptables 配置详解
 - iptables配置文件
 - iptables配置语法
 - iptables常用实例
 - 查看规则
 - 修改默认规则
 - 保存和备份规则
 - 恢复备份的规则
 - 清空规则
 - 放行SSH服务
 - 在ubuntu14.04中iptables规则持久化
 
iptables 概述
- 主机型 
  
- 对主机进行保护
 
 - 网络型 
  
- 系统当作路由时使用,对网络进行保护
 
 - iptables是一个用户空间的应用,用来设置内核空间的netfilter
 - iptables没有守护进程,不能算是真正意义上的服务,应该算是内核提供的功能
 
四表五链
-  
数据经过防火墙的流程

 -  
四表
- filter表 
    
- 负责过滤功能,防火墙;内核模块:iptables_filter
 
 - nat表 
    
- network address translation,网络地址转换功能;内核模块:iptable_nat
 
 - mangle表 
    
- 拆解报文,做出修改,并重新封装的功能;内核模块:iptable_mangle
 
 - raw表 
    
- 关闭nat表上雇用的连接追踪机制;内核模块:iptable_raw
 
 
 - filter表 
    
 -  
五链
- PREROUTING(路由前)
 - INPUT(数据包入本机)
 - FORWARD(数据转发)
 - OUTPUT(数据包出本机)
 - POSTROUTING(路由后)
 
 -  
规则
- 处理运作 
    
- ACCEPT 
      
- 允许数据包通过
 
 - DROP 
      
- 直接丢弃数据包,不给任何回应信息
 
 - REJECT 
      
- 拒绝数据包通过,返回拒绝的回应信息
 
 - SNAT 
      
- 源地址转换,解决内网用户用同一个公网地址上网的问题
 
 - MASQUERADE 
      
- 伪装,是SNAT的一种特殊形式,适用于动态的、临时会变的IP上
 
 - DNAT 
      
- 目标地址转换
 
 - REDRECT 
      
- 在本机做端口映射
 
 - LOG 
      
- 在/var/log/message文件中记录日志信息,继续进行下一条规则
 
 
 - ACCEPT 
      
 
 - 处理运作 
    
 
iptables 安装启动
- 以CentOS7为例
 - 禁用selinux和firewalld
systemctl stop firewalld;systemctl disable firewalld;setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config - 安装启动iptables服务
yum -y install iptables-services;systemctl enable iptables --now;systemctl status iptables - 查看内核是否支持iptables
lsmod|egrep "nat|filter" 
iptables 配置详解
iptables配置文件
- ipv4
vi /etc/sysconfig/iptables - ipv6
vi /etc/sysconfig/ip6tables 
iptables配置语法
- 语法
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 运作] - 管理选项 
  
选项 功能 备注 -t 表 指定要操作的表 默认为filter表 -A 向规则链中添加条目 在最后添加 -D 从规则链中删除条目 指定条目内容 -I 向规则链中插入条目 默认在最前插入 -R 替换规则链中已有的条目 -L 显示规则链中已有的条目 -F 清空规则链中所有条目 注意,可能会断SSH -Z 清空规则链中的数据包计数器和字节计数器 -N 创建新的用户自定义规则链 -P 定义规则链中的默认目标 -h 显示帮助信息 -p 指定要匹配的数据包协议类型 -s 指定要匹配的数据包源ip地址 -d 指定要匹配的数据包目的ip地址 -j 目标 指定动作 -i 网络接口 指定数据包进入本机的网络接口 -o 网络接口 指定数据包要离开本机所使用的网络接口  
iptables常用实例
查看规则
- 默认为netfilter表,不解析,显示行号
iptables -nL --line-numbers 
修改默认规则
- 默认为netfilter表,修改INPUT链默认规则为"DROP"
iptables -P INPUT DROP 
保存和备份规则
- 修改的规则临时生效
 - 如果要永久生效需要保存配置
 - 命令 
  
- 保存配置
iptables-save - 备份配置
iptables-save > /mnt/iptables_bak_$(date "+%Y-%m-%d_%H:%M") 
 - 保存配置
 
恢复备份的规则
- 命令
iptables-restore 备份的文件名 
清空规则
- 默认为netfilter表,清空规则,如果默认规则不是ACCEPT,会造成SSH立即断开
iptables -F 
放行SSH服务
- 源IP:192.168.86.2
 - 目的IP:192.168.99.202
 - SSH端口:22
 - 命令
iptables -I INPUT -s 192.168.86.2 -d 192.168.99.202 -p tcp --dport 22 -j ACCEPT iptables -I OUTPUT -s 192.168.99.202 -d 192.168.86.2 -p tcp --sport 22 -j ACCEPT 
在ubuntu14.04中iptables规则持久化
- 修改规则–保存规则为文件–制作开启启动脚本,自动载入文件中规则
 - 脚本
#!/bin/bash # 修改规则(略) # 查看规则 iptables -nL --line-numbers # 保存规则到文件 sudo mkdir /etc/iptables sudo iptables-save > /etc/iptables/rules.v4 # 制作开机脚本 sudo iptables-save > /etc/iptables/rules.v4 cat >> /etc/network/if-pre-up.d/iptables << EOF #!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4 EOF sudo chmod +x /etc/network/if-pre-up.d/iptables ``` 



















