PVE 使用 LXC 安装 OpenWrt
基于Proxmox VE 7.4
本文主要根据:ProxmoxVE 7.0 LXC下搭建openwrt软路由,完成配置
创建 OpenWrt 容器主要用作旁路由,使用虚拟网卡,所以其它的用不到的部分没有设置
下载
下载需要使用文件名为 rootfs.tar.gz
的镜像
提供两个官方的镜像(注意,目前immortalwrt镜像版本是21.02
,使用的是iptables
,启动防火墙的时候和PVE宿主机有兼容性的问题,会导致lan口无妨正常访问,重启防火墙可以解决fw3 reload
,或者尝试更换使用nftables
的固件)
可以在 local—>CT模板—>从URL
下载,直接下载到PVE上(下载很慢,也可以下载完后上传上去)
创建LXC
我只分配了一个网口,当作旁路由来用,下面的配置 OpenWrt 也是针对旁路由来配置的
按自己条件修改一下命令,然后在PVE中执行命令即可
1 | pct create 100 \ |
pct create 100
:LXC容器的ID,我设置的100local:vztmpl/
下载或者自己上传的储存路径就在这里,不需要改动,只需要修改后面的文件名,记得带文件扩展名.gz
--rootfs local-lvm:2
:根磁盘2G大小,磁盘位置:local-lvm
默认不需要改动--ostype unmanaged
:系统类型,不需要改动--hostname OpenWrt
:容器名OpenWrt,可以自己命名--arch amd64
:系统架构,x86设备默认amd64--cores 4
:核心数,我直接分配了4个核心nesting=1
:开启嵌套--memory 1024
:分配1G内存--swap 0
:不分配swapunprivileged 1
:使用无特权的容器-net0 bridge=vmbr0,name=eth0
:网络配置,为OpenWrt增加网卡eth0,桥接到主机的vmbr0接口(实际这里的网络配置并不起作用,起作用的还是进入openwrt系统后的配置)gw=192.168.31.1,ip=192.168.31.2/24
:修改网关gw
为自己的路由器IP,ip
自己设置一个没有被占用的IP
创建好之后编辑配置文件
1 | vim /etc/pve/lxc/100.conf |
新增一行
1 | lxc.include: /usr/share/lxc/config/openwrt.common.conf |
因为像 ZeroTier
、Tailscale
等内网穿透工具,需要用到 /dev/tun
设备,所以如果有需要
查看设备号
1 | ls -l /dev/net/tun |
一般都是
root@pve:~# ls -l /dev/net/tun
crw-rw-rw- 1 root root 10, 200 May 1 01:16 /dev/net/tun
所以在配置文件中新增两行
1 | lxc.cgroup2.devices.allow: c 10:200 rwm |
同理,如果想使用openwrt拨号,需要用到 /dev/ppp
设备
1 | ls -l /dev/ppp |
一般都是
root@pve:~# ls -l /dev/ppp
crw——- 1 root root 108, 0 May 1 01:16 /dev/pp
所以在配置文件中新增两行
1 | lxc.cgroup2.devices.allow: c 108:0 rwm |
配置 OpenWrt
下面的配置是针对旁路由来配置,那些需要使用旁路由的设备手动设置网关到旁路由
LXC 容器创建完成之后,直接启动容器
进入控制台,修改一下 lan
口的 ipaddr
1 | vim /etc/config/network |
默认的是192.168.1.1
,给它修改为上面创建时候配置的 192.168.2.2
1 | config interface 'lan' |
在最后再加上DNS和网关的配置,DNS用的阿里云,网关就是路由器IP
配置好以后的
1 | config interface 'lan' |
重启网络服务
1 | service network restart |
访问OpenWrt后台:http://192.168.2.2
immortalwrt的默认密码为空,直接登录即可,这时候的OpenWrt应该已经可以正常访问外网了
网页上的一些配置
主要就是设置LAN接口
在网络—>接口
编辑,将设备那里从默认的桥接”br-lan“改为”eth0(lan)“(因为就分配了一个网口,我觉得没必要使用桥接)
关闭DHCP服务
问题解决
这时候用作旁路由,我出现了下载速度慢,上传速度慢的问题,或者干脆不能上网(如果没有遇到问题的话,不需要管这部分)
在PVE的OpenWrt控制台,修改防火墙(或者在 网络—>防火墙—>自定义规则
里面添加)
1 | vim /etc/firewall.user |
加入以下配置(eth0就是创建LXC容器时候最后设置的name=eth0)
1 | iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE |
关闭 启用 SYN-flood 防御
(在 网络—>防火墙—>常规设置
里面)
重启防火墙
1 | service firewall restart |
关于这条命令
大意就是做了nat转换,上网数据全部过了一次旁路由,和外界交互全部是旁路由在进行,而不是你的设备
如果不想使用这条命令,在网络—>接口,那里添加一个wan口,使用DHCP协议,网卡选择和lan口一样的eth0即可
此时wan口和lan口共用eth0,wan口发出数据时,会自动做SNAT,一样是做了nat转换
当然如果不想设置nat转换规则,主路由性能足够的话,关闭硬件nat,启用shortcut-fe 加速,也可以解决下载速度慢,上传速度慢的问题
如果是小米路由器或者其他品牌路由器,也可以尝试在 DHCP服务
那里设置非旁路网关的DNS
其它设备的设置
修改一下网关和DNS服务器就可以了
如果路由器有使用 dnsmasq
,也可以在 dnsmasq
加入配置,指定mac地址使用指定的网关和DNS
1 | # 设置一个标签OpenWrt,为标签的网关设置为192.168.2.2 |