fang186 发表于 2024-2-27 15:16

routeros通过container安装openwrt实现透明网关

本帖最后由 fang186 于 2024-2-27 15:21 编辑

首先感谢zengkid的[Router OS] routeros通过container安装clash实现透明网关和stu1025e的 MikroTik-RouterOS-7.13永久L6授权 (支持各种ESXI PVE 2.5G i225 i226网卡直通)两个帖子,给了我思路。
本人一直就是一个伸手党,在ros和clash方面近乎一个白痴。爬了几天的论坛,折腾了无数次routeros通过container安装clash,无一成功。主要是知识太少,有几次container安装clash倒是成功了,但UI面板却始终搞不好。然后换一种思路,直接通过container安装openwrt,没想到竟是出乎意料的简单。当然并不是所有的编译包都能用,我试过官方的rootfs.tar.gz包,导入、运行都正常,但不能联网,盲猜是新的ntf防火墙与ros适配不好,但转换之后才10MB的容量很是诱人。

感谢Kiddin,我是用他的的定制包测试成功的,他的站点上可以定制固件,但非注册会员不能直接生成rootfs.tar.gz包(白嫖也是有限度的),我是在PVE shell里把squashfs-combined.img.gz转换成tar.gz,导入Docker Desktop,再导出为.tar包,就可以导入routeros的container了。
具体步骤:
0、环境:X86-64,pve8.1.4,虚拟安装routeros,双网卡,内网IP段:192.168.5.0/24,ROS的ip地址:192.168.5.1,openwrt地址:192.168.5.2(虚拟网卡veth1)。
1、下载自己喜欢的固件并转换成LXC可用的.tar.gz包;
请参考ethan.wong的从squashfs-combined.img.gz中一键提取LXC模板的脚本,他这个太高端、大气、上档次了!我看不大懂,我是一行一行复制到pve shell执行的,当然根据自己的情况作了点小改动,然后用xftp等传输工具将openWrt.tar.gz复制到D盘根文件夹备用。
2、下载安装Docker Desktop,导入.tar.gz包转换输出.tar包
安装Docker Desktop后,打开“命令提示符”(Win+R调出运行窗口,输入cmd确定),假设.tar.gz包在D盘根文件夹,则输入 docker import d:\openwrt.tar.gz openwrt 回车,再输入docker save -o d:\openwrt.tar openwrt 回车,则会在D盘根文件夹生成openwrt.tar文件。docker import d:\openwrt.tar.gz openwrt
docker save -o d:\openwrt.tar openwrt
3、winbox登录MikroTik-RouterOS,开启容器。打开终端,输入 /system/device-mode/update container=yes ,会提示强制断电,重新启动生效。(这里在PVE里面选中虚拟机,点“重置”就可以了)

输入 /system/device-mode/print 检查状态,返回mode: enterprisecontainer: yes字样表示成功了。
4、添加虚拟网卡'veth1',上传.tar包,可以用它自带的"Files"实现,不过速度感人,大概1MB/秒,我是用xftp传的,大约20MB/秒。


5、打开winbox里的终端,输入
/container/add file=openwrt.tar interface=veth1 hostname=OpenWrt cmd=/sbin/init root-dir=container/openwrt点左边的“Container"打开容器窗口,大约几秒导入完成,状态变成”stopped“,选中,点上方的”Start“按钮,直到状态变成”running“,这些操作也可以在终端进行

/container/start number=0 # 启动容器修改IP地址、网关等等
/container/shell number=0 # 进入容器的shell

vi /etc/config/network #编辑openwrt网络配置文件按”i"进入编辑状态,删除有关桥接config device节点(非必须),把config interface 'lan'节点里面的'br-lan'改成'eth0',改好ip地址、网关、dns后,按esc退出编辑状态,输入 :wq 退出,改完的像这个样子

config interface 'loopback'
      option device 'lo'
      option proto 'static'
      option ipaddr '127.0.0.1'
      option netmask '255.0.0.0'

config globals 'globals'
      option packet_steering '1'

config interface 'lan'
      option device 'eth0'
      option proto 'static'
      option ipaddr '192.168.5.2'
      option netmask '255.255.255.0'
      option gateway '192.168.5.1'
      option delegate '0'
      list dns '223.5.5.5'

不出意外的话,浏览器打开http://192.168.5.2,就见到熟悉的openwrt界面!然后在ros里面把网关和dns指向openwrt就完了,那里面住着一只小猫咪。

本人转换,可直接上传ros的tar包阿里云盘下载,由于限制了zip共享,于是加了张牛姐的相片,文件名为“3.jpg”,下载后把扩展名改成“3.zip”再解压。感谢大家多年的分享,也不设置什么回复可见之类的了。(op的用户名和密码都是root)
https://www.alipan.com/s/vXmb3DxsAqg


