二、iptables的配置及相关规则
#centos7中是可以敲iptables的命令的,但是无法进行管理,因为默认是用firewalld进行管理的 [root@localhost ~]# which iptables /usr/sbin/iptables [root@localhost ~]# #若想使用iptables防火墙,必须先关闭 firewalld防火墙,再安装iptables [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# yum install -y iptables iptables-services 已加载插件:fastestmirror, langpacks local | 3.6 kB 00:00 Loading mirror speeds from cached hostfile 软件包 iptables-1.4.21-18.0.1.el7.centos.x86_64 已安装并且是最新版本 正在解决依赖关系 --> 正在检查事务 ---> 软件包 iptables-services.x86_64.0.1.4.21-18.0.1.el7.centos 将被 安装 --> 解决依赖关系完成 依赖关系解决 ============================================================================= Package 架构 版本 源 大小 ============================================================================= 正在安装: iptables-services x86_64 1.4.21-18.0.1.el7.centos local 51 k 事务概要 ============================================================================= 安装 1 软件包 总下载量:51 k 安装大小:25 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安装 : iptables-services-1.4.21-18.0.1.el7.centos.x86_64 1/1 验证中 : iptables-services-1.4.21-18.0.1.el7.centos.x86_64 1/1 已安装: iptables-services.x86_64 0:1.4.21-18.0.1.el7.centos 完毕! #可以看到iptables默认是已安装的 [root@localhost ~]# systemctl start iptables.service #安装完后启动服务
在centos6中可以通过图形化界面(如下图)来管理,但是在centos7中没有反应,只能通过命令行来管理
2.1 命令格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
控制类型使用大写字母,其余均为小写
2.2 常用控制类型
ACCEPT |
允许数据包通过 |
DROP |
直接丢弃数据包,不给出任何回应信息 |
REJECT |
拒绝数据包通过,会给数据发送端一个响应信息 |
SNAT |
修改数据包的源地址 |
DNAT |
修改数据包的目的地址 |
MASQUERADE |
伪装成一个非固定公网IP地址 |
LOG |
在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。LOG只是一种辅助动作,并没有真正处理数据包 |
2.3 常用的管理选项
-A |
在指定链的末尾追加(--append)一条新的规则 |
-I |
在指定链的开头插入(--insert)一条新的规则,未指定序号时默认作为第一条规则 |
-R |
修改、替换(--replace)指定链中的某一条规则,可指定规则序号或具体内容 |
-P |
设置指定链的默认策略(--policy) |
-D |
删除(--delete)指定链中的某一条规则,可指定规则序号或具体内容 |
-F |
清空(--flush)指定链中的所有规则,若未指定链名,则清空表中的所有链 |
-L |
列出(--list)指定链中所有的规则,若未指定链名,则列出表中的所有链 |
-n |
使用数字形式(--numeric)显示输出结果,如显示IP地址而不是主机名 |
-v |
显示详细信息,包括每条规则的匹配包数量和匹配字节数 |
--line-numbers |
查看规则时,显示规则的序号 |
2.4 匹配条件
匹配条件 |
说明 |
-p |
指定要匹配的数据包的协议类型 |
-s |
指定要匹配的数据包的源IP地址 |
-d |
指定要匹配的数据包的目的IP地址 |
-i |
指定数据包进入本机的网络接口 |
-o |
指定数据包离开本机做使用的网络接口 |
–sport |
指定源端口号 |
–dport |
指定目的端口号 |
2.5 iptables语法总结
2.6 案例
案例1:默认查看filter表
-nL可以合起来写,但是n必须放在前面,放在后面会报错,如上图所示的报错
案例2 :查看其他表
案例3:一键清空规则
案例4:设置ping不可达
0.0.0.0/0 代表所有主机都生效
案例5:添加
案例6:插入
不指定默认是在第一行插入添加
案例7:删除
如果有多条一样的规则,是先删序号小的那条
案例8:设置默认规则