文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

Streisand Logo

Streisand

让翻墙自动化

互联网还可以更加不公平一点吗? ISP, 电信运营商, 政治家和企业非常容易屏蔽一个网站的访问和任何你感兴趣的信息. 但是想打破这个限制是困难的. 也许没有你想的那么困难.

Streisand是什么

  • 一条命令就可以搭建一个运行众多翻墙软件的服务器, 用来完全遮罩和加密的网络流量
  • Streisand原生支持在Amazon EC2, DigitalOcean, Google Compute Engine, Linode, 和Rackspace上搭建服务—很快有更多的服务商加入! 它也可以在任何Ubuntu 14.04服务器上运行 (不管什么服务商), 并且用这种方法可以同时配置数百个实例
  • 这个过程是完全自动化的并且只用大约十分钟的时间, 这是非常棒的, 因为你可能认为安装这些软件需要耗费系统管理员好几天的时间努力, 才搭建起Streisand默认配置提供的一部分软件
  • 一旦你的Streisand服务器运行之后, 你就可以把自定义的连接方法给你的朋友, 家人和同事. 这个连接指导中包括了服务器SSL证书的复制, 所以你只需要发给他们一个文件就行了
  • 每个服务器都是独立的, 并且包含了所有用户需要的东西, 包括所有通用客户端的加密验证镜像. 这使得任何想从默认下载位置进行的屏蔽完全失效
  • 稍等, 还有更多
第 1 段(可获 2 积分)

更多功能

  • Nginx基于提供的密码保护和加密网关功能服务新用户。网关可通过SSL访问,或作为Tor隐藏服务
    • 为Streisand创建的每个新服务器生成优雅的,自定义的,分步的客户端配置指令。用户可以通过任何Web浏览器快速访问这些说明。这些说明网页是响应式的,在手机上看起来棒极了。
    • 使用SHA-256校验和或通过验证GPG签名(如果项目提供它们)确保镜像软件的完整性。这可以防止用户下载损坏的文件。
    • 所有辅助文件,如OpenVPN配置文件,也可通过网关获取。
    • 当前Tor用户可以利用Streisand设置的附加服务,以便传送大文件或处理不适合于Tor网络的其他流量(例如BitTorrent)。
    • 为每个Streisand网关生成唯一的密码,SSL证书和SSL私钥。网关指令和证书在Streisand执行结束时通过SSH传输。
  • 不同的服务和多个守护程序提供了巨大的灵活性。如果一个连接方法被阻止,还有许多其他选项可用,其中大多数是抵抗深度封包检测。
    • 所有的连接方法(包括 L2TP/IPsec 和直接的OpenVPN连接)对土耳其一直在试验的封锁类型有效。
    • OpenConnect/AnyConnect, OpenSSH, OpenVPN(包裹在stunnel中),Shadowsocks和Tor(obfsproxy和obfs3可插拔传输)目前都能有效对抗中国的防火墙。
  • 每个任务都被详细记录和详细描述。 Streisand同时是它安装的所有软件配置最完整的安装指南,从此永远告别手动配置。
  • 所有软件运行在精心挑选的端口上,使简单的端口阻塞变得不现实,而不会导致大量的附带损害。例如,OpenVPN不在其默认端口1194上运行,而是使用端口636,这是所有公司都喜欢用的 LDAP/SSL 连接的标准端口。
    • L2TP/IPsec 是此规则的一个值得注意的例外,因为更改端口会破坏客户端兼容性
  • 不会记录连接的客户端的IP地址。 如果服务器被抓住或关闭不会留下任何信息。
第 2 段(可获 2 积分)

