OpenVZ 开启 BBR 之最简方法 - Linux Kernel Library
- LKL 要求 ldd 的版本至少在
2.14
,目前我测试下来,如果不想折腾建议直接安装 CentOS7 , Debian8 和 Ubuntu16 - 安装包只使用
64bit
的系统。 - 默认的端口转发只转发了
9000-9999
的端口,如果你不想费心修改,请把 ssr 等应用的端口设在这个范围 - 只适用
openvz
,请他虚拟请参考 原帖 自己折腾。。 - 修改
/root/lkl/run.sh
,查找9000-9999
,改成你想要的端口段 - 修改
/root/lkl/haproxy.cfg
查找9000-9999
,改成你想要的端口段 - 重启 vps
转自 https://www.v2ex.com/t/353778
*** 序 ***
首先感谢 91yun 的 linhua :
https://www.91yunbbs.com/discussion/comment/1382/#Comment_1382
2 个相关链接:
https://www.netdevconf.org/2.1/session.html?tazaki
https://github.com/lkl/linux
*** 教程从这里开始 ***
# 先去 VPS 的 Panel 里打开 TUN/TAP 功能
# 创建一个 tap0
ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up
# 打通 tap0 和 host 之间的网络
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
# 假设我们准备在 443 端口开启 BBR
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2
# 安装 haproxy ,并禁止开机自启
apt-get install haproxy
update-rc.d haproxy disable
# 新建一个 /root/haproxy/haproxy.cfg
# 假设你原来的 server 监听的是 12580 端口, BBR 的端口开在 443 。
global
user haproxy
group haproy
defaults
mode tcp
timeout connect 5s
timeout client 60s
timeout server 60s
listen shadowsocks
bind 10.0.0.2:443
server server1 10.0.0.1:12580
# 下载 Linux Kernel Library ,解压到 /root/haproxy
# https://drive.google.com/file/d/0ByqeeKN198fcdDVLMmVKakl5VE0/view?usp=sharing
tar -xzvf liblkl-hijack.so.tgz
# 是时候开启 haproxy 为 BBR 过桥了,以下命令必须一行打完
LD_PRELOAD=/root/haproxy/liblkl-hijack.so
LKL_HIJACK_NET_QDISC="root|fq"
LKL_HIJACK_SYSCTL="net.ipv4.tcp_congestion_control=bbr;net.ipv4.tcp_wmem=4096 65536 67108864" LKL_HIJACK_NET_IFTYPE=tap LKL_HIJACK_NET_IFPARAMS=tap0
LKL_HIJACK_NET_IP=10.0.0.2 LKL_HIJACK_NET_NETMASK_LEN=24
LKL_HIJACK_NET_GATEWAY=10.0.0.1 LKL_HIJACK_OFFLOAD="0x8883" haproxy -f
/root/haproxy/haproxy.cfg
*** 大功告成! ***
现在可以用客户端连上试试看了
12580 是原来 server 的端口
443 是开启 BBR 以后的端口
*** 后记 ***
# 如果需要把原来 12580 端口的 UDP 协议也转发到 443 端口,可以添加以下命令
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580
更新脚本
# 既然你们都喜欢快餐,那我提供一个脚本吧。
# 手动调试成功后,就可用下面脚本设置开机自启。
# 安装 supervisor ,添加配置文件,用于开机自启
# /etc/supervisor/conf.dhaproxy-lkl.conf
[program:haproxy-lkl]
command=/root/haproxy/haproxy-lkl-start
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/root/haproxy/haproxy-lkl_stdout.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/root/haproxy/haproxy-lkl_stderr.log
stderr_logfile_maxbytes=1MB
# haproxy 配 Linux Kernel Library 的启动脚本。
# 原来的服务监听 12580 端口。开启 BRR 后,新的监听端口在 443 。
# /root/haproxy/haproxy-lkl-start
#!/bin/sh
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 -D PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.2
iptables -t nat -D PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 443 -j REDIRECT --to-port 12580
export LD_PRELOAD=/root/haproxy/liblkl-hijack.so
export LKL_HIJACK_NET_QDISC="root|fq"
export LKL_HIJACK_SYSCTL="net.ipv4.tcp_congestion_control=bbr;net.ipv4.tcp_wmem=4096 65536 67108864"
export LKL_HIJACK_NET_IFTYPE=tap
export LKL_HIJACK_NET_IFPARAMS=tap0
export LKL_HIJACK_NET_IP=10.0.0.2
export LKL_HIJACK_NET_NETMASK_LEN=24
export LKL_HIJACK_NET_GATEWAY=10.0.0.1
export LKL_HIJACK_OFFLOAD="0x8883"
export LKL_HIJACK_DEBUG=1
haproxy -f /root/haproxy/haproxy.cfg
# Enjoy~~~
https://www.91yun.org/archives/6281
LKL 使用前置需求
一键
https://github.com/91yun/uml/raw/master/lkl/install.sh
另外的一键
https://github.com/nanqinlang-tcp/tcp_nanqinlang
rinted方案
https://github.com/mixool/rinetd
如果 10.0.0.2 能 ping 通说明成功, ping 不通说明失败
如果修改转发端口