在DigitalOcean,CentOS 7 x64系统下 Shadowsocks的搭建和简单优化

2015/02/06
为什么这次选择CentOS 7 x64,因为CentOS 6.5的默认系统内核版本太低2.6.32.能搭建SS服务,但能做的优化很的限,而自己编译升级内核会碰到些不明原因的错误,不如直接选择CentOS 7 x64的系统。有它的默认内核3.10的支持,足够优化了。


首先是注册DigitalOcean VPS服务器的详细说明
最近发现搬瓦工不太稳定,尝试了一下DigitalOcean提供的VPS服务器,发现稳定性比搬瓦工好很多,而且它是独立架构,不会受同物理主机下别的VPS的影响,而且可修改内核。
缺点是它比搬瓦工的费用贵,最便宜的是5美元一个月,它是充值后按天扣费。
注册地址 https://www.digitalocean.com/?refcode=311b9df948ee (使用本链接注册的账户会立即到账10美元,可使用两个月)
新用户注册通过推荐连接注册会送10美元,可以使用两个月,但需要自己再充5美元激活账户或者绑定你的美元币种信用卡0元激活,这里推荐PAYPAL来支付,当然你也可以通过双币信用卡用美元支付。

  下面说说注册方法,
  点击连接 https://www.digitalocean.com/?refcode=311b9df948ee 进入页面,下拉到最下面,点击 GET STARTED NOW ,之后输入你的邮箱和密码(注意:邮箱需要来接收ROOT密码),点击SIGN UP,之后进入DigitalOcean控制面板,点击左上脚 Create Droplet,你看到已经到帐10美元,但需要再充值5美元激活或者绑定你的美元币种信用卡0元激活。