提供的服务

  • L2TP/IPsec 使用 Libreswan 和 xl2tpd
    • 生成随机选择的预共享密钥和密码。
    • Windows,OS X,Android和iOS用户都可以使用每个操作系统内置的本机VPN支持进行连接,而无需安装任何其他软件。
    • Streisand默认情况下不会在Amazon EC2或Google GCE服务器上安装 L2TP/IPsec ,因为实例不能直接绑定到其公共IP地址,这使得IPsec路由不可用。
  • Monit
    • 监视程序的健康状况,并在那些不太可能发生的事件,例如崩溃或无响应,自动重新启动服务。
  • OpenSSH
    • 为 sshuttle 和SOCKS功能生成非特权转发用户和SSH密钥对。
    • 还支持Windows和Android SSH隧道,并且密钥对的副本导出为PuTTY所需的.ppk格式。
    • 已安装 Tinyproxy 并且绑定到localhost。 它本身不支持SOCKS并且需要HTTP代理程序(例如Android的Twitter)通过SSH隧道访问。
  • OpenConnect / Cisco AnyConnect
    • OpenConnect (ocserv) 是一个拥有极高性能和轻量级的VPN服务器,完全兼容官方Cisco AnyConnect客户端。
    • 协议建立在诸如HTTP,TLS和DTLS之类的标准之上,并且是大型跨国公司中最受欢迎和广泛使用的VPN技术之一。
      • 这意味着,除了易于使用和快度之外,OpenConnect抗审查能力强,几乎从未被封锁。
  • OpenVPN
    • 生成自包含的“统一的”.ovpn配置文件,以便仅使用单个文件进行简单的客户端配置。
    • 支持TCP和UDP连接。
    • 多个客户端可以轻松共享相同的证书和密钥,但默认情况下会生成五个单独的集合。
    • 客户端DNS解析通过 Dnsmasq 处理以防止DNS泄漏。
    • 启用TLS认证,有助于防止主动探测攻击。 没有正确的HMAC的流量将会被丢弃。
  • Shadowsocks
    • 安装了高性能的libev变体版本。 此版本能够处理数千个同时连接。
    • 你只需要扫一扫生成的二维码,就能够自动配置Android和iOS客户端。你可以在墙上标记“8.8.8.8”,或者在墙上粘上Shadowsocks指令和一些二维码吧!
  • sslh
    • Sslh是一个允许Nginx,OpenSSH和OpenVPN共享端口443的协议解复用器。这提供了一个替代连接选项,意味着您仍然可以通过OpenSSH和OpenVPN路由流量,即使您在一个限制性的、阻止所有访问非-HTTP端口的网络。
  • Stunnel
    • 监听和封装OpenVPN连接。 这使他们看起来像标准的SSL流量,即使存在深度封包检测,OpenVPN客户端也能够成功建立隧道。
    • 用于隧道包装的OpenVPN连接的统一配置文件与直接连接配置文件一起生成。 还会生成详细说明。
    • stunnel证书和密钥以PKCS #12格式导出,因此它们与其他SSL隧道应用程序兼容。 值得注意的是,这使 OpenVPN for Android 能够通过 SSLDroid 隧道传输流量。 OpenVPN能够用于中国的移动设备? 是!
  • Tor
    • 通过一个随机的昵称设置 bridge relay
    • 安装了Obfsproxy 并配置其支持obfs3可插拔传输。
    • 生成一个BridgeQR代码,用于为Android自动配置Orbot 。
  • UFW
    • 为每个服务配置防火墙规则,发送到未授权端口的流量将被阻止。
  • unattended-upgrades
    • 您的Streisand服务器配置为自动安装新的安全更新。
第 3 段(可获 2 积分)

安装

在继续之前,请仔细阅读所有安装说明。

重要说明

Streisand基于Ansible,一种自动化工具,通常用于提供和配置远程服务器上的文件和包。 这意味着当您运行Streisand时,它使用VPN包和配置自动设置另一个远程服务器

这意味着您在家庭计算机(例如您的笔记本电脑)上运行Streisand时,它将启动并在您选择的托管提供商上部署另一个服务器。 通常,您不在远程服务器上运行Streisand,因为默认情况下会从你的服务器部署另外一个服务器,并使第一个服务器变得冗余(咻!)。 将立即添加对本地配置(即安装Streisand的本地配置系统)的支持。

第 4 段(可获 2 积分)

先决条件