mantouboji 发表于 2024-2-27 15:20

脱了裤子放屁,没有必要的复杂。

fang186 发表于 2024-2-27 15:23

mantouboji 发表于 2024-2-27 15:20
脱了裤子放屁,没有必要的复杂。

您说得很对,咱就是瞎折腾!
不过容器和虚拟机互ping,延迟在0.1-0.2ms之间,觉得还是可以的。

GNUisNotUnix 发表于 2024-2-27 15:56

rootfs.tar.gz 可以从 openwrt 下载站获取
https://downloads.openwrt.org/releases/23.05.2/targets/x86/64/

或者 immortalwrt 下载站也可以
https://downloads.immortalwrt.org/releases/23.05.1/targets/x86/64/

进入容器后用 uci 修改 ipv4/gateway/dns 更简单
https://openwrt.org/docs/guide-user/network/openwrt_as_clientdevice

至于 app,可以 opkg install open 小猫咪,也可以通过 wget 安装 shell 小猫咪

fang186 发表于 2024-2-27 16:14

edywh 发表于 2024-2-27 15:56
rootfs.tar.gz 可以从 openwrt 下载站获取
https://downloads.openwrt.org/releases/23.05.2/targets/x86/6 ...

试过官方的,下载包只有4MB多一点,转换后也才11MB左右,在PVE LXC容器里开嵌套可以联网,但在ROS的容器里不行,我也不知道啥原因,求大佬指点一下,如果这个能行的话,体积应该会比我现在用的小一半左右。
谢谢提醒,的确专用的uci命令要好用一些,原来没学过:L

mantouboji 发表于 2024-2-27 17:22

fang186 发表于 2024-2-27 15:23
您说得很对,咱就是瞎折腾!
不过容器和虚拟机互ping,延迟在0.1-0.2ms之间,觉得还是可以的。 ...

去搜索我的帖子,用wireguard和OSPF分流,不需要什么狗皮旁路由,更不需要什么OpenWRT这么庞大的玩意儿。

GNUisNotUnix 发表于 2024-2-27 17:43

fang186 发表于 2024-2-27 16:14
试过官方的,下载包只有4MB多一点,转换后也才11MB左右,在PVE LXC容器里开嵌套可以联网,但在ROS的容器 ...

通常 Linux distro 用 docker 部署 openwrt 容器,需要新建 macvlan 网络接口,但 routeros container 不支持 macvlan,需要使用 veth 虚拟以太网接口

fang186 发表于 2024-2-27 18:42

mantouboji 发表于 2024-2-27 17:22
去搜索我的帖子,用wireguard和OSPF分流,不需要什么狗皮旁路由,更不需要什么OpenWRT这么庞大的玩意儿。 ...

您那个太复杂太高端了,作为一个小白我看不懂,只能用容量换低难度。再者openwrt作为一个轻量化平台,添加各种插件也方便,适合和我一样不爱学习的低端小白而已。

fang186 发表于 2024-2-27 18:57

GNUisNotUnix 发表于 2024-2-27 17:43
通常 Linux distro 用 docker 部署 openwrt 容器,需要新建 macvlan 网络接口,但 routeros container 不 ...

是用的veth接口,官方包和定制包的最大区别是一个防火墙用的nftable,另一个是iptable,怀疑问题出在这里。但我人笨,不懂nftable规则配置,只有等以后慢慢学习。
两者容量差别是很明显的,官方包安装pw和猫咪后占用空间不到120MB,而定制包仅安装完猫咪就有245MB。内存占用前者也只有后者的一半左右。

lyy506 发表于 2024-2-27 22:13

你看了一下ROS的CPU利用率吗,我前段时间试用最新版的openwrt,ROS的CPU利用率会一直保持在100%

lspzj 发表于 2024-2-27 23:46

兄弟你的ros容器链接失效了

319226 发表于 2024-2-28 02:06

还用clash???????:)

fang186 发表于 2024-2-28 12:50

本帖最后由 fang186 于 2024-2-28 12:51 编辑

lspzj 发表于 2024-2-27 23:46
兄弟你的ros容器链接失效了
链接: https://pan.baidu.com/s/1UgP9pLQOeSkcGSkj4E0nRg?pwd=wga5 提取码: wga5
阿里恶心人啊

fang186 发表于 2024-2-28 13:01

lyy506 发表于 2024-2-27 22:13
你看了一下ROS的CPU利用率吗,我前段时间试用最新版的openwrt,ROS的CPU利用率会一直保持在100% ...


fang186 发表于 2024-2-28 13:04

319226 发表于 2024-2-28 02:06
还用clash???????

对,就是因为我配置不好容器安装clash,于是心一横,塞了个openwrt进去!:L
页: [1] 2
查看完整版本: routeros通过container安装openwrt实现透明网关