docker防火墙配置firewall

docker防火墙配置firewall,第1张

亲您好,docker防火墙配置firewall *** 作如下:

1、通过systemctl status firewalld查看firewalld状态,发现当前是dead状态,即防火墙未开启

systemctl status firewalld

登录后复制

查看防火墙规则

firewall-cmd --list-all

登录后复制

2、通过systemctl start firewalld开启防火墙,没有任何提示即开启成功

systemctl start firewalld

登录后复制

3、通过systemctl status firewalld查看firewalld状态,显示active(running)即已开启了

4、 关闭防火墙设置,可能通过systemctl stop firewalld这条指令来关闭该功能,没有任何提示则关闭成功

systemctl stop firewalld

登录后复制

5、开启端口,执行

firewall-cmd --permanent --zone=public --add-port=8080/tcp --permanent

登录后复制

6、查看端口,执行如下,提示yes,即查询成功

firewall-cmd --permanent --query-port=8080/tcp

登录后复制

7、把docker0网卡添加到trusted域

可以先通过如下查看

ip addr

登录后复制

firewall-cmd --permanent --zone=trusted --change-interface=docker0

登录后复制

8、重启防火墙,执行如下,提示success即执行成功

firewall-cmd --reload

登录后复制

二、重建docker0 网络

1、先关闭docker引擎

service docker stop

登录后复制

2、关闭docker0的网卡

ip link set dev docker0 down

登录后复制

3、删除docker0网桥

brctl delbr docker0

登录后复制

4、重建docker0网桥

brctl addbr docker0

登录后复制

5、设置IP段

ip addr add 172.17.42.2/24 dev docker0

登录后复制

6、启动docker0网桥

ip link set dev docker0 up

登录后复制

7、重启docker引擎

# 安装firewalld

yum install firewalld firewall-config

systemctl start  firewalld # 启动

systemctl status firewalld # 或者 firewall-cmd --state 查看状态

systemctl disable firewalld # 停止

systemctl stop firewalld  # 禁用

# 你也可以关闭目前还不熟悉的FirewallD防火墙,而使用iptables,命令如下:

yum install iptables-services

systemctl start iptables

systemctl enable iptables

配置

```

firewall-cmd --version  # 查看版本

firewall-cmd --help    # 查看帮助

# 查看设置:

firewall-cmd --state  # 显示状态

firewall-cmd --get-active-zones  # 查看区域信息

firewall-cmd --get-zone-of-interface=eth0  # 查看指定接口所属区域

firewall-cmd --panic-on  # 拒绝所有包

firewall-cmd --panic-off  # 取消拒绝状态

firewall-cmd --query-panic  # 查看是否拒绝

firewall-cmd --reload # 更新防火墙规则

firewall-cmd --complete-reload

# 两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务

# 将接口添加到区域,默认接口都在public

firewall-cmd --zone=public --add-interface=eth0

# 永久生效再加上 --permanent 然后reload防火墙

# 设置默认接口区域,立即生效无需重启

firewall-cmd --set-default-zone=public

# 查看所有打开的端口:

firewall-cmd --zone=dmz --list-ports

# 加入一个端口到区域:

firewall-cmd --zone=dmz --add-port=8080/tcp

# 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档

firewall-cmd --zone=work --add-service=smtp

# 移除服务

firewall-cmd --zone=work --remove-service=smtp

# 显示支持的区域列表

firewall-cmd --get-zones

# 设置为家庭区域

firewall-cmd --set-default-zone=home

# 查看当前区域

firewall-cmd --get-active-zones

# 设置当前区域的接口

firewall-cmd --get-zone-of-interface=enp03s

# 显示所有公共区域(public)

firewall-cmd --zone=public --list-all

# 临时修改网络接口(enp0s3)为内部区域(internal)

firewall-cmd --zone=internal --change-interface=enp03s

# 永久修改网络接口enp03s为内部区域(internal)

firewall-cmd --permanent --zone=internal --change-interface=enp03s

服务管理

# 显示服务列表

Amanda, FTP, Samba和TFTP等最重要的服务已经被FirewallD提供相应的服务,可以使用如下命令查看:

firewall-cmd --get-services

# 允许SSH服务通过

firewall-cmd --enable service=ssh

# 禁止SSH服务通过

firewall-cmd --disable service=ssh

# 打开TCP的8080端口

firewall-cmd --enable ports=8080/tcp

# 临时允许Samba服务通过600秒

firewall-cmd --enable service=samba --timeout=600

# 显示当前服务

firewall-cmd --list-services

# 添加HTTP服务到内部区域(internal)

firewall-cmd --permanent --zone=internal --add-service=http

firewall-cmd --reload    # 在不改变状态的条件下重新加载防火墙

端口管理

# 打开443/TCP端口

firewall-cmd --add-port=443/tcp

# 永久打开3690/TCP端口

firewall-cmd --permanent --add-port=3690/tcp

# 永久打开端口好像需要reload一下,临时打开好像不用,如果用了reload临时打开的端口就失效了

firewall-cmd --reload

# 查看防火墙,添加的端口也可以看到

firewall-cmd --list-all

控制端口/服务

可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放 http 服务就是开放了 80 端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp 还是 udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

firewall-cmd --add-service=mysql# 开放mysql端口

firewall-cmd --remove-service=http      # 阻止http端口

firewall-cmd --list-services            # 查看开放的服务

firewall-cmd --add-port=3306/tcp        # 开放通过tcp访问3306

firewall-cmd --remove-port=80tcp        # 阻止通过tcp访问3306

firewall-cmd --add-port=233/udp        # 开放通过udp访问233

firewall-cmd --list-ports              # 查看开放的端口

伪装IP

firewall-cmd --query-masquerade# 检查是否允许伪装IP

firewall-cmd --add-masquerade# 允许防火墙伪装IP

firewall-cmd --remove-masquerade# 禁止防火墙伪装IP

端口转发

端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。 如果配置好端口转发之后不能用,可以检查下面两个问题:

比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了

其次检查是否允许伪装 IP,没允许的话要开启伪装 IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080# 将80端口的流量转发至8080

firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1# 将80端口的流量转发至192.168.0.1

firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080# 将80端口的流量转发至192.168.0.1的8080端口

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。

端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

转自:

https://www.cnblogs.com/tkzc2013/p/11319625.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11787531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存