前几天看了一本书,《藏地牛皮书》。

关于那本书,我一直在想,只是一个介绍,我就毫不犹豫买下了这本书,只是一个开头,我就一口气读完了这本书。可能只有一个原因吧,因为它让我知道,在这个世界,还存在着义无反顾的爱情,还有可以诠释“执子之手,与子成说”的感情,还有“人生若只如初见”的美好。

他们不约而同地在“非典”时期揣着一本《藏地牛皮书》背着行囊来到西藏,在拉萨的青年旅社不期而遇,他们对彼此的倾慕干净而透明,但他们的未来却显然通往不同的方向。

和菜头说:谁都有可能经历这种煎熬。你在一个美好的地方遇见一个美好的人,一切如此美好以至于你开始怀疑这不是真实的。每秒钟你的心念如同瀑流倾注,但是你闭紧了嘴,不肯泄露一个字。因为你不确信对方也是这么想,同时你觉得心里保有了一个秘密,只要一张嘴它就消失不见了。这种事情是无法用笔墨来形容的,我们可以讲述一个曲折动人的故事,但是哪怕用完了所有的中文技巧,也不能描摹内心风暴的一角。就好像是哑巴食蜜,蜂蜜的味道渗透了他的全身心,但是他不能告诉你那样是怎样一种感觉。

“花花世界,人山人海,他一点也不耀眼,扔进人堆里可能就找不着了,可是那一束温柔的光,刚好就是我最想要的。就好像大热天里人人都躲在空调房间,这时候我走出门去,遇见一阵穿堂风,这是只属于我一个人的偶遇和惊喜。”

很喜欢铭基那句:Trust me .we can be together ,no matter how difficult the road will be.

这是铭基在大理写给傅真的明信片上的话,很勇敢,而且铭基也做到了,无论是之后去英国还是后来回中国,始终是相随一起,不离不弃。为什么有人将婚姻比作围城,或多或少是因为婚姻改变了其中一个人对另一个人的需求吧。不然,感情中,或许更应该让对方一直做自己,而你也只要做好自己就可以了,因为爱的是最初的你也是最后的你。

“岁月会将你打磨,最初的激情则会慢慢沉淀,细水长流的安稳与幸福却更有一番天地清明的真实与美好。”

其实看着这本书,我觉得自己的内心也干净了很多,有时候真是嫉妒那些仰望星空的自由人,而我们好像在慢慢被这个社会改变着,之所以他们可以找到,我想还是因为他们还信仰着爱情这种事物吧。
记得电影《卧虎藏龙》里,大侠李慕白说,握紧拳头,里面什么都没有。张开双手,你就拥有了整个世界。
所以,老傅说:爱情亦是如此。

本站收集/制作的一键脚本

Openvz下BBR一键包(LKL+UML)

Linux一键增加虚拟内存 swap

AMH5.3破解&开心版本一键安装脚本

服务器一键测试包

Linux Debian 7 32/64bit Ubuntu 环境安装VNC/LXDE

Linux OpenVZ CentOS 6 64bit环境一键安装VNC桌面环境教程 wine专用

Linux OpenVZ Debian 7 32/64bit环境一键安装VNC桌面环境教程

Easypanel/kangle商业版一键安装(全家桶)


Google BBR 优化算法,实现TCP加速,一键安装脚本

Nginx 端口转发(TCP+UDP) 解决苹果IPV6审核

nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求

 

首先安装nginx 需要IPV6模块和stream模块

wget dl.rocky.hk/sh/nginx-stream.sh

sh nginx-stream.sh

 

修改nginx配置文件nginx.conf:

[root@tkde-iphone ~]# vim /usr/local/nginx/conf/nginx.conf
user  www www;
worker_processes  32; 
pid        logs/nginx.pid;

events {
    #use epoll;                            #Linux最常用支持大并发的事件触发机制
    worker_connections  65535;
}

