趁着元旦优惠购入VPS又开始搭设SHADOWSOCKS服务【已失效】

文章目录[隐藏]

趁着元旦优惠购入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

  1. 体积小巧。
  2. 静态编译并打包后只有 100 KB。
  3. 高并发。
  4. 基于 libev 实现的异步 I/O,以及基于线程池的异步 DNS,同时连接数可上万。
  5. 低资源占用。几乎不占用 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

使用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

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

 

本次搭建参考以下文章:

2 条评论

Leave a Reply

Your email address will not be published. Required fields are marked *

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