apernet / tcp-brutal

GNU General Public License v3.0
619 stars 67 forks source link

脚本最好根据系统先运行一下 apt update。同时问下,如果 docker 里面,tcp brutal 也能使用吗? #16

Closed fscarmen closed 5 months ago

fscarmen commented 5 months ago
  1. 我在新的debian 还是 ubuntu 上,一开始就安装 tcp brutal 脚本,发现不行,我就 apt update 一下再安装就行了,所以建议脚本是否先检测判断一下,或者无脑先 apt update

2.我想做个sing-box的容器版本,请问在容器里能有这个功能吗?宿主机需要处理什么吗?

haruue commented 5 months ago

请问在容器里能有这个功能吗?宿主机需要处理什么吗?

对于虚拟容器(如 docker、 lxc、 lxd、 systemd-nspawn), 容器内的程序是直接使用宿主机的内核的, 因此你需要在宿主机安装并载入内核模块, 然后容器内的程序就可以使用它。

fscarmen commented 5 months ago

宿主机debian12安装了,容器是alpine也行吗?因为我试过直接在kvm的 alpine系统安装脚本不行

haruue commented 5 months ago

alpine 运行不了脚本的原因是, alpine 没有 dkms, 但是 tcp-brutal 的安装脚本需要 dkms 才能正常运行。 利用 dkms, 我们可以确保在每次内核更新时为新内核编译 tcp-brutal 模块。

然而, 对于容器来说, 你不需要(也不能)在容器里运行安装脚本, 只需要宿主机支持 dkms, 并把内核模块安装到宿主机即可, 容器内使用的是哪个 Linux 发行版基本上不会成为问题。

此外, 对于希望在 kvm 里运行的 alpine 上使用 tcp-brutal 的情况。 如果你不打算后续对 alpine (的内核)进行更新, 我认为安装一套完整的编译环境外加 kernel headers 和 modprobe, 把 tcp-brutal 仓库 clone 或者复制到虚拟机内再 make && make load 是最简单的方法。 如果你希望频繁对 alpine 进行更新, 那么你可能需要另外编写一套 akms 配置来实现类似于 dkms 的效果。

fscarmen commented 5 months ago

谢谢大佬,学习了。

haruue commented 5 months ago

我们更新完安装脚本之后会 close 这个 issue 。

fscarmen commented 5 months ago

判断一下是alpine等没dkms的系统,就前置报不支持并退出,这样高效!

haruue commented 5 months ago

判断一下是alpine等没dkms的系统,就前置报不支持并退出,这样高效!

没有已安装 dkms 并且没有支持的包管理器本来就会直接退出。