
项目地址
https://github.com/Chion82/netfilter-full-cone-nat
https://github.com/proxmox/pve-kernel
https://github.com/sxx1314/pve-kernel
预编译deb下载:https://github.com/sxx1314/pve-kernel
一. 推荐使用debian11编译。可以使用docker来编译。
docker pull debian:bullseye docker run debian:bullseye
二. 前置操作
1. 添加pve的源
echo “deb http://download.proxmox.wiki/debian/pve bullseye pve-no-subscription” >> /etc/apt/sources.list
2. 添加 Proxmox VE 存储库密钥:
wget http://download.proxmox.com/debian/proxmox-release-bullseye.gpg-O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
3. 更新源
apt update
4. 安装编译环境
apt install devscripts asciidoc-base automake bc bison cpio dh-python flex git kmod libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev libtool lintian lz4 perl-modules python2-minimal rsync sed sphinx-common tar xmlto zlib1g-dev dwarves zfsd
5.新建普通用户
groupadd pve #新建组 useradd -m pve -g pve -s /bin/bash -d /home/pve passwd pve su pve #切换到用户
如果需要回到root用户直接exit退出即可,另外没有授予pve su权限 以及没有安装sudo,所以pve用户无法安装软件。可以自己授权不做赘述。
三. 源码配置
1. git clone
cd ~ git clone git://git.proxmox.com/git/pve-kernel.git cd pve-kernel git submodule update —init submodules/ubuntu-jammy
2 修改配置文件
修改Makefile文件
vim Makefile
找到
cat ${BUILD_DIR}/${KERNEL_SRC}/debian.master/config/config.common.ubuntu ${BUILD_DIR}/${KERNEL_SRC}/debian.master/config/${ARCH}/config.common.${ARCH} ${BUILD_DIR}/${KERNEL_SRC}/debian.master/config/${ARCH}/config.flavour.generic > ${KERNEL_CFG_ORG}
和
cp ${KERNEL_CFG_ORG} ${BUILD_DIR}/${KERNEL_SRC}/.config
前面加 # 号 注掉自动生成config
保存
手动生成.config(以下脚本就是基于上面注掉的脚本改来的)
cat debian.master/config/config.common.ubuntu debian.master/config/amd64/config.common.amd64 debian.master/config/amd64/config.flavour.generic > .config
执行后,已经进到了~/pve-kernel/submodules/submodules/ubuntu-jammy/目录
这里还需要修改几个小玩意:
CONFIG_SYSTEM_TRUSTED_KEYS="" 这里有两个证书需要清空路径。
当然如果你想保持安全性,可以
openssl req -x509 -newkey rsa:4096 -keyout certs/mycert.pem -out certs/mycert.pem -nodes -days 3650
把上述目录修改为生成证书路径。
生成x509的证书给kernel使用,增加安全性。
意义在于,以后所有外部加载的kernel二进制文件都需要用此key签名才能加载。
3. 现在添加xt_FULLCONENAT
3.1 复制 xt_FULLCONENAT.c 到 ubuntu-jammy/net/netfilter/xt_FULLCONENAT.c
cd ~/pve-kernel/submodules/ubuntu-jammy/net/netfilter wget https://raw.githubusercontent.com/sxx1314/pve-kernel/main/netfilter-full-cone-nat/xt_FULLCONENAT.c
这个文件是修复之后可以适用于5.15kernel的,原项目的不行。
3.2 将以下行添加到ubuntu-jammy/net/netfilter/Makefile
obj-$(CONFIG_NETFILTER_XT_TARGET_FULLCONENAT) += xt_FULLCONENAT.o
3.3 打开ubuntu-jammy/net/ipv4/netfilter/Kconfig,将以下代码插入到config IP_NF_TARGET_NETMAP部分之后:
config IP_NF_TARGET_FULLCONENAT tristate “FULLCONENAT target support” depends on NETFILTER_ADVANCED select NETFILTER_XT_TARGET_FULLCONENAT help This is a backwards-compat option for the user’s convenience (e.g. when running oldconfig). It selects CONFIG_NETFILTER_XT_TARGET_FULLCONENAT.
3.4 打开ubuntu-jammy/net/netfilter/Kconfig,将以下代码插入到config NETFILTER_XT_TARGET_NETMAP部分之后:
config NETFILTER_XT_TARGET_FULLCONENAT tristate ‘“FULLCONENAT” target support’ depends on NF_NAT help Full Cone NAT To compile it as a module, choose M here. If unsure, say N.
确保现在在目录`~/pve-kernel/submodules下
3.5 运行 make menuconfig and 选择: Networking support -> Network options -> Network packet filtering framework (Netfilter) -> IP: Netfilter Configuration -> <M> FULLCONENAT target support
3.6 以下添加拔号内核模块
运行 make menuconfig and 选择: Device Drivers > Network device support > PPP(point-to-point protocol) support 由*改为M
保存
四.编译
cd ~/pve-kernel make
make :直接多线程编译,可以跑满所有线程。
make V=s :单项目编译输出log,用户排错。
这里操作和openwrt一致。


相关文章本文地址:https://blog.sxx1314.com/linux/618.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录















