OpenVZ Ubuntu uml开启BBR

使用一键安装脚本安装BBR加速,有时会出现连接不上的情况,不知道是VPS的问题还是BBR的问题。之前自己手动安装的BBR一直用的很稳定,现在换回之前的uml+bbr,记录一下安装步骤,系统为Ubuntu 14.04 32bit。

参考链接
【v友福利】OpenVZ uml 开启BBR之最小镜像,仅需 16M 内存!

转自v2ex:https://www.v2ex.com/t/345786

# 转帖请注明出处,这是最起码的尊重。
# 世界本就如此艰难,何必还要让它更艰难呢。

# 先去 VPS 的 Panel 里打开 TUN/TAP 功能

# 下载定做好的 kernel 和 rootfs 并传到 VPS 上
https://drive.google.com/open?id=0ByqeeKN198fcNm04a1pBSzdXU3M
备用地址
http://www.weilez.cn/share/alpine_16m.tgz

# 解压并进入目录

tar -xzvf alpine_16m.tgz
cd alpine_16m

# 安装 uml 的包

apt-get install uml-utilities

# 为 uml 创建一个虚拟网口

ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up

# 打通 uml 和 host 之间的网络

iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE

# 转发 host 的 30022 端口到 uml 的 ssh 方便以后管理
# 端口可以在 uml 里的 /etc/init.d/dropbear 文件里修改
# 默认用户名和密码都是 root ,登录后请立即修改!

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 30022 -j DNAT --to-destination 10.0.0.2

# 转发 host 的 38388 端口到 uml 的 ss-libev
# 端口可以在 uml 里的 /etc/s*****-libev/config.json 文件里修改

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

# 可以打开 uml 了,分配了 16M 内存给它吧

nohup ./vmlinux ubda=alpine_16m rw eth0=tuntap,tap0 mem=16M > /dev/null&

# 打开 ss 客户端, ip 是你原来 VPS 的 ip ,默认端口: 38388 ,密码: barfoo!,加密方式: rc4-md5 。
如果可以,请按一下感谢。 Enjoy!

附上截图

启动 uml 后, ssh 到 vps 的 30022 端口。就能看到完整的一个虚拟的 linux 内部的目录结构了。
uml 等于是在你的 vps 内再虚拟一个支持 bbr 的 linux 系统。

ssh 连的是 30022 端口。 uml 启动后等 30 秒左右再去连。 可以运行 iptables -t nat -L 看看下面这条端口转发是否成功。

iptables -t nat -A PREROUTING -i venet0 -p tcp –dport 30022 -j DNAT –to-destination 10.0.0.2

如果觉得效果不好,试试内存加到 32M

创建启动脚本run.sh。注意替换vmlinux和alpine_16m的路径,为了保证uml系统稳定性,脚本里内存分配了64m。

#!/bin/sh
export HOME=/root
start(){
ip tuntap add tap1 mode tap 
ip addr add 10.0.0.1/24 dev tap1
ip link set tap1 up 
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P FORWARD ACCEPT 
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
iptables -I FORWARD -i tap1 -j ACCEPT
iptables -I FORWARD -o tap1 -j ACCEPT
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 30022 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 38388 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 38388 -j DNAT --to-destination 10.0.0.2
screen -dmS uml /root/vmlinux ubda=/root/alpine_16m eth0=tuntap,tap1 mem=64m con=pts con1=fd:0,fd:1
ps aux | grep vmlinux
}

stop(){
    kill $( ps aux | grep vmlinux )
ifconfig tap1 down
}

status(){

screen -r $(screen -list | grep uml | awk 'NR==1{print $1}')

}
action=$1
#[ -z $1 ] && action=status
case "$action" in
'start')
    start
    ;;
'stop')
    stop
    ;;
'status')
    status
    ;;
'restart')
    stop
    start
    ;;
*)
    echo "Usage: $0 { start | stop | restart | status }"
    ;;
esac
exit

安装screen

apt-get install screen

在/etc/rc.local添加开机自启动

/bin/bash /root/run.sh start

发表评论

邮箱地址不会被公开。 必填项已用*标注