docker与iptables

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常见链

docker与iptables_第1张图片
我们做访问控制的话,主要是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

你可能感兴趣的:(linux)