stream {
    upstream zifangsky {
        hash $remote_addr consistent;
        server 10.10.100.31:8000;
    }
    server {
        listen 8080;
        proxy_connect_timeout 5s;
        proxy_timeout 5s;
        proxy_pass zifangsky;
    }
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       9000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

}

在上面的配置文件中配置了在访问此服务器的8080端口时,会将流量相应转发到10.10.100.31这个服务器的8000端口上

 

可配合宝塔使用

 

魔改BBR算法的尝试

众所周知,这年头的机器不做一番“优化”,带宽利用率根本竞争不过邻居;



于是机智的MJJ都用上了比默认的cubic/reno更aggressive的TCP拥塞控制,而当中又以BBR和锐速为代表。



作为g粉自然是要选择BBR的,毕竟有google和整个linux社区做后台,长远下去肯定要比闭源又停止支持的锐速走得更远。



那么问题来了:在大中华区特殊的国情下,更顾及公平性的BBR比起锐速带宽竞争力还是有些疲软的。能否通过一些小改动,让BBR变得更有侵略性呢?



能!



初版BBR:

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/plain/net/ipv4/tcp_bbr.c



魔改BBR:

https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c



编译时系统必须安装4.10以上版本的kernel及对应的linux-header,gcc版本应在4.9以上



以4.10.9为例,需先更换内核,再先后安装:

(http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.10.9/)

linux-headers-4.10.9-041009_4.10.9-041009.201704080516_all.deb

linux-headers-4.10.9-041009-generic_4.10.9-041009.201704080516_amd64.deb





以下步骤在debian 8及ubuntu 16上测试通过:


  1. apt-get install make gcc-4.9
  2. wget -O ./tcp_tsunami.c https://gist.github.com/anonymous/ba338038e799eafbba173215153a7f3a/raw/55ff1e45c97b46f12261e07ca07633a9922ad55d/tcp_tsunami.c
  3. echo “obj-m:=tcp_tsunami.o” > Makefile
  4. make -C /lib/modules/$(uname -r)/build M=`pwd` modules CC=/usr/bin/gcc-4.9
  5. install tcp_tsunami.ko /lib/modules/$(uname -r)/kernel
  6. depmod -a
  7. insmod tcp_tsunami.ko
  8. sysctl -w net.ipv4.tcp_congestion_control=tsunami

复制代码





关键参数:bbr_bw_rtts, bbr_min_rtt_win_sec, bbr_probe_rtt_mode_ms, bbr_cwnd_min_target, bbr_drain_gain



关键数组:bbr_pacing_gain



经过一个月的测试,魔改BBR比起正常版的BBR确实强上不少,最起码以前看y2b 4k断断续续的远东ss现在能流畅播放了



以上版本的BBR不保证普适性,建议自行修改参数测试





参考链接:

1. http://blog.csdn.net/dog250/article/details/52939004

2. http://blog.csdn.net/dog250/article/details/52879298

3. http://blog.csdn.net/dog250/article/details/52972502

4. https://patchwork.ozlabs.org/patch/671069/

 

 

附上萌咖制作的一键脚本

  • 背景:
  • 原版的BBR对于我们来说,速度不太稳定.

    通过修改BBR源码,调整参数,使其更强劲.


    更新:

    [2017.07.15]

    自动检测gcc版本,如果gcc版本大于4.9的将不会再安装gcc.

    [2017.07.12]

    支持用户自行指定内核版本(需要与 -f 命令同时使用).


  • 准备:
  • 使用前,请确认能够开启BBR.

    可参考: Debian/Ubuntu 开启 TCP BBR 拥塞算法

    或者直接执行此命令进行开启.

    注意:执行此命令会自动重启.


  • 一键地址:
  • 指定内核版本(以v4.11.9内核版本为例):

  • 说明:
    • 执行过程中会重新编译模块.
    • 模块默认为开机自动加载.
    • 模块名称:tcp_bbr_powered
    • 可用 modprobe tcp_bbr_powered 命令进行加载模块.
    • 可执行 lsmod |grep 'bbr_powered' 

      结果不为空,则加载模块成功
    • 可执行 sysctl -w net.ipv4.tcp_congestion_control=bbr_powered 使用此模块.
    • 以上只是说明,直接使用一键脚本即可.


  • 完整代码:

  • 注意事项:
  • 如遇报错:Error! Header not be matched by Linux Kernel.

    请用使用本博客提供的脚本重新开启BBR,可直接参考本篇中的准备步骤.

    如遇报错:Error! Install gcc-4.9.

    首先尝试apt-get update,再次执行此脚本.

    如果未解决想办法自行安装gcc-4.9,或切换系统后再试.

    本脚本在Debian8,Ubuntu16.04上通过测试.


 

