分类: 电脑技术
作者: admin

OpenVZ下启用BBR,UML部署教程 By allient neko

本教程、UML镜像文件由91yun电报群群友@allient neko制作!特别感谢!为了尊重原作者,我们采取繁体中文发布!本人在Debian 8 64位下的OpenVZ测试成功(2.6.32-042stab116.2内核)。

OpenVZ下启用BBR,UML部署教程 By allient neko

UML环境下的内核:

OpenVZ下启用BBR,UML部署教程 By allient neko

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

前言

首先要提醒一下 如果本身自己的 OpenVZ 太低配的話,那麼user-mode linux 跑起來會很艱難。最少 512MB RAM 以上才考慮吧。建議配置是 1G RAM。因為現時user-mode linux 不支援多核心處理。所以 CPU 數量一個就夠了

user-mode linux 相等放在VPS上開一台小小的 virtual machine,不過不建議用這台 virtual machine 放一些重要的資料,畢竟user-mode linux 只是設計用來測試新 kernel 的功能,論穩定度還是沒有正常系統好

开启TUN/TAP

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

OpenVZ下启用BBR,UML部署教程 By allient neko

前置安裝

  1. apt-get install e2fsprogs uml-utilities screen -y

Host OpenVZ 準備網路:

  1. ip tuntap add tap0 mode tap
  2. ip addr add 10.0.0.1/24 dev tap0
  3. ip route add default via 10.0.0.1 dev venet0:0
  4. ip link set tap0 up
  5. iptables -P FORWARD ACCEPT
  6. iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE

設置packet forwarding

先留下 port 22給自己作為 ssh 連線之用

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

接下來其餘的traffic 都可以交給即將出現的子系統

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

如果不想把所有port 都交給子系統的話,可以這樣:

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

把 10000到20000 交給子系統 其他保留給 Host

镜像部署

  1. wget http://soft.91yun.org/uml.tar.xz
  2. tar xvJf uml.tar.xz
  3. cd uml

uml folder 內有兩個是文件:一個是 vmlinux (kernel),一個是 rootfs (filesystem image),而整個最簡單系統就是放在 rootfs 內,這個系統為了方便,已經設定好網路設定,想要改的話只要打開 /etc/network/interfaces 就好。

因為rootfs 一開始只有 300MB 放了系統就幾乎沒容量,先擴大image的容量吧:

  1. resize2fs rootfs 5G

不一定是5G可以換成你喜歡的大小

打開 user-mode linux

  1. ./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 就會很容易當機。

打開後先等一下,等到出現以下的內容

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

/dev/pts/X 就是user-mode linux 放virtual console的地方,隨便記下來一個,這個terminal先不要關起來
打開新的terminal 開新的ssh到機器

  1. screen /dev/pts/1

這時應該是發現terminal什麼都沒有,只要按一下Enter,就會出現登入提示了
login 是 root
而密碼是 91yun.org
在登入之後記得要改密碼

在進入之後會發現….這個系統真的什麼都沒有,連 python都沒有!這樣連SSR也跑不起來呀!
不過可以先跑一下指令

  1. sysctl net.ipv4.tcp_available_congestion_control

看到以下這段就代表有 BBR 了:

  1. net.ipv4.tcp_available_congestion_control = bbr reno cubic highspeed

如果要快速測試,可以先安裝 V2Ray 比較快捷

V2Ray可以作為多功能平台使用,使常用的 shadowsocks 也包含其中
這邊有關於v2ray的教程 https://toutyrater.github.io/v2ray-guide-pages/
如果想要用SSR的話
那可能要耐心一點
把 python git 等等先安裝好

提示:此处如果想部署V2ray,也可试试看博主的脚本一件部署:https://blog.ipatrick.cn/2017/01/04/286.html

 

要離開的話 user-mode linux 的話
按 ctrl-a d
就可以離開了
要再進去的話就用

  1. screen -r

這樣就會例出所有 Detached 的screen
例如:

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

這時只要用

  1. 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 &
    可以把 user-mode linux 放到背景,只要用
    tail ./nohup.out
    就可以看到user-mode linux 的輸出
  3. 沒錯 一台VZ可以開多台 user-mode linux
    不過如果本身機器不夠強
    就不要亂試了
  4. 可以為 user-mode linux 安一個 openssh,那麼就可以由 Host 上傳文件到user-mode linux了
    user-mode linux 也可以連回去 host 拿文件

完成!

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

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

OpenVZ下启用BBR,UML部署教程 By allient neko