微信大數據報告揭用家細節 網民質疑被監控




微信公布用家生活細節,被網民質疑監控。網圖

微信近日發布一份大數據報告,內容包括網民們常用的表情符號、睡眠時間和視像通話習慣。惟不少網民質疑報告侵犯用家私隱,聊天紀錄等資料被微信監控。

報告內容非常詳細,各年齡層的用戶特徵鉅細無遺。有內地網民質疑,微信如何得知55歲以上用家,習慣於晚餐後與子女進行視像通話等細節;也有網民聲稱,在微信聊天時提到某品牌後,隔幾天便會看到相關品牌的廣告,質疑微信擅取用戶聊天紀錄。

報告又詳列了以下資訊:例如00後的睡眠習慣為晚睡早起,睡眠時間最短;90後出行習慣為每個月約25次,並大多乘搭公共交通工具。

微信回應網民質疑指,是通過用家年齡在特定時間的通話,發現是年長用家致電話年輕用家,故推測是親子關係。微信同時強調,報告嚴格遵守相關法律法規要求,所有數據均已匿名及去敏感化處理。又指公司不會留存任何用戶的聊天記錄。

Windows Server/桌面系统 安装Shadowsocks(R)服务



(Last Updated On: 2018-11-07)

基于一些用户希望使用的window server或者window桌面系统(win7/win10)安装shadowcocks(R)服务,收集整理一下这方面的教程,也做一下更新。VPS自带的windows server价格是比较贵的,如Vultr的就要多$16,原因基本是需支付微软授权费,装机量少之类的,所以也有用户会通过镜像安装盗版系统,被查出来就有被封号的风险。并且VPS便宜的配置不高,带界面的Windows会更吃内存和硬盘。如劝退失败,实在有这方面的需要,可以继续往下看。

1.搭建环境

本人测试使用的是虚拟机,镜像安装的Windows Server 2012 R2,除了自带Power Shell命令行工具、服务器环境和安全级别默认设置最高之外,操作起来未发现有太大的区别。所以使用Windows7/Windows10也差不多。

Chocolatey

安装环境可以自己下载安装,然后配置路径到环境变量。然而习惯了包管理工具,如Mac的HomeBrew,Debian的apt,Windows的话随便搜索到了chocolatey 就用了。包管理工具的好处就是方便安装和卸载,还能自动配置环境变量。安装区分cmd.exe和PowerShell.exe两种。分别根据这2种工具进行选择。如失效,优先参考官网步骤:https://chocolatey.org/install 

#cmd 很长,但是其实是一句  @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"    #powershell 很长,也是一句  Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装Python

默认安装3.7.0版本。Windows版本的
choco install python    #检测是否安装并添加到环境  python --version  Python 3.7.0

安装OpenSSL

OpenSSL实现安全套接字层和传输层安全性协议的项目,ss和ssr需要这个工具包。
choco install openssl.light    #检测是否安装并添加到环境  openssl version  OpenSSL 1.1.1 11 Sep 2018

安装git

用于拉取仓库文件、利用mingW来运行shell,根据需要安装,建议也装了。
choco install git --params "/GitAndUnixToolsOnPath /NoAutoCrlf"    #检测是否安装并添加到环境  git --version  git version 2.19.0.windows.1

2. 安装shadowsocks

根据社区主页的加以改动,也可以参考社区的步骤。

下载

chocolatey仓库也有shadowsocks,不过是Windows版本的客户端。我们使用Python自带的包管理工具PyPI(pip)来安装,既然Python有包管理工具,为什么还要chocolatey?。可能会提示pypi的版本过低,可以按提示升级。
#以下方式会安装2.8.2,会因为新版本的OpenSSL报错:AttributeError: function 'EVP_CIPHER_CTX_cleanup' not found  pip install shadowsocks    #建议使用这种方式,可以安装3.0.0  pip install -U   git+https://github.com/shadowsocks/shadowsocks.git@master

成功后会下载到python的lib\site-packages文件夹,如C:\Python37\lib\site-packages\shadowsocks。

添加配置文件