Openvz下BBR一键包(LKL+UML)

前提准备

请选择安装 64bit 的操作系统,目前还没做 32bit 的包
VPS 必须支持并开启 TUN/TAP

 

LKL一键包

LKL 要求 ldd 的版本至少在 2.14 ,建议使用安装 CentOS7 , Debian8 和 Ubuntu16
安装包只使用 64bit 的系统。
默认的端口转发只转发了 9000-9999 的端口,如果你不想费心修改,请把 ssr 等应用的端口设在这个范围

 

如果修改转发端口

    1. 修改 /root/lkl/run.sh ,查找 9000-9999 ,改成你想要的端口段
    2. 修改 /root/lkl/haproxy.cfg 查找 9000-9999 ,改成你想要的端口段
    3. 重启 vps安装 LKL 一键包命令
wget nocheckcertificate
https://github.com/91yun/uml/raw/master/lkl/install.sh && bash install.sh

如何判断是否安装成功

如果 10.0.0.2 能 ping 通说明成功, ping 不通说明失败

 

OpenVZ的UML+BBR+SSR加速一键包Alpine linux+Centos

 

一键运行脚本

Alpine linux 小内存版: UML 的系统是 Alpine linux ,需要 64M 内存启动,主机最低 128M 内存

wget N nocheckcertificate https://raw.githubusercontent.com/91yun/uml/master/bbr/uml.sh

Centos 版: UML 的系统是 CentOS ,需要 256M 内存启动,主机建议最低 512M 内存

wget N nocheckcertificate
https://raw.githubusercontent.com/91yun/uml/master/bbr/umlcentos.sh
bash umlcentos.sh

装完 ssr 和 bbr 就已经运行了,如果你不想改密码和端口的话就可以直接用。。默认配置在下面。。

UML 相关说明

如何进入 uml

screen -x 或者在目录下运行 bash run.sh status
用户名: root , 密码: root

如何退出 uml

在 uml 模式里,通过按快捷键 ctrl+a+d 来退出 screen

删除 uml 进程

bash run.sh stop

启动 uml

bash  run.sh start

如何把文件传入 UML

我已经在 root 目录下新建了个 umlshare 目录( /root/umlshare ) , 在 uml 里也做了挂载,位置同样是/root/umlshare, 只要把文件放进去就可以了

SSR 相关说明

默认配置

端口:9191
密码:www.91yun.org
加密:RC4MD5
协议:auth_sha1_v4
混淆:tls1.2_ticket_auth

如何修改 SSR 配置

第一步

根据上面的教程进入 uml

第二步

修改 mudb.json 文件

vi /root/shadowsocksr/mudb.json

把相关的配置改成你自己需要的就可以了。需要说明的是,因为没有编译相关的依赖库,不支持 chacha20 的加密方法

第三步

重启 SSR 程序

bash /root/shadowsocksr/run.sh

最后一步

ctrl+a+d 退出 UML ,在母机的安装目录下(如果没做修改默认是 /root/uml-ssr-64/ )打开 run.sh 找到下面的代码,把 9191 改成你自己刚才修改的端口

iptables t nat A PREROUTING i venet0 p tcp dport 9191 j DNAT todestination 10.0.0.2
iptables t nat A PREROUTING i venet0 p udp dport 9191 j DNAT todestination 10.0.0.2

