教程:手把手教你 OpenVZ 下部署 UML,启用 BBR,为你单边加速 by allient neko ( 更新 32 位系统的内核与 rootfs 档)

  1. 前言
  2. 前置安装
  3. Host OpenVZ 准备网路:以下都要在 sudo 下进行
  4. 设置 packet forwarding
  5. 打开 user-mode linux
  6. tips:

sh2.png

UML 环境下的内核:

sh2.png

请在部署 UML 前仔细阅读主机商的 Terms of Service 和 Acceptable Usage Policy ,以防被封禁主机,由此带来的损失由读者本人承担。 树立国人良好形象,切勿随意争议。

前言

首先要提醒一下 如果本身自己的 OpenVZ 太低配的话,那么 user-mode linux 跑起来会很艰难:最少 512MB RAM 以上才考虑吧, ( 注:评论里有访客反馈在 128M 的 NAT 上也跑起来了) 建议配置是 1G RAM 。因为现时 user-mode linux 不支援多核心处理,所以 CPU 数量一个就够了

user-mode linux 相等放在 VPS 上开一台小小的 virtual machine ,不过不建议用这台 virtual machine 放一些重要的资料,毕竟 user-mode linux 只是设计用来测试新 kernel 的功能,论稳定度还是没有正常系统好

先去 control panel 打开 TUN/TAP 的功能,如果是 SolusVM 的话通常 setting 就可以看到 TUN/TAP 的设定

前置安装

apt-get install e2fsprogs uml-utilities screen

Host OpenVZ 准备网路:以下都要在 sudo 下进行

ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE

设置 packet forwarding

先留下 port 22 给自己作为 ssh 连线之用

iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN

接下来其余的 traffic 都可以交给即將出现的子系统

iptables -t nat -A PREROUTING -i venet0 -j DNAT --to-destination 10.0.0.2

如果不想把所有 port 都交给子系统的话,可以这样:

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 10000:20000 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 10000:20000 -j DNAT --to-destination 10.0.0.2

把 10000 到 20000 交给子系统 其他保留给 Host

可以离开 sudo 了,下载预先设定好的内核,然后解压缩

wget http://soft.91yun.org/uml/32/uml.tar.xz #32 位系统下载该压缩包
wget http://soft.91yun.org/uml/64/uml.tar.xz #64 位系统下载该压缩包
tar xvJf uml.tar.xz
cd uml # 即最新版本解压的文件夹,注意看上一行解压缩的路径

解压缩开的內有两个是文件:一个是 vmlinux (kernel) ,一个是 rootfs (filesystem image) ,而整个最简单系统就是放在 rootfs 內,这个系统为了方便,已经设定好网路设定,想要改的话只要打开 /etc/network/interfaces 就好。

因为 rootfs 一开始只有 300MB 放了系统就几乎没容量,先扩大 image 的容量吧:

resize2fs rootfs 5G

不一定是 5G ,可以换成你喜欢的大小。有的时候要运行下 e2fsck -f rootfs

打开 user-mode linux

./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m

256m 是分配给 user-mode linux 的 RAM 大小,如果要跑梯子的话,还是建议有 256m 为佳,这就是为什么会建议有 1GB RAM 的原因,如果分配太多 RAM 给 user-mode linux ,那么 Host 就跑不动了,但如果分配太少 RAM 给 user-mode linux ,那么 user-mode linux 就会很容易当机。

打开后先等一下,等到出现以下的內容

Virtual console 3 assigned device '/dev/pts/1'
Virtual console 4 assigned device '/dev/pts/2'
Virtual console 5 assigned device '/dev/pts/3'
Virtual console 6 assigned device '/dev/pts/4'
Virtual console 2 assigned device '/dev/pts/5'
Virtual console 1 assigned device '/dev/pts/6'

/dev/pts/X 就是 user-mode linux 放 virtual console 的地方,隨便记下来一个,这个 terminal 先不要关( 注:如果想关掉 ssh 后继续保持 uml 的运行,请看下面 tips 的第二条。

打开新的 terminal 开新的 ssh 到机器

screen /dev/pts/1

这时应该是发现 terminal 什么都没有,只要按一下 Enter ,就会出现登入提示了

login 是 root

而密码是 91yun.org

在登入之后记得要改密码

在进入之后会发现 …. 这个系统真的什么都没有,连 python 都没有!这样连 SSR 也跑不起来呀!

不过可以先跑一下指令

sysctl net.ipv4.tcp_available_congestion_control

看到以下这段就代表有 BBR 了

net.ipv4.tcp_available_congestion_control = bbr reno cubic highspeed

不论是怎样还是先 update 一下 apt 吧

apt update

如果要快速测试,可以先安装 V2Ray 比较快捷

V2Ray 可以作为多功能平台使用,使常用的 shadowsocks 也包含其中

这边有关於 v2ray 的教程 https://toutyrater.github.io/v2ray-guide-pages/

可以把 SS 开起来使用

apt install curl zip unzip
bash <(curl -L -s https://install.direct/go.sh)
systemctl start v2ray

打开 /etc/v2ray/config.json ,很快就可以看到

"inbound": {
    "port": 20722,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "b4b413e4-24b9-4bc9-95a6-93f4bef419bc",
          "level": 1,
          "alterId": 64
        }
      ]
    }

当中 20722 就是 port , id 是密码

如果想要用 SSR 的话

那可能要耐心一点

python git 等等先安装好

要离开的话 user-mode linux 的话

ctrl-a d

就可以离开了

要再进去的话就用

screen -r

这样就会例出所有 Detached 的 screen

例如 :

There are several suitable screens on:
1007.pts-7.localhost (02/24/17 10:59:14) (Detached)

这时只要用

screen -r 1007.pts-7.localhost

就可以重新进入到离开的 screen 。如果想要关掉 user-mode linux 的话,建议还是用 screen 进入到 user-mode linux ,用 shutdown now 去关掉,不建议在 host 上用 kill 把 uml process 关闭,因为这等同於 hard shutdown

tips:

  1. 暂时 user-mode linux 並没有多核心支援,所以就算 host 有多於一个核心也不会对 user-mode linux 有影响
  2. 利用
nohup ./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m &disown

可以把 user-mode linux 放到背景,只要用

tail ./nohup.out

就可以看到 user-mode linux 的输出

  1. 没错 一台 VZ 可以开多台 user-mode linux ,不过如果本身机器不够强,就不要乱试了。

  2. 可以为 user-mode linux 安一个 openssh ,那么就可以由 Host 上传文件到 user-mode linux 了, user-mode linux 也可以连回去 host 拿文件

完成!作者另外给了几篇文章,对于折腾党,可以看看:

怎样从零开始盖 uml 不过只有 KVM 这种有 loop dev 的 才可以用!

bookmark

bookmark

最后,再次感谢 电报群群友 @allient neko !

并送上一个部署了 BBR 后,辣鸡机房(亚特兰大 Colocrossing 机房)看 1080p 的照片。

sh2.png


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//