多地组网,这两年基本都是各端都通过RouterOS来组隧道了,偶尔还是会有其他的诉求,自从RouterOS更新7.1以后就正式支持Docker容器了,当然,在RouterOS上这个功能是Container。这次,就以部署gost为例,简单的快速完成部署。
RouterOS开启Container
如果你的RouterOS没有安装Container组件,可以去官网下载对应版本的Extra packages
https://mikrotik.com/download,解压后把container.npk拖到winbox里面,重启RouterOS后,就能看到Container功能了。
但是这个时候Container还不能正常使用,还需要开启,在winbox里面打开Teminal,执行以下命令,系统会提示你需要断开电源重新启动才会生效,注意一定要断开电源重启(不能通过系统的reboot重启),硬件机器比较简单,如果是vps安装的,可以尝试硬重启。
1 | /system/device-mode/update container=yes |
重启后,检查是否开启成功:
1 | /system/device-mode/pr |
配置Container网络
创建VETH设备,并配置IP地址和网关,同时,创建一个网桥,网桥的IP就是VETH的网关IP,并将VETH设备加入该网桥,在最后配置masquerade
,命令参考如下:
1 | /interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1 |
配置Container基础配置
1 | /container/config/set ram-high=512 registry-url=https://registry-1.docker.io tmpdir=disk1/pull |
准备镜像
虽然Container支持拉取远程镜像,但是实测稳定性极差,所以我们选择找一台相同架构的linux服务器,部署docker后,通过这台设备来到处镜像供RouterOS使用,这里不提供导出后的镜像下载链接了,有需要的可以联系我。
以下操作在同架构的服务器上执行,供参考:
1 | docker save xxxx:latest > xxxx.tar |
创建容器
准备好镜像后,将镜像文件上传到winbox,然后在winbox的Container菜单,通过添加创建,选择File对应刚才的镜像文件,interface选择刚才创建的设备veth1,其他参数根据需要配置即可。
我这里的镜像是基于gost v3创建的,创建容器命令参考:
1 | /container |
配置端口转发
配置容器启动后,我们需要访问到容器,还需要配置一下dst-nat规则,以下配置供参考:
1 | /ip firewall nat |