在使用hAP ac3上网,正需要DNS的Foreword转发,不知道v7.7beta8的DNS出了什么鬼问题,配置FWD转发不生效,正好hAP ac3是IPQ4018采用ARM平台,支持USB扩展,干脆用容器安装DNSMasq解决,我的思路是使用ubuntu的镜像,然后在通过apt-get安装DNSMasq

需要一个U盘,作为Docker的镜像存储,hAP ac3的存储空间只要有128M,首先插上U盘,并格式化,Winbox在/system/disk进行格式化,选择ext4格式:

命令行/disk/print查看情况,格式化完成后,已经将U盘挂载到disk4

[admin@ac3] /disk> print
Flags: M, r - RAID-MEMBER; p - PARTITION
Columns: SLOT, MODEL, SERIAL, INTERFACE, NAME, FS, FREE, SIZE
#  SLOT   MODEL       SERIAL  INTERFACE     NAME  FS    FREE     SIZE
0  usb1   Kingston  B06EBF60xx  USB2.10 480Mbps             30943995904
1 Mp usb1-part1                       disk4 ext4 30 299017216  30943995392

[admin@ac3] /disk>

初始化container配置,需修改Tmp dir,镜像源站地址我使用默认,可以根据自己需要修改,设置disk4/pull为拉取镜像下载的缓存目录

命令行查看配置

[admin@ac3] /container/config> print
ram-high: 0
registry-url: https://registry-1.docker.io
tmpdir: disk4/pull

[admin@ac3] /container/config>

进入/interface/veth创建veth网口,并设置网关为172.17.0.1,后面会分配给网桥的docker接口

[admin@ac3]/interface/veth> add address=172.17.0.2/24 gateway=172.17.0.1 name=veth1

在RouterOS创建一个docker的桥接

[admin@ac3]/interface/bridge>add name=docker

将veth1加入docker的bridge中

[admin@ac3]/interface/bridge/port>add bridge=docker interface=veth1

分配docker桥接的IP地址

[admin@ac3]/ip/address>add address=172.17.0.1/24 interface=docker

添加配置,remote-image=ubuntu:latest,拉取镜像名称,设置interface=veth1,,设置文件目录为disk4/ubuntudns,命令如下:

add remote-image=ubuntu:latest interface=veth1 root-dir=disk4/ubuntudns  logging=yes cmd=”tail -f /dev/null”

容器启动时常会遇到问题导致启动失败,可以利用tail -f /dev/null让容器一直处于runing状态。

下面通过命令执行添加

[admin@ac3] /container> add remote-image=ubuntu:latest interface=veth1 root-dir=disk4/ubuntudns  logging=yes cmd="tail -f /dev/null"

添加完成,等待从源拉取文件,status为extracting

[admin@ac3] /container> print
0 name="aadeaf01-572e-4672-b82d-16b08a0a1dc5" tag="ubuntu:latest" os="" arch="" interface=veth1
cmd="tail -f /dev/null" root-dir=disk4/ubuntudns mounts="" dns="" logging=yes status=extracting

当前ubuntu的镜像拉取完成后,status会变为stop

[admin@ac3] /container> print
0 name="aadeaf01-572e-4672-b82d-16b08a0a1dc5" tag="library/ubuntu:latest" os="linux" arch="arm" interface=veth1
cmd="tail -f /dev/null" root-dir=disk4/ubuntudns mounts="" dns="" logging=yes status=stopped

[admin@ac3] /container>

Winbox查看配置

Status变为stopped后,可以启动,点击start,或者命令行配置:

[admin@ac3] /container> start 0

然后通过print命令查看状态,一直running表示运行成功

[admin@ac3] /container> print
0 name="aadeaf01-572e-4672-b82d-16b08a0a1dc5" tag="library/ubuntu:latest" os="linux" arch="arm" interface=veth1
cmd="tail -f /dev/null" root-dir=disk4/ubuntudns mounts="" dns="" logging=yes status=running
[admin@ac3] /container>

使用shell命令进入ubuntu系统

[admin@ac3] /container> shell 0
0;root@ac3: /root@ac3:/#

剩下的就和ubuntu操作一样,首先update下

0;root@ac3: /root@ac3:/# apt-get update
Get:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease [270 kB]
0% [1 InRelease 270 kB/270 kB 100%]

安装需要的工具

0;root@ac3: /root@ac3:/# apt-get install net-tools
0;root@ac3: /root@ac3:/# apt-get install vim

安装dnsmasq

0;root@ac3: /root@ac3:/# apt-get install dnsmasq

在/etc/dnsmasq.d/下创建一个新的域名配置文件

0;root@ac3: ~root@ac3:~# vi /etc/dnsmasq.d/domain.conf

大致写入这些内容转发到223.5.5.5

server=/taobao.com/223.5.5.5
server=/aliyun.com/223.5.5.5
...

启动dnsmasq服务

0;root@ac3: ~root@ac3:~#service dnsmasq start

使用netstat查看dnsmasq服务是否启动

0;root@ac3: ~root@ac3:~# netstat -ntupl
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)

Proto Recv-Q Local Address  Foreign Address  State PID/Program name
tcp   0   0 0.0.0.0:53    0.0.0.0:*   LISTEN      797/dnsmasq
tcp6  0   0 :::53         :::*        LISTEN      797/dnsmasq
udp   0   0 0.0.0.0:53    0.0.0.0:*               797/dnsmasq
udp6  0   0 :::53         :::*                    797/dnsmasq

需要注意RouterOS的/ip/firewall/nat规则要允许172.17.0.2的主机能后被nat转换,

在命令行设置开机启动

[admin@ac3] /container> set 0 start-on-boot=yes
[admin@ac3] /container> print
0 name="aadeaf01-572e-4672-b82d-1608a1dc5" tag="library/ubuntu:latest" os="linux" arch="arm" interface=veth1 cmd="tail -f /dev/null" root-dir=disk4/ubuntudns mounts="" dns="" logging=yes start-on-boot=yes status=running

最后使用内网主机测试172.17.0.2的DNS解析,注意此配置,不支持重启后自动启动dnsmasq服务,需要进入shell启动dnsmasq的服务

特别说明下hAP ac3的内存只有256M,运行的docker只能是哪些内存需求小的的应用,如果内存耗尽,hAP 会自动重启

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章很值,打赏犒劳作者一下