总结

子菜单:/容器
包装要求:
容器


容器是microtik对Lin雷竞技网站ux容器的实现,允许用户在RouterOS中运行容器化的环境。l雷竞技容器特性是在RouterOS v7.4beta4中添加的。l雷竞技

免责声明

  • 你需要物理访问路由器来启用对容器特性的支持,它在默认情况下是禁用的;
  • 一旦启用了容器特性,就可以远程添加/配置/启动/停止/删除容器!
  • 如果路由器被入侵,容器可以很容易地在你的路由器和网络上安装恶意软件;雷电竞app下载官方版苹果
  • 你的路由器和你在容器中运行的任何东西一样安全;
  • 如果运行容器,则没有任何类型的安全保证;
  • 在路由器上运行第三方容器镜像可能会打开安全漏洞/攻击向量/攻击面;
  • 拥有如何构建漏洞的知识的专家将能够越狱/提升到root;

安全风险:

当安全专家发布他的漏洞研究时——任何人都可以应用这样的漏洞;
有人会建立一个容器镜像来利用并提供Linux根shell;
使用根shell可能会在你的RouterOS系统中留下一个永久的后门/漏洞,即使在移除docker镜像和禁用容器特性之后;l雷竞技
如果一个漏洞被注入到主或辅助routerboot(或供应商预加载程序)中,那么即使netinstall也可能无法修复它;

需求

容器包兼容手臂arm64x86架构。使用远程映像(类似于docker pull)功能需要在主存中有大量的空闲空间,16MB SPI闪存板可以在USB或其他磁盘媒体上使用预构建映像。


强烈建议使用外置磁盘


需要安装容器包
/容器

属性

财产 描述

cmd(字符串;默认值:)

命令在容器内执行(将覆盖CMD参数)

评论字符串;默认值:)

简短的描述

dns(字符串;默认值:)


域名(字符串;默认值:)


入口点(字符串;默认值:

二进制文件的路径
envlist字符串;默认值:) 环境变量列表(在容器/ env)与容器一起使用
文件字符串;默认值: Container *tar.gz如果是从文件导入,则为tarball
主机名字符串;默认值:
接口字符串;默认值: 与容器一起使用的第一个接口
日志记录字符串;默认值: 如果设置为yes,则所有容器生成的输出都将显示在RouterOS日志中l雷竞技
挂载字符串;默认值: 从/container/ Mounts /子菜单挂载该容器
远程图像字符串;默认值: 如果使用外部注册表,要安装的容器映像名称(在/container/config set registry-url=…下配置)
root-dir字符串;默认值: 用于保存主存之外的容器存储
停止信号字符串;默认值:
workdir字符串;默认值:) CMD入口点的工作目录

容器的配置

/ /配置/容器


财产 描述
registry-url 将从其中下载容器的外部注册中心url
tmpdir 容器提取目录
ram-high RAM使用限制。(0表示无限制)
用户名 指定用于身份验证的用户名(从ROS 7.8开始)
密码 指定身份验证的密码(从ROS 7.8开始)

容器使用示例

先决条件:

    1. l雷竞技安装了RouterOS v7.4beta及以上版本的设备集装箱包装
    2. 对设备的物理访问,以启用容器模式
    3. 附加硬盘驱动器或USB驱动器用于存储-格式化为ext3/ext4

启用容器模式

Device-mode默认情况下限制容器的使用,在授予容器模式访问之前-确保您的设备是完全安全的。

启用容器模式

/系统/ device-mode /更新集装箱= yes

如果在X86上使用容器,则需要按下重置按钮来确认设备模式,或者进行冷重启。

创建网络

为容器添加第5个接口:

/interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1

为容器创建一个桥接,并添加vth:

/interface/bridge/add name=containers /ip/address/add address=172.17.0.1/24 interface=containers /interface/bridge/port add bridge=containers interface=veth1

为出站流量设置NAT:

/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24

添加环境变量和挂载(可选)

为容器创建环境变量(可选):

/container/envs/add name=pihole_envs key=TZ value="Europe/Riga" /container/envs/add name=pihole_envs key=WEBPASSWORD value="mysecurepassword" /container/envs/add name=pihole_envs key=DNSMASQ_USER value="root"

定义挂载(可选):

/container/mounts/add name=etc_pihole src=disk1/etc dst=/etc/pihole /container/mounts/add name=dnsmasq_pihole src=disk1/etc-dnsmasq. etcd dst = / etc / dnsmasq.d


src =指向RouterOSl雷竞技的位置(也可以是src = disk1 / etc_pihole例如,如果您决定将配置文件放在外部USB介质上),dst =指向定义的位置(关于指向哪里的信息,请参阅容器手册/wiki/github)。如果src目录在第一次使用时不存在,那么它将用容器中的任何内容填充dst的位置。

添加容器映像