配置文件不是必须的,可以通过命令行来运行,配置文件比较方便。创建一个config.json文件,放在上面的shadowsocks目录,运行的话会自动加载这个配置文件。

{  "server":"0.0.0.0",     ##填写服务器外网ip地址  "server_port":8000,  ##代理端口  "local_address":"127.0.0.1",  "local_port":1080, ##本地监听端口  "password":"123456",   ##连接密码  "timeout":300,  "method":"aes-256-cfb", ##加密方式  "dast_open":false  }

运行

运行方式有几种,运行后,退出关闭命令行或者control+c。
#直接默认运行,加载目录下的config.json  ssserver     #指定配置文件路径  ssserver -c xxx\config.json  

3.安装ShadowsockR

下载

镜像地址下载,解压到无中文路径目录下。如C:\shadowsocksr-manyuesr。

配置

目录下复制config.json为user-config.json,并且修改里面的参数。

{   "server": "0.0.0.0",   "server_ipv6": "::",   "server_port": 8388,   "local_address": "127.0.0.1",   "local_port": 1080,      "password": "m",   "method": "aes-128-ctr",   "protocol": "auth_aes128_md5",   "protocol_param": "",   "obfs": "tls1.2_ticket_auth_compatible",   "obfs_param": "",   "speed_limit_per_con": 0,   "speed_limit_per_user": 0,      "additional_ports" : {}, // only works under multi-user mode   "timeout": 120,   "udp_timeout": 60,   "dns_ipv6": false,   "connect_verbose_info": 0,   "redirect": "",   "fast_open": true  }

运行

和ss很类似

#1.普通运行,  #先cd进入到shadowsocksr-manyuser目录  python server.py    #2.后台运行 (参照的是linux的方式)  #cd进入到shadowsocksr-manyuser\shadowsocks  .\logrun.sh  #运行成功任务管理器查看会发现驻留python进程。前提需要安装git(默认携带mingW来运行shell)。    #2.1尝试用.\stop.sh 并不能停止,手动到任务管理器去停止。    #2.2查看日志使用下面的命令,弹窗输出和普通运行一样的命令。  .\tail.sh     #2.3 其实到文件夹中直接双击这些脚本文件也可以执行脚本

4.其他

由于是在虚拟机部署,所以server填的127.0.0.1,还要区分server的本地监听端口和客户端的本地监听端口(如果是在VPS上,这些不用理会)。测试时在虚拟机内安装ssr客户端,关闭了防火墙(VPS也可以关闭或者到防火墙中添加开放端口),使用全局模式,成功连接,并且看到了日志。

包管理器安装在虚拟机内,install时并不顺畅,VPS上未尝试,实在不行,可以手动下载包来安装,但是要配置环境变量。PowerShell需要管理员模式运行。

SSR参考的是doubi和破娃的最后版本fork,如需新版本就得参考后续的维护者的了。

欢迎指教。

利用 WIFI 热点分享 VPN 连接


前言

  • 之前介绍过局域网共享HTTP代理,配置简单但至少需要三设备参与,而且无法用来通过谷歌开机引导了。这次介绍的是利用创建WIFI热点的方式来分享VPN连接,配置起来同样简单方便;
  • 本文主要讲述的是利用SSTap等软件将ss/ssr/v2等代理转换为类VPN的真·全局效果,再通过WiFi热点分享VPN连接,若有VPN的话就不用转换直接使用就可以了;
  • 以下分别介绍Windows和Android平台创建热点分享VPN连接的方式。

WINDOWS平台

准备工作

  1. 下载SSTap并安装,自备ss/ssr服务器;(也可用Outline,但仅支持部分ss)
  2. 下载Connetify Hotspot并安装,安装后需重启;

配置过程

  1. 使用SSTap添加ss/ssr服务器(支持订阅)并点击连接(全局模式即可),该过程很简单,若不会可以参考SSTap使用教程
  2. 打开Connectify,点击Wi-Fi热点,要共享的Internet选择SSTap创建的适配器(若列表中没有可以点击右上角的刷新按钮刷新再进行选择),密码可以自定义,完成后点击启动热点
    Connectify-Hotspot.png
  3. 热点创建成功后,其他设备链接该热点即可实现科学上网。

ANDROID平台

准备工作

  1. 自备科学上网方式;
  2. 一台有root权限的Android机,下载VPN Hotspot并安装。

配置过程

  1. 开启爱国上网;
  2. 进入VPN Hotspot,然后按下图所示操作;(记得同意该软件的root权限请求)
    vpn-hotspot.png
  3. 创建成功后,其他设备链接该热点即可实现科学上网。

科学上网

作者:左耳朵 http://coolshell.cn 更新时间:2018-11-29

来源:https://haoel.github.io/

这篇文章可以写的更好,欢迎到 https://github.com/haoel/haoel.github.io 更新


0. 序

首先,我们先明确一下,我科学上网的目的主要是为了学习、工作、交友、查资料、和丰富自己的眼界,不是为了看黄片,或是干一些非法、政治或是见不得人的事。

对我来说,科学上网很重要,下面罗列一下需要科学上网,我才能真正学习工作和生活的网站:

  • Youtube 和 Vimeo 上的各种大会和教学视频,除了我自己要学,我的孩子也要学。
  • Wikipedia 维基百科是我目前唯一信得过的百科全书,我在上面可以比较系统地翻阅各种词条。
  • Slideshare 上有很多的技术文档和资料的PPT,是我的知识学习的地方。
  • Quora 问答网站,在上面有很多有趣的问答。
  • 博客和论文,很多博客和论文站点都被墙了,比如:Blogspot 和 Medium。
  • Google 的各种服务,比如:Gmail, Map, Docs,Driver,照片,图片搜索,Voices,论文搜索……包括Google官方的各种技术文档……
  • 一些云服务,比如:Dropbox,IFTTT,Imgur,archive.org……
  • Twitter 上 Follow 一些牛人和一些官方账号,比如:AWS、Docker……
  • 社交 Facebook, Telegram, Whatsapp,Slack…… 有一些我在国外的亲戚和朋友……
  • Reddit 是一个聚合网站,一个新闻和文章的集散地,你可以认为是各种频道的今日头条……
  • Pintrest 和 Instagram 上面有很多不错的图片和视频新闻,是我减压力的地方……
  • 新闻,如BBC。 BBC是全球比较出众的媒体,有太多的有价值资源和内容了,比如纪录片、学英文……
  • 编程,有很多编程的场景需要翻墙,比如,Go语言编程时的 go get 中的很多库是放在 Google的服务器上, 然而Google是全部被墙,包括 Android 和其它一些文档和资源也是一样。包括 SourceForge 的某些项目也需要科学上网,Docker Registry也有部分被墙,还有偶尔抽疯的Github,以及不能访问的gist……
  • ……等等

是的,我的互联网不是——全是骗子的百度、充满广告的微信朋友圈、质量低下的公众号、娱乐至死的新浪微博、只有抖机灵和"怎么看XX"的知乎、毫无营养的今日头条…… 在这样的网络空间里,我真的无法生存…… 这根本不是互联网,不是为我服务的互联网,而是在消费我的互联网,是让我变傻变笨的互联网…… 我不能忍,因为它影响到了我的生存……

1. 英文能力

首先,你应该对英文读写没什么问题!

为什么这么说?逻辑是这样的,如果你上了Google还是在用中文关键词,那么你科学上网有什么意义呢?换言之,科学上网的目的是为了进入广阔的世界范围与全世界的人交流,所以,英文是必备的,如果你英文有问题,VPN过去的用处也不大。

所以,我把这个前提条件放在第一的位置,就是说—— 真正的墙不是GFW,而是人的大脑!

2. 购买VPS

然后,你需要一个VPS。

(注:当然,你也可以直接购买一些科学上网的服务,但我这里不推荐了,一方面是广告,另一方面可能会害了对方

现在你买一台VPS也不贵了,也就是一个月10美金左右(70元),我个人一个月你花70元钱不算奢侈的事,而且会让你的生活质量得得改善

2.1 常规VPS

对于VPS,下面是一些常规选项。

  • AWS日本或韩国申请个免费试用一年的EC2 VPS (需要国际信用卡)
  • Google Cloud Platform提供免费试用,赠送300刀赠金(需要国际信用卡)
  • Linode买个一月USD10刀的VPS
  • Vultr上买一个日本的VPS,一个月5刀 (可以支付宝)
  • Conoha上买一个日本的VPS,一个月900日元 (可以支付宝)

注意

  • 日本区的网络质量并不是很好,有时候会有很大的丢包率(不同的网络不一样),有时候会很慢。上述的这几个VPS服务商中,AWS韩国和日本会好点,然后是Linode,最后是Conoha和Vultr(如果你有更好的,请推荐)

  • Google Cloud Platform - GCP 的香港和台湾结点也是很快的。但是你要能买GCP的主机,你还得先翻墙,所以,感觉有点死锁了。所以,你可能先用Vultr(按时付费)翻墙,然后再到GCP上购买。

2.2 CN2 线路

如果你需要更好更高速的网络服务(比如你要看Youtube的1080P),那么,你需要下面的这些服务器资源了(价格也会高一些)

CN2 和 GIA 是两个关键词。CN2 GIA 全称 China telecom Next Carrier Network- Global Internet Access 电信国际精品网络,特征是路由线路上骨干节点均为59.43开头的IP。如果想要寻找接入CN2线路的国外VPS提供商,建议使用 Next Carrier Network 或者 CN2 这个关键词搜索即可。

多说一句, CN2本身又分为两种类型:

  • CN2 GT: CN2 里属于Global Transit的产品(又名GIS-Global Internet Service),在CN2里等级低,省级/出国节点为 202.97 开头,国际骨干节点有2~4个 59.43 开头的CN2节点。在出国线路上拥堵程度一般,相对于163骨干网的稍强,相比CN2 GIA,性价比也较高。

  • CN2 GIA: CN2 里属于Global Internet Access的产品,等级最高,省级/出国/国际骨干节点都以59.43开头,全程没有202.97开头的节点。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定,当然,价格也相对 CN2 GT 偏高。

关于 CN2 线路的主机提供商,下面罗列几个

  • 搬瓦工 这应该是美区最好的一个用来科学上网的VPS提供商了,实测飞快。购买时你需要注意VPS规格上的 CN2 和 GIA 的描述。(注:点击主页右上角的 regisiter 以后,你可以看到页面上方有两个导航条,在下面的导航条上点 Services -> Order New Services 就可以看到所有的列表了。买完后,你可能需要重装一下操作系统,装成64位带BBR的 )
  • Gigsgigscloud CN2 GIA 在香港的结点是很不错的,当然,价格也很不错(建议几个人一起平摊费用)
  • Kvmla 香港地区的CN2 GIA提供商 每月80元
  • Hostdare 的CN2 GIA产品也是三网直连,KVM和OpenVZ两种架构,KVM产品长期缺货

更多的可以参考这篇文章《CN2 GIA VPS主机收集整理汇总-电信,联通,移动三网CN2 GIA线路VPS主机

重点说一下,CN2 GIA + 香港机房,你会得到巨快无比的上网速度,然而,香港地区的VPS的确是有点贵了。在Youtube.com上看1080p的视频毫无压力。虽然阿里云和腾讯的也有,但是被查到的风险基本上是100%,不建议使用,被抓了别怪我没警告过你。

2.3 NCP 线路

NCP 全称 New Cross Pacific(新跨太平洋海底光缆系统)。 2018年11月底,中国到美国之间的海底光缆新开通了NCP线路,并且容量更大(系统设计容量超过80Tbps),路由更少(中国上海到美国中间路由节点只有11个,ping值110ms)。

NCP线路全长13,000公里,连接美国俄勒冈州希尔斯伯勒,连接崇明(中国大陆),南汇(中国大陆),临港(中国大陆),釜山(韩国),头城(台湾),和丸山(日本)。

相对于第二条中美直达海底光缆系统(跨太平洋快线,TPE),现阶段NCP线路的网络流量更少更稳定。特征是华东/中地区流量会经过NCP直达路由节点,IP地址为202.97.95.201/202

关于 NCP 线路的主机提供商,下面罗列两个

  • 50KVM VPS 截止2018年12月2日KVM 产品最低价格¥81.60/月。
  • OLVPS 截止2018年12月2日KVM 产品最低价格¥22/月。

3. 搭建 Shadowsocks 和 VPN 服务

3.1 设置Docker服务

首先,你要安装一个Docker CE 服务,这里你要去看一下docker官方的安装文档:

然后开始设置你的VPN/SS服务

3.2 开启 TCP BBR 拥塞控制算法

TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google设计,于2016年发布的拥塞算法。以往大部分拥塞算法是基于丢包来作为降低传输速率的信号,而BBR则基于模型主动探测。该算法使用网络最近出站数据分组当时的最大带宽和往返时间来创建网络的显式模型。数据包传输的每个累积或选择性确认用于生成记录在数据包传输过程和确认返回期间的时间内所传送数据量的采样率。该算法认为随着网络接口控制器逐渐进入千兆速度时,分组丢失不应该被认为是识别拥塞的主要决定因素,所以基于模型的拥塞控制算法能有更高的吞吐量和更低的延迟,可以用BBR来替代其他流行的拥塞算法,例如CUBIC。Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%。

BBR之后移植入Linux内核4.9版本,并且对于QUIC可用。

如果开启,请参看 《开启TCP BBR拥塞控制算法 》

3.3 设置Shadowsocks服务

Shadowsocks 的 Docker 启动脚本 (其中的 SS_PORT 和 SS_PASSWD 需要重新定义一下)

#!/bin/bash    SS_PORT=1984  SS_PASSWD=MyPasswd    sudo docker run -dt --name ss \     -p ${SS_PORT}:${SS_PORT} mritd/shadowsocks \     -s "-s 0.0.0.0 -p ${SS_PORT} -m aes-256-cfb -k ${SS_PASSWD} --fast-open"  

3.4 设置L2TP/IPSec服务

L2TP/IPSec 的启动脚本,其中的三个环境变量 USER, PASS 和 PSK 需要替换一下。

#!/bin/bash    USER=someone  PASS=password  PSK=psk_key    sudo docker run -d  --privileged \      -e PSK=${PSK} \      -e USERNAME=${USER} -e PASSWORD=${PASS} \      -p 500:500/udp \      -p 4500:4500/udp \      -p 1701:1701/tcp \      -p 1194:1194/udp  \      siomiz/softethervpn  

3.5 设置PPTP服务

PPTP不安全,请慎重使用

sudo docker run -d --privileged --net=host                   -v {/path_to_file/chap-secrets}:/etc/ppp/chap-secrets \                  mobtitude/vpn-pptp  

PPTP 使用 /etc/ppp/chap-secrets 文件设置用户名和密码,所以你需要给docker容器提供这个文件,下面是这个文件的示例:

# Secrets for authentication using PAP  # client    server      secret           acceptable local IP addresses    fuckgfw   *           whosyourdaddy    *  

4. 客户端设置

4.1 Shadowsocks 客户端

对于 Shadowsocks 客户端,可以到这里查看 Shadowsocks Clients

  • MacOS 上你可以下载 ShadowsocksX-NG
  • Windows上你可以下载 Shadowsocks-Windows,需要先安装 .NET Framework
  • Android的客户端,你可以用手机访问并下载 Shadowsocks-Android
  • iPhone 端就比较麻烦了。因为国内全都被下架了。
    1. 你需要注册一个美国的苹果ID.
    2. 然后 iTunes/App Store 用这个美区的ID登录(不是退出iCloud ,而是退出App Store)
    3. 然后搜索 Wingy ,你会搜到 OpenWingySuperWingy 等

注意

4.2 VPN 客户端

对于L2TP/IPSec,几乎所有的客户端操作系统(无论是Windows/Mac/Linux的电脑,还是iPhone/Android)都支持,你可以自行Google。

5. 流量伪装和其它方式

我们知道,你翻墙的行为,其实都是在被探测中的,因为无论你的手机还是宽带都是有需要到运营商那里开通上网账户的,所以,各大电信运营商有你的所有的上网的记录。

在Youtube上有个视频,你可以看一下 《哪种翻墙软件更隐蔽?》,这个播主实测过,SS也好,SSR也好,无论你怎么混淆,都是没用的,都是可以被抓出来的。只有V2Ray 和 Brook 可以伪装得很好。

注: 说句老实话,我其时并不想害怕别人知道自己的上什么样的网站,因为我觉得我访问的都是合法的网站,但是就今天这个局势我也没办法——为什么要让像我这样的光明正大的良民搞得跟偷鸡摸狗之徒一样……

5.1 V2Ray

V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网(翻墙)学习国外先进科学技术。

V2Ray 配合一些模块目前来说可以伪装成正常的流量。但是配置想当复杂。大家可以自己Google自己玩吧。

5.2 Brook

Brook是一个由 Go语言编写的跨平台代理软件,支持 Linux/MacOS/Windows/Android/iOS 各个平台。

服务器一行命令安装:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/brook.sh && chmod +x brook.sh && bash brook.sh  

运行 brook.sh 会出菜单项,你可以按菜单项来,主要就是设置端口号,密码。很简单的,我这里就不截图了,因为这个脚本运行起来中文菜单式的。

然后你可以在 Brook 项目的 Github 首页上下载不同平台的客户端。设置起来也很简单!

(全文完)

用 ss-redir 或 redsocks 搭建透明网关

原生的Android刷机后第一次开机系统初始设置要连接谷歌服务器,如果没有透明代理就很麻烦,进不了桌面。这里可以通过一台Linux的机器(我用的是第一代树莓派)来达到透明代理的作用。平常情况下手机,平板和机顶盒也可以通过透明代理上网,简化配置。

环境要求

手机和树莓派在同一个局域网,并且可以相互访问,手机的WiFi连接,树莓派可以是无线网络也可以是网线连接(没有无线网络的第一代树莓派即可)。有可用的SS / SSR或者SOCKS5代理。

用SS-redir的搭建带SS代理的端口

如果是SSR用shadowsocksr-libev里的SS-再导向。注意后者多了一个r。我用的是SSR,在树莓派上自己编译的shadowsocksr-libev ,下面以SSR为例,SS类似。
配置ss-redir.json,参数和配置SSR一样,注意:"local_address":"0.0.0.0",这个必须为0.0.0.0。如果同一个机器上也运行SSR,local_port要用不同的端口,如SSR用1081,ss-redir用1088,下面配置里会用到1088这个端口。
运行SS-再导向,-v会显示一些日志信息:
./ss-redir -v -c ss-redir.json  
调试完成后,实际运行可以用:
nohup ./ss-redir -c ss-redir.json > /dev/null 2>&1 &  

启用内核转发

使用iptables的转发需要打开内核的IPv4转发功能,编辑/etc/sysctl.conf中,设置把net.ipv4.ip_forward = 1,让更新实时生效:
sudo sysctl -p /etc/sysctl.conf  

设置iptables的,IPSET转发

设置iptables的的目的是将本机特定IP的流量转向β-redir的监听的端口,这个端口是带代理的,这样特定IP的流量就自动代理了。可以配置跳过无需代理的中国IP.iptables执行要根权限,可以切换到根用户,或者用须藤方式运行。
先获取中国IP范围,保存文件是cn.zone。
wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone  
创建china.ipset脚本,内容如下:
# Destroy ipset if it already exists  #sudo systemctl stop iptables.service  sudo ipset destroy china    # Create the ipset list  sudo ipset -N china hash:net    # remove any old list that might exist from previous runs of this script  #rm cn.zone    # Pull the latest IP set for China  #wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone    # Add each IP address from the downloaded list into the ipset 'china'  for i in $(cat ./cn.zone ); do ipset -A china $i; done  
运行脚本创建中国的IPSET,脚本会把cn.zone文件里的IP段都加到中国的IPSET里。
sudo bash china.ipset  
创建的iptables命令脚本
iptables -t nat -N REDSOCKS  # 在 nat 表中创建新链    iptables -t nat -A REDSOCKS -p tcp --dport 28888 -j RETURN  # 28888 是 ss 代理服务器的端口,即远程 shadowsocks 服务器提供服务的端口,如果你有多个 ip 可用,但端口一致,就设置这个    iptables -t nat -A REDSOCKS -d 11.11.11.11 -j RETURN  # 11.11.11.11 是 ss 代理服务器的 ip, 如果你只有一个 ss服务器的 ip,却能选择不同端口,就设置此条    iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN  iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN  iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN  iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN  iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN  # 过滤局域网IP    iptables -t nat -A REDSOCKS -p tcp -m set --match-set china dst -j RETURN  # 过滤国内IP段,IP保存在china ipset里    iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 1088  # 1088 是 ss-redir 的监听端口,ss-local 和 ss-redir 的监听端口不同,配置文件不同    iptables -t nat -I PREROUTING -p tcp -j REDSOCKS  # 在 PREROUTING 链前插入 REDSOCKS 链,使其生效  
把上面的命令保存成iprules.sh文件,运行设置到系统里。
sudo bash  iprules.sh  
如果设置错误,清理iptables的设置用下面的命令:
sudo iptables -t nat -F  

手机端设置

手机端WiFi连接,选择静态IP,网关填写树莓派的IP。如果正常,此时手机不用配置代理即可正常访问Google服务器。

验证国内IP过滤

访问ip138淘宝IP,看看IP是不是国内IP,如果是国内IP就说明国内IP过滤成功了,国内IP没有走代理;相反如果是SSR服务器的IP,说明国内IP过滤配置失败了。

用redsocks2替代β-redir的

树莓派上本来跑了个SSR,环境太恶劣,经常需要tcping找可用的地址,重启SSR,不想再维护β-再导向的稳定性了,所以切换到redsocks了,redsocks可以直接用SSR提供socks5的代理,只维护SSR稳定可用即可。
没有用原版redsocks,使用了修改版的redsocks2,下载源代码编译略过。
redsocks2的配置config.json如下。如果socks5的代理是本机,ip = 192.168.1.104;行改成ip = 0.0.0.0;。文件配置里log_debug log_info daemon调试的时候可以根据需要配置上分类中翻译关闭或者,daemon = on是后台运行。这里redsocks监听的端口也配置成1088。
base {          log_debug = off;          log_info = off;            log = "file:/home/pi/redsocks/log.txt";            daemon = on;            redirector = iptables;  }    redsocks {          local_ip = 0.0.0.0;          local_port = 1088;            listenq = 128;            ip = 192.168.1.104;          port = 1081;            type = socks5;            autoproxy = 0;          timeout = 10;    }    ipcache {      cache_size = 4;      stale_time = 900;      port_check = 1;      cache_file = "/tmp/ipcache.txt";      autosave_interval = 3600;  }  
运行redsocks2
sudo ./redsocks2 -c ./config.json  
据说redsocks稳定性可能有些问题,配置的cron计划任务,每天凌晨3点重启一下好了。

IPSET设置速度优化

sudo bash china.ipset设置IPSET后,可以把IPSET设置保存起来,后面再恢复速度就快很多。
sudo ipset save > ipset.save.txt  
把下面脚本保存为ipset.restore.sh,每次开机设置一次。sudo iptables -t nat -F三条的含义是清空iptables nat配置,不然多次执行ipset会提示正在使用,禁止毁灭。建议:每次应该都是先设置ipset,再设置iptables的。
#!/bin/bash    sudo iptables -t nat -F  sudo iptables -t nat -X  sudo iptables -t nat -Z    sudo ipset destroy china  sudo ipset restore < ipset.save.txt  

其他说明

  • 不支持UDP流量转发,DNS污染用其他方法解决。我用的dnsmasq + overture.dnsmasq做缓存,推动做域名翻墙和国内IP分流.overture国内使用dnspod的DNS服务,国外使用8.8.8.8,这两个DNS服务都支持EDNS。
  • iptables的规则可以SH脚本运行,或者iptables-save命令后用的iptables-恢复来加载

参考资料

  1. ss-redir透明代理
  2. linux用shadowsocks + iptables + ss-redir实现全局代理
  3. Ubuntu的编译运行Redsocks2实现透明代理
  4. 使用iptables,ipset的全局智能代理