<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="OpenVZ下启用BBR,UML部署教程 By allient neko">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2017-03-17 09:00<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
OpenVZ下启用BBR,UML部署教程 By allient neko

本教程、UML镜像文件由91yun电报群群友@allient neko制作！特别感谢！为了尊重原作者，我们采取繁体中文发布！本人在Debian 8 64位下的OpenVZ测试成功（2.6.32-042stab116.2内核）。

UML环境下的内核：

请在部署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 的設定

前置安裝
apt-get install e2fsprogs uml-utilities screen -y

Host OpenVZ 準備網路：
ip tuntap add tap0 mode tap 
ip addr add 10.0.0.1/24 dev tap0 
ip route add default via 10.0.0.1 dev venet0:0 
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 --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

镜像部署
wget http://soft.91yun.org/uml.tar.xz
tar xvJf uml.tar.xz
cd uml

uml folder 內有兩個是文件：一個是 vmlinux (kernel)，一個是 rootfs (filesystem image)，而整個最簡單系統就是放在 rootfs 內，這個系統為了方便，已經設定好網路設定，想要改的話只要打開 /etc/network/interfaces 就好。

因為rootfs 一開始只有 300MB 放了系統就幾乎沒容量，先擴大image的容量吧：

resize2fs rootfs 5G

不一定是5G可以換成你喜歡的大小

打開 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先不要關起來
打開新的terminal 開新的ssh到機器

screen /dev/pts/1

這時應該是發現terminal什麼都沒有，只要按一下Enter，就會出現登入提示了
login 是 root
而密碼是 91yun.org
在登入之後記得要改密碼

在進入之後會發現&hellip;.這個系統真的什麼都沒有，連 python都沒有！這樣連SSR也跑不起來呀！
不過可以先跑一下指令

sysctl net.ipv4.tcp_available_congestion_control

看到以下這段就代表有 BBR 了:

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
就可以離開了
要再進去的話就用

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:

    暫時 user-mode linux 並沒有多核心支援，所以就算 host 有多於一個核心也不會對 user-mode linux 有影響

    nohup ./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m &amp;
    可以把 user-mode linux 放到背景，只要用
    tail ./nohup.out
    就可以看到user-mode linux 的輸出

    沒錯 一台VZ可以開多台 user-mode linux
    不過如果本身機器不夠強
    就不要亂試了

    可以為 user-mode linux 安一個 openssh，那麼就可以由 Host 上傳文件到user-mode linux了
    user-mode linux 也可以連回去 host 拿文件


完成！
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