然后重启即可

SSR 添加多用户

python mujson_mgr.py a p 端口 k 密码 m 加密方式 O 协议 o 混淆

加完记得在母机增加 iptables 端口转发相关的代码

以上来自91yun

Untitled

花开花落,又是一年。

谨以此结束不愿提及的前一年。

2016.3.25 周五,晚

Screenshot_2017-03-23-19-17-38-258_com.tencent.mo.png

犹能清晰地记着。

也许一开始便是错误的,也许听得武兵或老邱所说也不会耽误那么多。

然而自己的想法也没实现,也麻烦了聪爸聪妈。

或许他们都知道此行是无意义的,只是依着儿子罢了。

但是两个半月后,他们的期待却也落了空。

1.一切皆有因有果

2.在歌曲的间奏里,在城市的黄昏里,在四季的缝隙里,在无限的广阔中。脚步越来越远,河岸越来越近,最后发现那些时刻在记忆中闪烁的影子,其实都是自己。你千辛万苦地想去改变,但最终发现这片世界不属于你,毕竟不是所有的鱼都会生活在同一片海里或许,你只是对自己无能为力。

3.一直都知道自己是容易为感情所羁绊,很多决定从一开始便是错误的,但却又是那么固执德选择向前摔得头破血流。

4.与其怀念,不如向往。难过的时候总是感觉天空都挂着泪水,后来发现正是因为如此,天空才格外明亮。

5.因为执意,因为舍不得,因为看到了太多的绝望,所以反而看出了希望。

6.聪爸是浙大毕业的

错过了高考,只能进取保研到浙大。

至少,你需要努力,为了聪爸聪妈,为了将来,也为了配得上心仪的人

——————————————————————————–

喜剧就是,悲剧再加上时间

谨以2016.7.1–2017.3.23个人备忘录告诫自己

所谓擅长安慰人,只是自己度过了太多自己安慰自己的日子。

写给这新的一年,三月好运。

前端访问负载均衡

一直对浏览器到服务层这部分访问的负载均衡不是很清楚,今天看了一篇58到家shenjian的文章,觉得不错,这里大概说说自己的感想,文中的图都是借用人家的,特此说明

第一阶段(裸奔)

请求量很少,通过浏览器访问一个域名,经过DNS解析后,直接就到了 tomcat了

第二阶段(简单扩容)

第一个阶段很明显,如果tomcat挂了,那么系统就挂了,所以进行了简单的扩容,增加了web服务器

第三阶段(加了nginx的简单扩容)

第二个阶段很明显,首先对外暴露了过多的ip,其次DNS解析出来的服务器是否可用,无法保证,所以加了nginx

加了nginx之后,扩容就容易了,切换流量也容易,但如果nginx挂了怎么办呢