如果您希望在log - add中查看容器输出日志= yes在创建容器时,root-dir应该指向ext3或ext4格式的外部驱动器。不建议对容器使用内部存储。
有多种方法可以添加容器:

A)从外部库获取图像

设置registry-url(用于从Docker注册表下载容器),并将解压目录(tmpdir)设置为附带的USB介质:

/集装箱/ config /设置registry-url = https://registry - 1.码头工人。io tmpdir = disk1 /拉

把图片:

/container/add remote-image=pihole/pihole:最新的接口=veth1 root-dir=disk1/pihole mount =dnsmasq_pihole,etc_pihole envlist=pihole_envs

图像将被自动拉出并提取到根目录,状态可以通过使用来检查

/集装箱/打印

b)从PC导入图像

这些链接是最新的2022年6月16日.请确保下载与你的RouterOS设备架构匹配的正确版本。l雷竞技
从docker hub更新sha256 sum以获取最新的镜像文件

Arm64: docker pull pihole/pihole:latest@sha256:4cef8a7b32d318ba218c080a3673b56f396d2e2c74d375bef537ff5e41fc4638 docker save pihole/pihole > pihole.tar arm docker pull pihole/pihole:latest@sha256: 684c59c7c057b2829d19d0817926c03145c1e2fad2fae3d9c36a94 docker save pihole/pihole > pihole.tar amd64 docker pull pihole/pihole:latest@sha256:f56885979dcffeb902d2ca51828c92118199222ffb8f6644505e7881e11eeb85 docker save pihole/pihole > pihole.tar

下载并解压缩文件后,将其上传到你的RouterOS设备。l雷竞技从tar映像创建一个容器

/container/add file=pihole.tar interface=veth1 envlist=pihole_envs root-dir=disk1/pihole mounts=dnsmasq_pihole,etc_pihole hostname= pihole

c)在PC上建立一个图像

Linux系统的步骤

要使用Dockerfile并制作自己的docker包-需要安装docker以及buildx或其他构建器工具包。

最简单的方法是下载并安装Docker引擎:
https://docs.docker.com/engine/install/

安装后检查是否有额外的架构可用:

Docker buildx 1

应该返回:

名称/节点驱动程序/端点状态平台默认* docker默认运行linux/amd64、linux/arm64、linux/riscv64、linux/ppc64le、linux/s390x、linux/386、linux/arm/v7、linux/arm/v6

如果没有-安装额外的架构:

运行——privileged——rm tonistiigi/binfmt——install all

拉或创建包含Dockerfile的项目并构建,提取图像(如果需要调整—platform):

Git克隆https://github.com/pi-hole/docker-pi-hole.git CD docker-pi-hole docker buildx build——no-cache——platform arm64——output=type=docker -t piholeDocker save pihole > pihole.tar

上传pihole.tar到你的Routel雷竞技rOS设备。

Linux系统上的映像和对象可以修剪

从tar映像创建一个容器

/container/add file= PiHole .tar interface=veth1 envlist=pihole_envs mounts=dnsmasq_pihole,etc_pihole hostname=PiHole

启动容器

确保已添加容器和状态=停止通过使用/集装箱/打印

/集装箱/ 0开始

您应该能够访问PiHole网页面板通过导航到http://172.17.0.2在你的网页浏览器中。

转发到内部集装箱的端口

端口可以使用dst-nat(其中192.168.88.1路由器的IP地址)转发:

/ip firewall NAT add action=dst-nat chain=dstnat dst-address=192.168.88.1 dst-port=80 protocol=tcp to-addresses=172.17.0.2 to-ports=80

对于Pihole容器-将DNS服务器设置为容器的第v接口IP地址-

/ip DNS set servers=172.17.0.2

或更改DHCP服务器设置以提供Pihole DNS


提示和技巧

  • 容器占用大量磁盘空间,强烈建议使用USB/SATA、NVMe附加介质。对于带有USB端口的设备- USB到SATA适配器可以与2.5英寸驱动器一起使用-用于额外存储和更快的文件操作。
  • 可以使用以下命令限制RAM使用:
/集装箱/ config /设置ram-high = 200

这将软限制RAM使用-如果RAM使用超过高边界,则c组的进程将受到限制并承受沉重的回收压力。

  • 在路由器重启后使用start-on-boot选项启动容器(从7.6beta6开始)

    /container/print 0 name="2e679415-2edd-4300- 8fabb -a779ec267058" tag="test_arm64:latest" os="linux" arch="arm" interface=veth2 root-dir=disk1/alpine mounts="" dns="" logging=yes start-on-boot=yes status=running /container/set 0 start-on-boot=yes
  • 有可能到达运行容器壳:

    /集装箱/壳0
  • 启用日志记录以从容器获取输出:

    /container/set 0 logging=yes
  • 没有标签