前言
买了某商家的VPS,是4c16g的高配。不拿来装PVE直接跑VyOS总觉得浪费了。但是这家的VPS有个严重的问题,就是使用嵌套虚拟化后会在几天内随机冻结。折腾了快一个月,都没有办法解决。于是只能想办法把VyOS跑在PVE CT上。可是搜来搜去都没有搜到合适的Template,而且很多人也说,在LXC中运行的VyOS只能使用直通网卡 https://forum.vyos.io/t/develop-build-vyos-on-lxd/10884/5 ,但这样就与用LXC的意义背道而驰了。因此,我尝试解决(或者想办法忽略)了这些问题,打包出了一个勉强能用的LXC Template。
首先要感谢 https://github.com/jack9603301/vyos-on-lxd ,构建的大体思路就是参考了这个仓库。
构建
直接放Github的链接: https://github.com/KawaiiNetworks/vyos-lxc 。请大家跟着这个步骤去修改文件。如果不想自己弄,也可以用我打包好的: https://github.com/KawaiiNetworks/vyos-lxc/releases/tag/vyos-1.5-rolling-202412160007-generic-amd64 。
自动脚本还在计划当中,因为修改起这些文件不太方便。
使用
在PVE中导入模板,并创建CT。设置中Console Mode原来是tty,改成console。不知道为什么PVE的tty在VyOS当中认不到,所以用tty会没有输出。
然后Features勾选fuse mknod nesting。fuse一定要勾,mknod和nesting我没有试过不勾选的情况。大家可以自行测试。
另外,VyOS的一些功能需要有对应的内核模块,LXC当中是无法加载的,需要我们在宿主机加载。比如NAT功能需要modprobe nft_nat
。另外conntrack也需要对应的模块,没加载模块的话commit会报错,只需要对着报错的提示去宿主机加载对应模块就好了。
目前测试大部分常用功能都正常使用。虽然有时候会有warning或者报错,但是实际上不影响。
其他
BGP Player们可以看看我做的自动脚本 https://github.com/KawaiiNetworks/as27523-vyos-scripts ,通过一个yaml文件自动生成配置文件并带有定时刷新,告别手写过滤器。