在本地家庭计算机上完成所有这些任务。

  • Streisand需要BSD,Linux或OS X系统。 目前,不支持Windows。 所有以下命令应在终端会话中运行。
  • Python 2.7是必需的。 这是OS X的标准配置,几乎所有的Linux和BSD发行版都是默认配置的。 如果你的发行版包装了Python 3,你需要安装2.7版本,Streisand才能正常工作。
  • 确保~/.ssh/id_rsa.pub中存在SSH密钥。

    • 如果您没有SSH密钥,可以使用此命令并按照默认值生成一个密钥:

        ssh-keygen
      
  • 安装Git.

    • 在Debian和Ubuntu系统上

        sudo apt-get install git
      
    • 在Fedora系统上

        sudo yum install git
      
    • 在OS X系统上(通过Homebrew)

        brew install git
      
  • 安装用于Python的 pip 包管理系统。

    • 在Debian和Ubuntu上(还安装了构建Ansible所需的模块间的依赖项)

        sudo apt-get install python-pip python-pycurl python-dev build-essential
      
    • 在Fedora系统上

        sudo yum install python-pip
      
    • 在OS X系统上

        sudo easy_install pip
      
  • 安装 Ansible.

    • 在OS X系统上  (通过Homebrew)

        brew install ansible
      
    • 在BSD或者Linux系统上 (通过pip)

        sudo pip install ansible markupsafe
      
  • 为您选择的云提供商安装必要的Python库。

    • Amazon EC2

        sudo pip install boto
      
    • DigitalOcean

        sudo pip install dopy==0.3.5
      
    • Google

        sudo pip install "apache-libcloud>=0.17.0"
      
    • Linode

        sudo pip install linode-python
      
    • Rackspace Cloud

        sudo pip install pyrax
      
    • 如果你使用的是通过Homebrew安装的Python版本,你还应该运行这些命令,以确保它可以找到必要的库:

        mkdir -p ~/Library/Python/2.7/lib/python/site-packages
        echo '/usr/local/lib/python2.7/site-packages' > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
      
第 5 段(可获 2 积分)

执行

  1. 克隆Streisand存储库并进入该目录。

    git clone https://github.com/jlund/streisand.git && cd streisand
    
  2. 执行Streisand脚本。

    ./streisand
    
  3. 按照提示选择服务器的提供者、物理区域及其名称.。 您还被要求输入API信息。
  4. 一旦输入登录信息和API密钥,Streisand将开始启动新的远程服务器。
  5. 等待安装完成(通常需要大约十分钟),并在Streisand存储库目录中的'generated-docs'文件夹中查找相应的文件。 HTML文件将解释如何通过SSL连接到网关,或通过Tor隐藏服务。 然后可以在网关上找到所有指令,文件,镜像客户端和新服务器的密钥。 你全部w了!
第 6 段(可获 2 积分)

在其他供应商上运行Streisand

您还可以在任意数量的新Ubuntu 14.04服务器上运行Streisand。 专用硬件? 太好了! 深奥的云提供商? 真棒! 为此,只需编辑清单文件并取消最后两行的注释。 将示例IP替换为您希望配置的服务器的地址(或多个地址)。 确保阅读清单文件中的所有文档,并在必要时更新ansible.cfg文件。 然后直接运行Streisand playbook:

ansible-playbook playbooks/streisand.yml

服务器应该可以使用SSH密钥访问,并且默认使用root用户连接(虽然这可以通过更新streisand.yml文件或ansible.cfg文件来更改)。

第 7 段(可获 2 积分)

即将推出的功能

  • 本机Microsoft Azure支持
  • 允许L2TP/IPSec安装被禁用的一个标志位
  • 创建一个Streisand pip包,使配置所有必需的依赖关系更加容易

如果有什么您认为Streisand应该做的,或者如果您在其文档或执行中发现错误,请在Issue Tracker.上提交。

致谢

我无法表达我是多么感激 Trevor Smith 对这个项目做出的巨大贡献。 他建议使用Gateway方法,提供了大量的宝贵反馈,使一切看起来更好,开发了HTML模板作为灵感,在Streisand公开发布之前把事情提升到一个新的水平。 我也对他在测试各种客户端时经常使用他的iPhone表示感谢。

第 8 段(可获 2 积分)

非常感谢 Paul WoutersLibreswan 项目 的大力支持,他在 L2TP/IPsec 的安装故障排除方面给予了慷慨的帮助。

Corban Raun 借给我一台 Windows 操作系统的笔记本电脑,让我测试和完善该平台的操作指南,而且他也是该项目最初阶段的强力支持者。

在我为此工作时,我也喜欢听 Starcadian's 的 'Sunset Blood' 唱片,反复听了大约300次左右。

第 9 段(可获 2 积分)

文章评论