打开刚才你注册的邮箱会收到验证邮件,点击里面的连接之后输入你的邮箱和密码登陆,进去是添加信用卡界面,如果你有双币信用卡,请按信用卡上面的信息如实填写,账单地址,如果是在中国,就写英文地址。这里推荐PAYPAL来支付,当然你需要PAYPAL来绑定你的信用卡,PAYPAL支付的话,下拉到 PayPal Payment,就可以用PAYPAL支付5美元(PAYPAL注册地址 https://www.paypal.com )。支付之后,你的DigitalOcean账户就激活了。(或者绑定你的美元币种信用卡0元激活。)   之后输入你VPS主机的“Droplet Hostname”主机名(英文),然后“Select Size”选择你的付费套餐,选5美元的就可以了(512内存,20SSD硬盘,1000GB流量),”Select Region“节点推荐“San Francisco”,美国的西海岸,国内访问是最稳定的。”Select Image“这个是系统,选择CentOS 7 x64(点击CENTOS)。别的选项保持默认,最后点击最下方的“Create Droplet”到此,你的VPS创建成功,你的注册EMAIL会收到VPS的IP,和ROOT密码,默认SSH端口是22。

接着到http://www.putty.org/下载PUTTY,来管理你的VPS。(进去之后页面最上方点here,之后下载你需要的版本)

  打开PUTTY,输入你的VPS的IP,端口号。点击下面的OPEN。 连接到你的VPS了,用户打root回车,会让你输入密码,就是邮件收到的密码,注意大小写(这里输入密码时,是不可见的,你按着输入就行)之后回车。第一次登陆后会让你改密码,你再输一次原密码后回车,输入新密码,回车,再次输入新密码回车,之后就命令操作了。



  下面是Shadowsocks服务的布置
请一行行输入下面的命令后回车,执行完一行后再执行下一行。(可以复制后在putty中点击鼠标右键黏贴,键盘回车执行。如询问(Y/N),请Y回车。)

yum install epel-release

yum update

yum install python-setuptools

easy_install pip

pip install shadowsocks

以上命令执行完之后,shadowsocks已安装到你的VPS中,但还没有运行。
接着我们执行命令来配置SS服务。

vi /etc/shadowsocks.json

按键盘i建进入编辑模式,复制以下内容文件中。(请改“端口号”为你需要的端口号 范围 1 - 65535,改“你的密码”为你自己的密码。)
————————————————复制以下内容————————
{
    "server":"0.0.0.0",
    "server_port":端口号,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"你的密码",
    "timeout":500,
    "method":"aes-256-cfb",
    "fast_open": true
}
————————————————复制以上内容————————
复制完成后,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。

附上面代码的说明

server 服务端监听的地址,服务端可填写 0.0.0.0
server_port 服务端的端口
local_address 本地端监听的地址
local_port 本地端的端口
password 用于加密的密码
timeout 超时时间,单位秒
method 默认 “aes-256-cfb”
fast_open 是否使用 TCP_FASTOPEN, true / false(后面优化部分会打开系统的TCP_FASTOPEN,所以这里填true,否则填false)


我们需要后台自启动服务
再一行行运行以下命令,执行完一行后再执行下一行。(可以复制后在putty中点击鼠标右键黏贴,键

盘回车执行。如询问(Y/N),请Y回车。)

yum install python-setuptools supervisor

easy_install pip

pip install shadowsocks

以上命令执行完之后,需要编辑/etc/supervisord.conf文件

vi /etc/supervisord.conf
按键盘i建进入编辑模式,光标移到底部空行处,如没空行就在末尾回车加入空行。复制以下内容。
————————————————复制以下内容————————
[program:shadowsocks]
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=root
————————————————复制以上内容————————
复制完成后,回个车,为底部再留下空行,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。

再一行行运行以下命令,执行完一行后再执行下一行。(可以复制后在putty中点击鼠标右键黏贴,键盘回车执行。如询问(Y/N),请Y回车。)

sudo chkconfig --add supervisord

sudo chkconfig supervisord on

service supervisord start

supervisorctl reload

到此Shadowsocks已经在CentOS 7 x64下安装配置成功,再运行命令

reboot

重启服务器使服务生效。

结束以上部分,已经可以使用正常Shadowsocks服务。

下面是优化部分,优化的前提是内核版本是需要3.7以上,查看内核版本,执行命令
uname -a
会返回你的内核信息。


接着我们要进行一些优化,这才是选择CentOS 7 x64系统的主要原因。

重启之后,我们用PUTTY重新登陆服务器。

首先我们要在系统中启用TCP Fast Open
运行命令

echo 3 > /proc/sys/net/ipv4/tcp_fastopen

需要重启后也生效TCP Fast Open ,要编辑sysctl.conf
运行

vi /etc/sysctl.conf

按键盘i建进入编辑模式,光标移到底部空行处,复制以下内容。
————————————————复制以下内容————————
net.ipv4.tcp_fastopen = 3
————————————————复制以上内容————————
复制完成后,回个车,为底部再留下空行,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。

增加tcp连接数量
运行命令
vi /etc/security/limits.conf
按键盘i建进入编辑模式,光标移到底部# End of file上面一行空白处
,复制以下内容。
————————————————复制以下内容————————
* soft nofile 51200
* hard nofile 51200
————————————————复制以上内容————————
复制完成后,回个车,为底部再留下空行,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。

运行命令
ulimit -n 51200


接着我们要调整TCP拥塞控制算法为hybla

首先科普下TCP拥塞控制算法:
中美之间的线路质量不是很好,rtt较长且时常丢包。TCP的设计目的是解决不可靠线路上可靠传输的问题,即为了解决丢包,但丢包却使TCP传输速度大幅下降。HTTP协议在传输层使用的是TCP协议,所以网页下载的速度就取决于TCP单线程下载的速度(因为网页就是单线程下载的)。丢包使得TCP传输速度大幅下降的主要原因是丢包重传机制,控制这一机制的就是TCP拥塞控制算法。
Linux内核中提供了若干套TCP拥塞控制算法,这些算法各自适用于不同的环境。
1)reno是最基本的拥塞控制算法,也是TCP协议的实验原型。
2)bic适用于rtt较高但丢包极为罕见的情况,比如北美和欧洲之间的线路,这是2.6.8到2.6.18之间的Linux内核的默认算法。
3)cubic是修改版的bic,适用环境比bic广泛一点,它是2.6.19之后的linux内核的默认算法。
4)hybla适用于高延时、高丢包率的网络,比如卫星链路——同样适用于中美之间的链路。
我们需要做的工作就是将TCP拥塞控制算法改为hybla算法,并且优化TCP参数。


运行
sysctl net.ipv4.tcp_available_congestion_control

会得到 net.ipv4.tcp_available_congestion_control = cubic reno
表示我们系统的TCP拥塞控制算法只能选择cubic或者reno算发,hybla算法并没有启用,我们就要启用hybla算法。

运行
/sbin/modprobe tcp_hybla

sysctl net.ipv4.tcp_available_congestion_control
得到net.ipv4.tcp_available_congestion_control = cubic reno hybla
这时表明hybla已经可以使用了。

运行
cp /etc/sysctl.conf /root/
这个是复制sysctl.conf文件,作个备份


修改sysctl.conf文件,优化TCP参数
vi /etc/sysctl.conf
按键盘i建进入编辑模式,光标移到刚才复制的net.ipv4.tcp_fastopen = 3的下面一行,复制以下内容。
————————————————复制以下内容————————
fs.file-max = 51200
#提高整个系统的文件限制
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 3240000

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla
————————————————复制以上内容————————
复制完成后,回个车,为底部再留下空行,按键盘Esc 键退出编辑模式,输入:wq回车,保存并退出。

运行

sysctl -p

使上面的配置生效。

至此,优化也完成了。你可以尽情使用。

注:如需要检查TCP Fast Open有没有生效运行
sysctl net.ipv4.tcp_fastopen
得到 net.ipv4.tcp_fastopen = 3,表示已经成功生效了。



欢迎转载,请注明原作者和出处。

作者:
來源:https://plus.google.com/u/0/+BoluoKING/posts/dLyYhBf3mwp

Related Posts