docker高级应用之智能添加与修改防火墙规则

简介:

如果你有以下痛苦:

1、使用默认docker0桥接方式;

2、修改防火墙规则的话,使用手动修改配置;

3、并且修改时候还得计算来源端口,防止重复端口使用户登陆错误容器;

4、并当容器意外重启,内网ip变化后还得修改规则

那么你可以看看本文了,对你这些痛处都有解决方法。

目前docker容器设置访问规则的话,就2个方法

1、在docker容器创建的时候,使用-p来设置

2、在容器运行中,获取容器的ip,然后在宿主机的iptables力通过nat链做dnat设置

我之前一直使用第2个方法,但随着我docker项目的增加(目前我这里研发使用docker的容器做测试机),防火墙的访问规则设置起来十分麻烦,并且之前规划没有弄好,容器的网络还是默认的docker0桥接方式,这样容器一挂或者异常问题、docker daemon重启,都会导致容器的ip变更,变更后就得修改防火墙策略,十分的麻烦。

为了解决这个问题,我开发了2个程序,1个是持久化固定容器ip(地址http://dl528888.blog.51cto.com/2382721/1616527),另外一个是智能防火墙,下面是关于智能防火墙功能的介绍。

一、介绍

1、编写语言

python

2、运行环境

容器需要使用我之前写的持久化固定ip方式来创建

需要额外安装的python模块

etcd

docker

nmap

3、基本宿主机防火墙(包含filter链与nat链)

默认在/root/firewall里有个基础的宿主机防火墙,里面包含filter链与nat链,我的防火墙程序先获取这个文件,然后在从etcd里获取各容器的防火墙结合后是新的规则,如下面是我的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@docker-test3 firewall] # cat /root/firewall/iptables_base.txt
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:83]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i em1 -j ACCEPT
-A INPUT -i ovs1 -j ACCEPT
#forllow is room network
-A INPUT -s 117.121.x.0 /24 




 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1619631 ,如需转载请自行联系原作者
相关文章
|
Ubuntu 网络协议 网络安全
ubuntu防火墙的安装,开启,关闭和添加规则等操作
ubuntu防火墙的安装,开启,关闭和添加规则等操作
4379 0
ubuntu防火墙的安装,开启,关闭和添加规则等操作
|
8月前
|
Ubuntu 网络协议 网络安全
|
8月前
|
运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
112 0
|
安全 网络安全
H3C防火墙基础配置操作
H3C防火墙基础配置操作
H3C防火墙基础配置操作
|
Docker 容器
深挖 docker 默认网络 | 为什么 docker 默认网络能上外网
Docker 有四中网络模式, 分别是 Bridge、Host、Container、None
233 0
|
安全 网络协议 Linux
什么是firewalld,简介、策略及规则(Centos7防火墙)(上)
什么是firewalld,简介、策略及规则(Centos7防火墙)
194 0
什么是firewalld,简介、策略及规则(Centos7防火墙)(上)
|
存储 Linux 网络安全
什么是firewalld,简介、策略及规则(Centos7防火墙)(下)
什么是firewalld,简介、策略及规则(Centos7防火墙)(下)
319 0
|
关系型数据库 MySQL Shell
|
NoSQL 应用服务中间件 Redis
Docker05_Docker默认网络原理、网络模式、自定义网络(二)
②. 网络模式 ③. 外部是如何访问tomcat或者redis的?
104 0
Docker05_Docker默认网络原理、网络模式、自定义网络(二)
|
应用服务中间件 Docker 容器