第四个阶段(使用keepalived

使用keepalived使用管理两台nginx,如果一台nginx挂了,可以切换到另外一台nginx

这样也有两个问题:1.nginx的资源利用只有一半  2.如果请求超过nginx的单点性能极限,咋办

第五阶段(使用lvs和f5)

lvs和f5一个在操作系统层面,一个在硬件层面,它们的性能远超nginx,所以用它们管理一个nginx的集群再合适不过了

第六阶段(重新回到之前的DNS轮询)

第五个阶段基本已经可以抗住99.999%公司的访问了,但是如果请求确实超过了单点lvs和f5的性能极限呢。其实水平扩展是最好的解决办法

可以通过DNS轮询来接入多个lvs和f5,如果还不行,再继续水平加lvs和f5,现阶段只能这样了,谁如果有更好的办法,可以聊一下

本文主要是58到家沈剑文章的读后感,这里贴出链接,大家也可以看看http://mp.weixin.qq.com/s/4dzqbh2wfzbQzgFodP2_6Q,主要用于学习分享,非喜勿喷

OpenVZ VPS 安装 User-mode Linux 以实现 BBR 拥塞控制

 

安装 UML

先装工具链:

apt-get install build-essential libncurses5-dev 

因为需要 BBR 先弄到超前版内核树 net-next,还有对应 UML 的内核配置

cd ~ 

git clone git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git  

cd net-next 

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 

make defconfig ARCH=um 

也可以 export ARCH=um,方便一些。

配置内核使用 BBR

make menuconfig ARCH=um 

进入配置菜单,进入 Networking support → Networking options → TCP: advanced congestion control 页面,移到 BBR TCP,按两下空格直到变成 <*> BBR TCP。下方 Default TCP congestion control 回车选 BBR。一路 Exit,保存。

make ARCH=um vmlinux -j2 编译。

UML 中安装 Arch Linux

基本与在 Ubuntu 下安装新 Arch 一样。

先装一个只读的 rootfs

因为 UML hostfs 的限制,hostfs 一定是只读的,而 OpenVZ 也没有 loop 设备,无法直接挂载磁盘镜像,故我们要先装个只读的 rootfs 来启动 UML UML 中挂镜像。(RefPeterCxy Blog

# 先下载 Arch 最新的 Bootstrap 包:

cd ~ 

wget http://mirror.rackspace.com/archlinux/iso/latest/archlinux-bootstrap-2017.02.01-x86_64.tar.gz 

tar xzf archlinux-bootstrap-2017.02.01-x86_64.tar.gz 

mv root.x86_64 root 

vi root/etc/resolv.conf 

# 加上一行 nameserver 8.8.8.8,保存

mount –rbind /proc root/proc 

mount –rbind /sys root/sys 

mount –rbind /dev root/dev 

mount -t tmpfs tmpfs root/tmp 

mount –rbind /root root/root 

nano root/etc/pacman.d/mirrorlist 

# 搜索离你最近的国家镜像,去掉对应的注释

# 进入 chroot

root/bin/arch-chroot root /bin/bash 

# 此时已经进入 chroot 环境

pacman-key –init 

pacman-key –populate archlinux 

# 安装基础系统

pacman -Sy base 

# 改控制台,也可以不改,通过 screen 连接 pts

systemctl enable getty@tty0 

systemctl disable getty@tty1 

# 退出 chroot

exit 

# 解除 rbind

umount root/{dev,proc,sys,tmp} 

此时在 root 文件夹下就有了完整的 rootfs,可以启动 UML 了。

设置网络

首先在主机商的面板(SolusVM)打开 TUN/TAP 功能。一般能做 VPNPPTPL2TP等) VPS 都有这个选项。

之后配置 TAP 设备:

ip tuntap add tap0 mode tap 

ip addr add10.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:0 -j MASQUERADE 

安装 Arch 到镜像

cd ~/net-next 

dd if=/dev/zero of=rootfs.img bs=1MB count=6000 # 创建一个 6GB 的镜像 

mount -o remount,size=2G/dev/shm # 改一下 tmpfs 大小,防止爆内存

# 启动到 UML

./vmlinux root=/dev/root rootfstype=hostfs hostfs=./root ubd0=rootfs.img eth0=tuntap,tap0 mem=128M 

mem 是内存大小,此处取 128M(可以根据你的内存情况修改)。 
此时已经有 UML shell,可以开始安装系统了。用户名 root,没有密码。

ip link set eth0 up 

ip addr add10.0.0.2/24 dev eth0 

ip route add default via 10.0.0.1 dev eth0

# 制作文件系统

mkfs.ext4 /dev/ubda 

mount /dev/ubda /mnt 

mkdir -p /mnt/var/lib/pacman 

pacman -Sy base -r /mnt 

pacman -Sy havaged -r /mnt # entropy 生成器

mount –rbind /proc /mnt/proc 

mount –rbind /sys /mnt/sys 

mount –rbind /dev /mnt/dev 

mount -t tmpfs tmpfs /mnt/tmp 

mount –rbind /root /mnt/root

chroot /mnt /bin/bash 

vi /etc/pacman.d/mirrorlist # mirrorlist 

编辑网络配置:

vi /etc/systemd/network/50-static.network 

加入

[Match]

Name=eth0

[Network]

Address=10.0.0.2/24 

Gateway=10.0.0.1 

同上,enable 各项服务,配置 时区、locale 等:

vi root/etc/resolv.conf 

# 加上一行 nameserver8.8.8.8,保存

systemctl enable systemd-networkd 

systemctl enable getty@tty0 

systemctl disable getty@tty1

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

sed -i ‘s/#en_US.UTF/en_US.UTF/’ /etc/locale.gen 

locale-gen 

echo ‘LANG=en_US.UTF-8’ > /etc/locale.conf 

echo ‘umlarch’ > /etc/hostname # 配置主机名 

vi /etc/hosts # 加入 127.0.1.1 umlarch.localdomain umlarch 

mkinitcpio -p linux # 应该不需要,以防万一 

genfstab -U /mnt >> /mnt/etc/fstab # fstab 

shutdown -h 0 # 关闭 UML 

现在配置已经基本完成,改变一下命令行,从新建的镜像启动:

vi ./vmlinux root=/dev/ubda ubd0=rootfs.img eth0=tuntap,tap0 mem=256m 

pacman-key –init 

pacman-key –populate archlinux 

搞定。

配置端口转发

先给自己留下 SSH 端口~

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

然后其他的端口全转发走啦:

iptables -t nat -A PREROUTING -i venet0 -j DNAT –to-destination10.0.0.2 

yunBT 基于TP3.1的多用户离线下载

项目托管地址 https://github.com/maysrp/yunBT

 

测试系统

Debian7 X64

 

为了大家后期管理方便,这里推荐AMH面板

传送门

要求:PHP>5.3(可使用一键升级脚本,见AMH4.2原帖)

安装完毕LNMP后请到模板里面下载pathinfo,后台模板里直接搜索即可

 

然后ssh里运行 wget http://dl.rocky.hk/sh/yunbt.sh; sh yunbt.sh;

项目源码 http://dl.rocky.hk/sh/yunBT-master.zip 下载后上传到网站根目录

数据库

yunbt.sql导入数据库

/Bt/Conf/config.php 数据库配置

 

 

 

AMH5.3破解&开心版本一键安装脚本

云端Panel 极速安装:
极速免编译安装方式 (安装时间1至3分钟)

wget http://amh.ydidc.top/YD-panel.sh && bash YD-panel.sh 2>&1 | tee YD-panel.log

(备用)wget http://amh.janch.top/YD-panel.sh && bash YD-panel.sh 2>&1 | tee YD-panel.log

云端Panel 编译安装:编译安装方式 (安装时间5至15分钟)
wget http://amh.ydidc.top/YD-panel.sh && bash YD-panel.sh gcc 2>&1 | tee YD-panel.log
(备用)wget http://amh.janch.top/YD-panel.sh && bash YD-panel.sh gcc 2>&1 | tee YD-panel.log

懒人版:

懒人版说明:全自动安装php7.0\lnmp\pure-ftpd\amftp\phpmyadmin等建站必备的模块
懒人版 极速安装:

wget http://amh.ydidc.top/YD-panel2.sh && bash YD-panel2.sh 2>&1 | tee YD-panel.log

(备用)wget http://amh.janch.top/YD-panel2.sh && bash YD-panel2.sh 2>&1 | tee YD-panel.log

懒人版 编译安装:

wget http://amh.ydidc.top/YD-panel2.sh && bash YD-panel2.sh gcc 2>&1 | tee YD-panel.log

(备用)wget http://amh.janch.top/YD-panel2.sh && bash YD-panel2.sh gcc 2>&1 | tee YD-panel.log

AMH5.3 一键转换为云端Panel(安装过之前的二次开发版本或官方版的可转换为云端Panel版)

wget http://amh.ydidc.top/convert.sh && bash convert.sh

卸载
wget dl.rocky.hk/sh/amh-uninstall.sh;bash amh-uninstall.sh

本文参考自vpsps.com