ios科学上网之shadowsocks

网络 by 神秘人 at 2015-03-14

VPS虚拟主机

  • 随GFW不断加高,以往常用的VPN及Goagent己经渐逐失去功能.
  • 一个新的穿墙软体shadowsocks出现了

Shadowsocks

  • 翻墙软件一般分为服务端及客户端.我举例说明,客户端在A,服务端在B地,google网站在C地.

  • 人在A,A在河东岸,B与C在河西岸.河东至河西有座桥,桥上有个守卫叫GFW,手上有份名单,标注能去地方.去B放行,去C阻止.所谓翻墙将人从A送到B,再从B转到C.

  • 问题来了,怎么把人从B送到C,这就要shadowsocks 服务端.服务端安装完成后进行密码设置,以免他人闯入.
  • 客户端设置,使人带密码前往B地.

具体步骤

  • 国内电脑大部份用windows系统,客户端只要下载shadowsocks-gui就可. 001
  • shadowsocks服务端布置在vps,vps为虚拟主机可以选择操作系统,我选用的是debian7 86

  • vps 请看这 搬瓦工3.99刀vps购买攻略

    因为大陆大多使用windows系统,不能直接连上linux vps,所以要下载putty,使用putty连接vps. putty

    002

    003

  • 将下面的方框禸数据输入光标,复制后点击右键

  • Debian & Ubuntu

    Install from repository

  • Add either of the following lines to your

       vim  /etc/apt/sources.list 
    

加入系统选择系统源

 deb http://ftp.us.debian.org/debian sid main
  • 加入后,升级源文件目录

    apt-get update
    
    apt-get install shadowsocks-libev
    

安装成功

  • 安装成功后,Configure and start the service

安装vim

apt-get install vim 
  • Edit the configuration

    vim  /etc/shadowsocks-libev/config.json
    

点击键盘“i",进入编缉模式,完成下面修改输入后,按“Esc”,退出编缉模式,再输入“:wq”,就可保存退出了 复制下面入文档

{
    "server":"my_server_ip",
    "server_port":8388,
    "local_port":1080,
    "password":"barfoo!",
    "timeout":600,
    "method":"rc4-md5",
}

下面只是对上面解释,不用复制 Explanation of each field:

server: your hostname or server IP (IPv4/IPv6).(一般填VPS的IP地址)
server_port: server port number.(VPS服务器的端口,最好设置小于1000的数)
local_port: local port number.(当地端口一般为1080)
password: a password used to encrypt transfer.(密码,用户客户端)
timeout: connections timeout in seconds.(超时时间,一般不用变)
method: encryption method, "bf-cfb", "aes-256-cfb", "des-cfb", "rc4", etc. Default is table, which is not secure. "aes-256-cfb" is recommended.(加密方式,客户端使用 )

Start the service

    /etc/init.d/shadowsocks-libev restart
  • 现在正在shadowsocks的程序,就像windows下运行的一样,一旦重启后就不会自动启动,所以还要进行主机重启后自动启动。

以下适合ovz类型调整

Edit the limits.conf

vim /etc/security/limits.conf

增加下面两行

* soft nofile 51200
* hard nofile 51200

然后在SSH命令行下输入下行

   ulimit -n 51200

Start the service

    /etc/init.d/shadowsocks-libev restart

*可以通过下面查看shadowsocsk是否开启及端口是否正确

netstat -tlunp

修改/etc/rc.local及添加开机服务#(debain8以后从源安装默认自动启动shadowsocks,无须以下操作)

1、修改/etc/rc.local

   vim /etc/rc.local

2、在 exit 0 前面添加好脚本代码,以shadowsocks为例:

   /etc/init.d/shadowsocks-libev start
   exit 0

3、添加开机服务 首先需要要执行的脚本在/etc/init.d/目录下,然后采用如下方式添加服务

   update-rc.d xxx defaults

事实上该命令的作用是在rc0.d、rc1.d、、、rc6.d六个目录下建立软连接。

同样以shadowsocks为例,首先查看下/etc/init.d/目录下有没有shadowsocks-libev,经过查看确实有,然后执行以下命令:

   update-rc.d shadowsocks-libev defaults

这样就可以了。

如果想移除该开机服务,可以使用如下代码

  update-rc.d -f xxx remove

清理所有软件缓存:

apt-get clean

查shadowsocks-libev版本

dpkg -l | grep shadowsocks-libev

在IOS上安装shadowrocks

Shadowrocket for iOS

027

028

如果想安装最新的shadowsocks-libev,请到下面地址下载

https://packages.debian.org/experimental/shadowsocks-libev

shadowsocks提速

TCP优化

1.修改文件句柄数限制

修改 vim /etc/security/limits.conf文件,加入

* soft nofile 51200
* hard nofile 51200

修改vim /etc/pam.d/common-session文件,加入

session required pam_limits.so

修改vim /etc/profile文件,加入

ulimit -SHn 51200

然后重启服务器执行ulimit -n,查询返回51200即可。

2.调整内核参数

修改vim /etc/sysctl.conf文件,用以下内容替换

fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
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_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

保存修改后执行 sysctl -p

使配置生效。

设置hybla为优先

sysctl net.ipv4.tcp_congestion_control=hybl

设置htcp为优先

sysctl net.ipv4.tcp_congestion_control=htcp

其中最后的hybla是为高延迟网络(如美国,欧洲)准备的算法,需要内核支持,测试内核是否支持,在终端输入:

sysctl net.ipv4.tcp_available_congestion_control

如果结果中有hybla,则证明你的内核已开启hybla,如果没有hybla,可以用命令modprobe tcp_hybla开启。

对于低延迟的网络(如日本,香港等),可以使用htcp,可以非常显著的提高速度,

首先使用

modprobe tcp_htcp

开启,再将net.ipv4.tcp_congestion_control = hybla改为net.ipv4.tcp_congestion_control = htcp,建议EC2日本用户使用这个算法。

卸载模块的方法:

  rmmod tcp_hybla

sysctl.conf报错解决方法

修复modprobe的: rm -f /sbin/modprobe ln -s /bin/true /sbin/modprobe

修复sysctl的:

rm -f /sbin/sysctl 
ln -s /bin/true /sbin/sysctl