统信服务器操作系统如何通过UFW防火墙工具配合管理Docker容器?20


百褶裙愉快
百褶裙愉快 2024-01-23 15:22:21 51826
分类专栏:问题 问题分类: 统信软件
已结题

如题,求大佬帮忙解决

3 个回答
  • 1843880570 进阶 2024-01-23 15:26:08

    步骤一

    目前新的解决方案只需要修改一个 UFW 配置文件即可,Docker 的所有配置和选项都保持默认。修改 UFW 的配置文件 /etc/ufw/after.rules,在最后添加上如下规则:
    修改UFW的配置文件

    步骤二

    重启 UFW,终端输入sudo systemctl restart ufw。现在外部就已经无法访问 Docker 发布出来的任何端口了,但是容器内部以及私有网络地址上可以正常互相访问,而且容器也可以正常访问外部的网络。可能由于某些未知原因,重启 UFW 之后规则也无法生效,请重启服务器。
    如果希望允许外部网络访问 Docker 容器提供的服务,比如有一个容器的服务端口是 80。那就可以用以下命令来允许外部网络访问这个服务:ufw route allow proto tcp from any to any port 80。这个命令会允许外部网络访问所有用Docker发布出来的并且内部服务端口为80的所有服务。
    请注意,这个端口80是容器的端口,而非使用 -p 0.0.0.0:8080:80选项发布在服务器上的8080端口。如果有多个容器的服务端口为80,但只希望外部网络访问某个特定的容器。比如该容器的私有地址为 172.17.0.2,就用类似下面的命令:
    ufw route allow proto tcp from any to 172.17.0.2 port 80
    如果一个容器的服务是 UDP 协议,假如是 DNS 服务,可以用下面的命令来允许外部网络访问所有发布出来的 DNS 服务:
    ufw route allow proto udp from any to any port 53
    同样,如果只针对一个特定的容器,比如 IP 地址为 172.17.0.2:
    ufw route allow proto udp from any to 172.17.0.2 port 53
    规则说明
    在新增的这段规则中,下面这段规则是为了让私有网络地址可以互相访问。通常情况下,私有网络是比公共网络更信任的。
    规则说明
     下面的规则是为了可以用 UFW 来管理外部网络是否允许访问 Docker 容器提供的服务,这样我们就可以在一个地方来管理防火墙的规则了。
    管理防火墙的规则
    以下的规则阻止了所有外部网络发起的连接请求,但是允许内部网络访问外部网络。对于 TCP 协议,是阻止了从外部网络主动建立 TCP 连接。对于 UDP,是阻止了所有小余端口 32767 的访问。为什么是这个端口的?由于 UDP 协议是无状态的,无法像 TCP 那样阻止发起建立连接请求的握手信号。在 GNU/Linux 上查看文件/proc/sys/net/ipv4/ip_local_port_range 可以看到发出 TCP/UDP 数据后,本地源端口的范围,默认为 32768 60999。当从一个运行的容器对外访问一个 UDP 协议的服务时,本地端口将会从这个端口范围里面随机选择一个,服务器将会把数据返回到这个随机端口上。所以,我们可以假定所有容器内部的 UDP 协议的监听端口都小余32768,不允许外部网络主动连接小余32768的UDP端口。
     

     
    赞同 1 反对 0

  • derek在工位 新手 2024-01-23 17:11:42

    在统信服务器操作系统(UOS)中,你可以使用UFW(Uncomplicated Firewall)防火墙工具来管理Docker容器。以下是如何使用UFW防火墙工具配合管理Docker容器的步骤:

    1. 安装Docker:首先,确保你已经在UOS上安装了Docker。如果没有,请按照以下命令安装Docker:
     
    sudo apt-get update
    sudo apt-get install docker.io
    1. 启动Docker服务:安装完成后,启动Docker服务:
     
    sudo systemctl start docker
    1. 安装UFW:接下来,确保你已经在UOS上安装了UFW防火墙工具。如果没有,请按照以下命令安装UFW:
     
    sudo apt-get install ufw
    1. 配置UFW:配置UFW以允许Docker容器的网络流量。首先,允许Docker容器的网络流量通过UFW:
     
    sudo ufw allow in on docker0
    1. 创建Docker容器:现在,你可以创建一个Docker容器并将其连接到Docker网络。例如,创建一个名为mycontainer的容器,并将其连接到名为mynetwork的Docker网络:
     
    sudo docker run -d --name mycontainer --network mynetwork myimage
    1. 配置Docker网络:确保Docker网络允许容器之间的通信。例如,如果你想要允许名为mycontainer的容器与名为myothercontainer的容器通信,可以使用以下命令:
     
    sudo docker network connect mynetwork myothercontainer
    1. 配置UFW规则:最后,配置UFW规则以允许容器之间的通信。例如,如果你想要允许名为mycontainer的容器与名为myothercontainer的容器通信,可以使用以下命令:
     
    sudo ufw allow from mycontainer to myothercontainer

    这样,你就可以使用UFW防火墙工具来管理Docker容器了。请注意,这些命令仅在使用Docker和UFW时有效。如果你使用的是其他方法来管理容器和防火墙,可能需要使用不同的方法来配置它们。

    赞同 0 反对 0

    努力打工的干饭人
  • 风晓 新手 2024-01-23 18:04:50

    解决方案

    步骤一

    目前新的解决方案只需要修改一个 UFW 配置文件即可,Docker 的所有配置和选项都保持默认。修改 UFW 的配置文件 /etc/ufw/after.rules,在最后添加上如下规则:
    修改UFW的配置文件

    步骤二

    重启 UFW,终端输入sudo systemctl restart ufw。现在外部就已经无法访问 Docker 发布出来的任何端口了,但是容器内部以及私有网络地址上可以正常互相访问,而且容器也可以正常访问外部的网络。可能由于某些未知原因,重启 UFW 之后规则也无法生效,请重启服务器。
    如果希望允许外部网络访问 Docker 容器提供的服务,比如有一个容器的服务端口是 80。那就可以用以下命令来允许外部网络访问这个服务:ufw route allow proto tcp from any to any port 80。这个命令会允许外部网络访问所有用Docker发布出来的并且内部服务端口为80的所有服务。
    请注意,这个端口80是容器的端口,而非使用 -p 0.0.0.0:8080:80选项发布在服务器上的8080端口。如果有多个容器的服务端口为80,但只希望外部网络访问某个特定的容器。比如该容器的私有地址为 172.17.0.2,就用类似下面的命令:
    ufw route allow proto tcp from any to 172.17.0.2 port 80
    如果一个容器的服务是 UDP 协议,假如是 DNS 服务,可以用下面的命令来允许外部网络访问所有发布出来的 DNS 服务:
    ufw route allow proto udp from any to any port 53
    同样,如果只针对一个特定的容器,比如 IP 地址为 172.17.0.2:
    ufw route allow proto udp from any to 172.17.0.2 port 53
    规则说明
    在新增的这段规则中,下面这段规则是为了让私有网络地址可以互相访问。通常情况下,私有网络是比公共网络更信任的。
    规则说明
     下面的规则是为了可以用 UFW 来管理外部网络是否允许访问 Docker 容器提供的服务,这样我们就可以在一个地方来管理防火墙的规则了。
    管理防火墙的规则
    以下的规则阻止了所有外部网络发起的连接请求,但是允许内部网络访问外部网络。对于 TCP 协议,是阻止了从外部网络主动建立 TCP 连接。对于 UDP,是阻止了所有小余端口 32767 的访问。为什么是这个端口的?由于 UDP 协议是无状态的,无法像 TCP 那样阻止发起建立连接请求的握手信号。在 GNU/Linux 上查看文件/proc/sys/net/ipv4/ip_local_port_range 可以看到发出 TCP/UDP 数据后,本地源端口的范围,默认为 32768 60999。当从一个运行的容器对外访问一个 UDP 协议的服务时,本地端口将会从这个端口范围里面随机选择一个,服务器将会把数据返回到这个随机端口上。所以,我们可以假定所有容器内部的 UDP 协议的监听端口都小余32768,不允许外部网络主动连接小余32768的UDP端口。
    赞同 0 反对 0

    hello啊
