Blog

Openvz下安装BBR加速

    本文转自91yun,在Debian 8 64位下的OpenVZ测试成功(2.6.32-042stab116.2内核),请在部署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 的功能,論穩定度還是沒有正常系統好
先去 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 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
可以離開 sudo 了,下載預先設定好的内核,然后解壓縮

wget http://d.zmrbk.com/vps/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,就會出現登入提示了
帐号 是 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 -y
如果要快速測試,可以先安裝 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 &
可以把 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

没有评论

Leave a Reply