趁着元旦优惠购入AlphaRacks Hosting 的 VPS,年付10美金
配置如下:
512 MB Dedicated RAM
10 GB RAID-10 Disk Space
1000 GB Premium Bandwidth
1 Dedicated IP Address
100Mbps Uplink Speed
部署
系统环境
选择Debian 7 x86 版本,感觉用起来比Centos方便,简单。
ShadowSocks-libev
- 体积小巧。
- 静态编译并打包后只有 100 KB。
- 高并发。
- 基于 libev 实现的异步 I/O,以及基于线程池的异步 DNS,同时连接数可上万。
- 低资源占用。几乎不占用 CPU 资源,服务器端内存占用一般在 3MB 左右。
使用tennfy的一键脚本,该脚本会下载最新源码进行编译,并加入到开机自启。
=============2019.5.18 update 该脚本已失效=============
用PuTTY登录VPS后执行
wget --no-check-certificate https://raw.githubusercontent.com/tennfy/shadowsocks-libev/master/debian_shadowsocks_tennfy.sh chmod a+x debian_shadowsocks_tennfy.sh bash debian_shadowsocks_tennfy.sh
安装完成会提示输入ShadowSocks服务端口和密码,最后会显示配置信息。
以后如果需要更改配置,可以修改/etc/shadowsocks-libev/config.json文件,然后重启ShadowSocks服务使配置生效。
附操作命令:
卸载
bash debian_shadowsocks_tennfy.sh uninstall
更新
bash debian_shadowsocks_tennfy.sh update
启动
/etc/init.d/shadowsocks-libev start
停止
/etc/init.d/shadowsocks-libev stop
重启
/etc/init.d/shadowsocks-libev restart
安全配置
安全配置1:以非root运行shadowsocks
开源程序,不怕后门怕漏洞。 新建一个无密码,无法登陆,没home的系统用户,就叫shadowsocks
adduser --system --disabled-password --disabled-login --no-create-home shadowsocks
修改 /etc/default/shadowsocks-libev
USER=shadowsocks
GROUP=nogroup
对安全配置1的补充:非root的SS,如何运行在1024以下端口
不管哪款VPS,都对机房的网络有做QOS,在高峰期22、80、443这样常见低端口的流量会比高位端口的优先级高。
但默认情况下,非root用户无法监听低位端口。
请无视各种iptables解决办法,只讲最简单的方法:setcap
apt-get install libcap2-bin
setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server
安全配置2:禁止ss通过loopback访问本地资源
v2ex的一个帖子,一下敲醒了大家对ss访问本地资源这个问题的重视。
新建一个叫SHADOWSOCKS的Chain
iptables -N SHADOWSOCKS
禁止对本地网络的访问。
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -d 127.0.0.0/8 -j REJECT
开放对DNS、HTTP、HTTPS的访问,DNS有TCP和UDP两种
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p udp --dport 53 -j ACCEPT
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p tcp --dport 53 -j ACCEPT
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p tcp --dport 80 -j ACCEPT
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p tcp --dport 443 -j ACCEPT
下面这条,将允许SS对客户端请求的回访。
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -m state --state ESTABLISHED,RELATED -j ACCEPT
下面两条,将不允许其他目标端口的访问,原因很简单:不希望有版权内容下载的流量被vps商发现。
这里tcp选择tcp-reset作为返回值,是因为tcp-reset可以通过ss传回客户端。
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p tcp -j REJECT --reject-with tcp-reset
iptables -t filter -m owner --uid-owner shadowsocks -A SHADOWSOCKS -p udp -j REJECT
最后,把SHADOWSOCKS这个Chain,打到OUTPUT上去
iptables -A OUTPUT -j SHADOWSOCKS
在Server端使用Squid对http流量进行缓存
使用Squid对http流量进行缓存后:主观感受明显,但了youtube(https)和speedtest无法佐证。
安装squid3
apt-get install squid3
对默认配置文件来个备份
cd /etc/squid3
mv squid.conf squid.conf.old
新建配置文件squid.conf
# 透明代理工作在3128/tcp
http_port 127.0.0.1:3128 transparent
acl localhost src 127.0.0.1
acl thisvps src 107.191.52.32
http_access allow localhost
http_access allow thisvps
# 64M内存,2G硬盘做缓存,cache日志不纪录
cache_mem 64 MB
cache_dir ufs /var/spool/squid3 2000 16 256
cache_log /dev/null
# 现在互联网上css/js/gif都好大,默认的不够。
maximum_object_size 4096 KB
maximum_object_size_in_memory 64 KB
# 不缓存 cgi-bin ,对图片、js、css强制缓存。
hierarchy_stoplist cgi-bin ?
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \.(jpg|png|gif|mp3|xml|html|htm|css|js) 1440 50% 2880 ignore-reload
refresh_pattern . 0 20% 4320
设置iptables,将shadowsocks 的出站80端口数据进行转发到127.0.0.1:3128
必须先安上面的安全配置1进行配置
iptables -t nat -m owner --uid-owner shadowsocks -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128
若已按上方的安全配置2进行了配置:还需开通shadowsocks访问本地3128端口的权限,直接插入到SHADOWSOCKS Chain的第一行。
iptables -t filter -m owner --uid-owner shadowsocks -I SHADOWSOCKS 1 -d 127.0.0.0/8 -p tcp --dport 3128 -j ACCEPT
若本机的配置了其他iptables入站规则:还需开通eth0到loopback的访问。
iptables -A INPUT -s [VPS IP] /32 -d 127.0.0.0/8 -i lo -j ACCEPT
最后,通过观察squid的日志,确认转发是否在工作。
tail -f /var/log/squid3/access.log
使用单边TCP优化工具
OpenVZ受限于不能修改内核,所以优化方式有限。对于丢包严重的情况,最有效的方法是安装net-speeder。
但net-speeder的工作方式为无脑双倍发包,会导致有效数据减半,VPS流量翻倍。
- 有效数据减半:例如宽带跑到10Mbps下行,因为是双份同样的数据,无丢包情况下其实只有5Mbps的有效数据。
- VPS流量翻倍:VPS流量会同时计算上下行流量,翻墙1G流量,其实等于使用了2G流量,用了net-speeder双倍发包后,无丢包情况下等于使用3G流量,丢包严重的情况下会更高。
1.安装依赖
- apt-get install libnet1
- apt-get install libpcap0.8
- apt-get install libnet1-dev
- apt-get install libpcap0.8-dev
2.下载最新源码编译
- git clone https://github.com/snooda/net-speeder.git net-speeder
- cd net-speeder
- chmod 777 *
- sh build.sh -DCOOKED
3.使用ifconfig命令查看当前网卡设备名,如搬瓦工是venet0:0,那么执行以下命令运行
- ./net_speeder venet0:0 "ip"
4.测试正常以后使用后台运行
- nohup ./net_speeder venet0:0 "ip" > log 2>&1 &
5.如需关闭net-speeder可使用以下命令
- killall net_speeder
本次搭建参考以下文章:
该评论为私密评论
@tennfy 感谢提醒
已标注