百褶裙愉快新手
粉丝 0 发表 9 + 关注 私信
上周热门
统信系统能生成某一指定文件夹下的所有文件列表吗  2772
统信系统有自己的字幕屏幕保护程序吗  2532
统信软件能支持pandas吗  2454
统信系统如何在保证自己数据安全的基础上,进行数据分析,比如使用pandas进行大数据分析  2443
安全与发展,统信系统是如何在两者之间权衡,满足用户高效办公的要求  2103
统信系统的数据安全机制是什么  1770
统信软件支持python为什么不支持安装pandas  1113
您好,我想问一下,就是这银河麒麟系统,背景黑屏怎么办啊,其他的都正常,就是没有背景,设置里面的背景一点击系统就不响应了怎么解决?  174
我想连接共享打印机可是,搜索驱动时候没有,怎么办  160
uos有支持活体检测的软件吗  149
本周热议
麒麟系统登录输入密码后又需要重新输入密码,确定密码正确。如何处理? 12
求麒麟系统下的Broadcom 802.11n 无线网卡驱动 10
银河麒麟桌面操作系统V10 SP1安装应用时会反复提示安全授权认证,如何才能取消呢? 10
统信UOS系统下安装HP打印机驱动问题 10
银河麒麟系统登录时用户名是中文,如何将输入法切换成中文进行登录? 9
如何在统信系统使用VFP? 9
使用正版软件承诺书每年一签有相关的政策文件吗? 8
银河麒麟系统安装软件需要密码授权,单用户模式修改密码不行,如何解决 8
uos系统怎么装了向日葵,向日葵打不开啊? 7
有偿使用中国长城信创运维工程师(初级)证书 7

加入交流群

请使用微信扫一扫!