前几天整了台 R86S 万兆版来当软路由,图的是这玩意儿够小并且有光口,这样就能自己整个猫棒多合一了。
先说说 R86S 万兆版的一些小遗憾:
首先规划一下使用。PVE 作为主系统。不用 ESXI 是因为我更熟悉折腾 Debian 系的 Linux。然后 PVE 可以安装各种虚拟机了。首先需要 OpenWRT 作为路由系统。这里我选择使用 LXC 形式安装,性能更好而且没有直通的烦恼。当然 LXC 不用网桥依然会独占整个设备的,所以感知不强。但是 LXC 少跑一个内核、少了层虚拟层、驱动由强大的 Debain 宿主管理,还是方便太多了。然后例牌装个 LXC 的 Privileged 的 Ubuntu 用来跑点 docker 服务。
/usr/bin/proxinstall 脚本(pve8 下是 /usr/share/perl5/Proxmox/Sys/Block.pm),然后修改:
} elsif ($dev =~ m|^/dev/[^/]+/hd[a-z]$|) {
return "${dev}$partnum";
} elsif ($dev =~ m|^/dev/nvme\d+n\d+$|) {
return "${dev}p$partnum";
+ } elsif ($dev =~ m|^/dev/mmcblk\d+$|) {
+ return "${dev}p$partnum";
} else {
die "unable to get device for partition $partnum on device $dev\n";
}
退出 shell 即可继续安装。
pct create 100 local:vztmpl/openwrt-21.02.3-x86-64-rootfs.tar.gz --rootfs local-lvm:8 --ostype unmanaged --hostname Openwrt --arch amd64 --memory 2048 --swap 0 -net0 bridge=vmbr0,name=eth0
其中 100 为 vmid;*-rootfs.tar.gz 为上传的 template 的文件名;:8 表示 rootfs 的大小为 8G;-net0 bridge=vmbr0,name=eth0 表示把容器内的 eth0 给桥接到 vmbr0 上;剩下的都很显然。不过需要注意这里的 ostype 不能省略。
3. 编辑文件 /etc/pve/lxc/100.conf,追加以下行:
features: mknod=1,nesting=1
lxc.include: /usr/share/lxc/config/openwrt.common.conf
lxc.cgroup.devices.allow: c 108:0 rwm
lxc.mount.entry: /dev/ppp dev/ppp none bind,optional,create=file
lxc.net.1.type: phys
lxc.net.1.link: enp4s0
lxc.net.1.flags: up
lxc.net.2.type: phys
lxc.net.2.link: enp2s0
lxc.net.2.flags: up
lxc.net.3.type: phys
lxc.net.3.link: enp3s0
lxc.net.3.flags: up
lxc.net.4.type: phys
lxc.net.4.link: enp4s0d1
lxc.net.4.flags: up
这里我把 eth0 以外的口都给「直通」给了容器(其实是共享了设备文件),并且允许容器使用 major=108,minor=0 的设备,这个设备其实是 ppp 设备(ls -l /dev/ppp 就能看到了)。另外引入了 openwrt.common.conf,这个是 PVE 给 openwrt 的一些通用配置。
192.168.1.1 了。iface.vlan。广东电信的上网 vlan 是 41、IPTV 是 45。另外如果拨号 IPTV 时候,由于电信不响应 LCP echo,所以需要关掉它。具体做法是在加入 option keepalive '0 5'。init.rc:
#!/bin/sh /etc/rc.common
# Ping pon stick
START=99
STOP=99
start() {
ping 192.168.0.1 >/dev/null 2>&1 &
echo $! > /var/run/ping_stick.pid
}
stop() {
if [ -f /var/run/ping_stick.pid ]; then
kill -9 $(cat /var/run/ping_stick.pid)
rm -f /var/run/ping_stick.pid
fi
}
br-lan 设置一个:6,192.168.1.1。
粤公网安备44030002005029号