ss 公共代理的必要设置(转)
转: https://gist.github.com/fqrouter/95c037f9a3ba196fd4dd
本文只关注于确保ss服务还“活着”,如果你希望让其跑得更快,请参考
https://github.com/clowwindy/shadowsocks/wiki/Optimizing-Shadowsocks
1、 ss的timeout设置
超时时间越长,连接被保持得也就越长,导致并发的tcp的连接数也就越多。对于公共代理,这个值应该调整得小一些。推荐60秒。
2、 检查操作系统的各种限制
对于openvz的vps,特别需要检查一下
shell# cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
1005: kmemsize 6499239 34332672 50331648 50331648 0
lockedpages 0 0 12288 12288 0
privvmpages 20185 89959 9223372036854775807 9223372036854775807 0
shmpages 654 670 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numproc 26 102 9223372036854775807 9223372036854775807 0
physpages 12181 24887 0 24576 536
vmguarpages 0 0 9223372036854775807 9223372036854775807 0
oomguarpages 7054 30538 9223372036854775807 9223372036854775807 473
numtcpsock 52 1500 1500 2000 21583239
numflock 1 5 9223372036854775807 9223372036854775807 0
numpty 1 16 9223372036854775807 9223372036854775807 0
numsiginfo 0 63 9223372036854775807 9223372036854775807 0
tcpsndbuf 7497680 29165536 104857600 209715200 0
tcprcvbuf 18891984 88633288 104857600 209715200 0
othersockbuf 39304 386848 9223372036854775807 9223372036854775807 0
dgramrcvbuf 0 166480 9223372036854775807 9223372036854775807 0
numothersock 27 37 1500 2000 0
dcachesize 2293779 25165824 25165824 25165824 0
numfile 362 1910 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
dummy 0 0 9223372036854775807 9223372036854775807 0
numiptent 30 30 9223372036854775807 9223372036854775807 0
其中 numtcpsock 表示 tcp 连接数。像上面这样的情况,就不适合用于公共代理,因为vps商限制了并发的tcp连接数。
shell# ulimit -n
1024
这个命令检查默认的一个进程可以打开的文件数。1024这个默认值是不够的。推荐设置为8000
shell# ulimit -n 8000
shell# ss-server -s 0.0.0.0 -p 1080 -k xxxx -m rc4
上面启动ss-server的命令只是示意性的,请替换成你自己的启动命令。ulimit的设置是一次性的,每次启动ss-server之前都要设置一下。
3、 防止vps被用于暴力破解ssh密码等非法行为
只要ss被公开出去,肯定会有人拿代理用于暴力破解ssh的密码。
推荐你把ss限制为只允许访问443和80两个端口。如果你不添加这样的限制,
很多vps商都会因为ssh连接开得太多而暂停对你的服务。
shell# adduser http-ss
shell# su http-ss -c "ss-server -s 0.0.0.0 -p 1080 -k xxxx -m rc4"
让ss-server以特定的用户启动
shell# iptables -t filter -A OUTPUT -d 127.0.0.1 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner http-ss -A OUTPUT -p tcp --sport 1080 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner http-ss -A OUTPUT -p tcp --dport 80 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner http-ss -A OUTPUT -p tcp --dport 443 -j ACCEPT
shell# iptables -t filter -m owner --uid-owner http-ss -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset
对于http-ss用户,限制其不能访问80,443之外的端口
4、 防止DMCA Compliant
虽然你已经把shadowsocks限制为只能访问80/443端口,但是对于美国的vps,仍然有额外的一点需要注意。
因为美国的vps需要遵从美国的DMCA版权法律,如果该vps被用于bt下载,而且正好遇上了电影公司设置的蜜罐的话,
你的vps的ip就会被记录下来。然后DMCA Compliant律师函会被送往你的vps商那,然后就会被停止服务。
为了避免shadowsocks帐号被用于bt下载,你不得不对80端口的流量再进一步进行限制
shell# apt-get update && apt-get install -y nginx
安装nginx
server {
listen 127.0.0.1:3128;
server_name localhost;
resolver 8.8.8.8;
location / {
set $upstream_host $host;
if ($request_uri ~ "^/announce.*") {
return 403;
}
if ($request_uri ~ "^.*torrent.*") {
return 403;
}
proxy_set_header Host $upstream_host;
proxy_pass http://$upstream_host;
proxy_buffers 8 32k;
proxy_buffering off;
}
}
然后配置nginx的server
shell# iptables -t nat -m owner --uid-owner http-ss -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 3128
把所有的80端口流量转到nginx来处理
ss 公共代理的必要设置(转)的更多相关文章
- collectionView代理方法快速设置cell大小上下左右间隔
#define JianGe 25 #define GeShu 4 #define ScreenWidth ([UIScreen mainScreen].bounds.size.width) #def ...
- 【Nginx】nginx 代理 Haproxy 怎么设置?
由于Haproxy是通过 url 正则匹配 识别 的,nginx代理到 haproxy需要设置 proxy_set_header Host 为 haproxy的目标 url 直接上配置 upstrea ...
- IE代理文件自动设置
想如果代理可用就使用代理,代理不可用就直接连接网络. 新建文件放入javascript代码,保存为proxy.pac,保存路径c:\proxy.pac function FindProxyForURL ...
- 解决 IIS 反向代理ARR URLREWRITE 设置后,不能跨域跳转 return Redirect 问题
1.选择iis根节点,点击ARR 2.选择代理设置 3.去掉reverse rewrite host in response headers的勾选,点击应用即可
- laravel5.8笔记六:公共函数和常量设置
公共函数 创建bootstrap/common.php <?php // 发送短信 function sendSMS($mobile){ } // 发送邮件 function sendMail( ...
- linux使用http代理连接服务器设置方法
连接腾讯的额cvm服务器官方给出的也有个方法,详细可以看这里:http://wiki.open.qq.com/wiki/%E4%BB%8E%E6%9C%AC%E5%9C%B0linux%E6%9C%B ...
- 第二章 Burp Suite代理和浏览器设置
Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据.服务器端的返回信息等.Burp Suite主要拦截http和https协议的流量,通过拦截,Burp S ...
- EF中多表公共字段,以及设置EntityBase使所有实体类继承自定义类
使用EF框架访问数据库时,如果某些表具有公共字段,例如在审核流程中,对于各类申请单资料的创建人.创建时间.修改人.修改时间,这些可能多表都需要的字段,如果在每个实体中进行赋值操作显然是类似和重复的,下 ...
- npm安装使用淘宝代理的方法(设置registry参数)
公司防火墙问题导致 npm下载失败,安装使用cnpm不知道什么原因抽筋, 还有一个简单的办法,就是npm安装模块时,设置代理: npm install -g vue-cli --registry=ht ...
随机推荐
- ibatis传入数组或List
小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法.标签里面都不需要表名 1.传入字符串数组,不需要标明parameterClasss,数组和List类型对象一样都可以用&l ...
- URL Routing
们知道在ASP.NET Web Forms中,一个URL请求往往对应一个aspx页面,一个aspx页面就是一个物理文件,它包含对请求的处理. 而在ASP.NET MVC中,一个URL请求是由对应的一个 ...
- java类的加载、链接、初始化
JVM和类的关系 当我们调用JAVA命令运行某个java程序时,该命令将会启动一条java虚拟机进程,不管该java程序有多么复杂,该程序启动了多少个线程,它们都处于该java虚拟机进程里.正如前面介 ...
- cocos2dx 3.x(加载cocostudio进度条)
// // MyLoagingScene.hpp // My // // Created by work on 16/10/13. // // #ifndef MyLoagingScene_hpp # ...
- 误卸载python2.4导致yum不能用后的修复
去 http://mirrors.ustc.edu.cn/centos/或者镜像下载如下包,版本不一定非常一致 python-2.4.3-56.el5.x86_64.rpmpython-devel-2 ...
- 自动检查点(Automatic Checkpointing)
自动检查点(Automatic Checkpointing)在oracle10g,支持自动检查点调优,这样可以提高系统可用性.自动检查点调优需要开启参数fast_start_mttr_target. ...
- [转]那些年我还不懂:IList,ICollection,IEnumerable,IEnumerator,IQueryable
1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Re ...
- 详细讲解Quartz.NET
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- linux:习惯
1>.系统里面必须最少有两个账号,一个root,一个普通账户; 2>.平时登录系统均使用普通账户登录,除非需要配置或者执行特殊命令才切换至root; 3>.linux系统下严格区分大 ...
- 解决多线程调用sql存储过程问题
场景: 我们程序现在改成多线程了,我现在需要把临时表中的数据给插入到TABLE_M中,但这时候可能其他的线程也在插入,我就不能用之前我们的方案了(select max(oid) from Tuning ...