iptables介绍
IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
安装iptables服务
其实不安装也可以,centos7默认就有iptables,但是没有对应service,不方便保存配置,快速修改配置。
安装iptables
yum install -y iptables
升级iptables
yum update iptables
安装iptables-services
yum install iptables-services -y
开机启动
systemctl enable iptables
systemctl start iptables
CentOS7默认的防火墙不是iptables,而是firewalle.
禁用/停止自带的firewalld服务
停止firewalld服务
systemctl stop firewalld
禁用firewalld服务
systemctl mask firewalld
iptables常见链
我们做访问控制的话,主要是input与forward链,ip包进来的时候只会匹配其中一个哦
一般其他机器访问宿主机的时候(或者docker net为host)会进入INPUT链
直接访问docker实例端口的时候(非host模式)会进入forward链
注意,我们允许特定ip访问某端口的时候,注意顺序,先允许再拒绝,不然无效哦,如通过iptables -L -n查看,对应顺序为
ACCEPT tcp -- 192.168.2.119 10.0.97.5 tcp dpt:27017
DROP tcp -- 0.0.0.0/0 10.0.97.5 tcp dpt:27017
另外-j REJECT –reject-with icmp-host-prohibited与DROP的作用类似,都会禁止访问宿主机的端口
常见命令
配置文件位置
/etc/sysconfig/iptables
保存规则
service iptables save
查看所有规则
iptables -L -n
查看帮助
iptables –help
查看版本
iptables -V
v1.4.21
保存(针对未安装iptables服务的情况)
iptables-save > iptablesrule
还原(针对未安装iptables服务的情况)
iptables-restore < iptablesrule
查看INPUT链行号(从1开始)
iptables -L INPUT –line-numbers
删除指定链的第4行规则
iptables -D INPUT 4
增删改
A追加R替换I插入D删除,如果要定位到指定位置进行操作,格式为A/R/I/D INPUT/FORWARD num
我习惯直接改配置文件找到类似-A INPUT -i virbr0 -p udp -m udp –dport 53 -j ACCEPT这些配置,直接修改,然后
systemctl restart iptables
实战只允许指定ip访问某容器端口
iptables -I FORWARD -p tcp –dport 1521 -j DROP
iptables -I FORWARD -p tcp -s 192.168.2.119 –dport 1521 -j ACCEPT
或者
iptables -A FORWARD -p tcp -s 192.168.2.119 –dport 1521 -j ACCEPT
iptables -A FORWARD -p tcp –dport 1521 -j DROP