Skip to content

Instantly share code, notes, and snippets.

@mywaiting
Created August 19, 2014 11:18
Show Gist options
  • Save mywaiting/a7c2e49a4c865ca61044 to your computer and use it in GitHub Desktop.
Save mywaiting/a7c2e49a4c865ca61044 to your computer and use it in GitHub Desktop.

新闻w

RHEL 7 发布应该算是比较大的新闻了吧~

人民群众纷纷表示红帽步子太大不要扯着蛋了比较好...

F_XZ: 完全没关心...

猫注意的新功能有 virtio 等 KVM 优化, docker 支持, 以及 ruby 2.0, python 2.7, java 7 之类的吧

当然其他的, 比如 apache 2.4 mariadb 5.5 等等大家在别的发行版已经用了很久的也会出现啦

会产生比较大的变化的大概是 systemd 吧

虽然猫已经是每次都会提到它了(

不过前两年传的 btrfs 作为默认文件系统倒是似乎流产了

这玩意果然可以再战两年(

F_XZ: (btrfs据说很坑

(对呀对呀

对桌面用户来说, btrfs 是不会带来性能提升的

另外它的一些特性还需要应用程序逐渐适应, 比如最重要的 CoW 之类的...

至于其他坑的地方就省略啦, 想了解猫的血泪史可以偷偷问(大雾

另外一个小一点的新闻: Console OS

于是(又)有一群人要弄 PC 用的安卓操作系统啦

https://www.kickstarter.com/projects/mmv/console-os-dual-boot-android-remastered-for-the-pc

嗯, 大概就是这样啦

姿势w

(既然挖坑了还是得填什么的

所以翻墙专题来啦

猫会从简单的 HTTP 代理说起, 直到蛋疼的各种 VPN

F_XZ: (翻♂墙♂姿♂势...

HTTP/HTTPS 代理

首先呢, https 代理还是可以用的啦

包括 web 形式的代理(填网址在frame打开之类的), 以及连接级别的 https 代理

对于 web 代理, 现在已经不是很流行了

早先时候, 国外的各种敌台还是会推荐这种代理, 因为搭建起来成本比较低

F_XZ: 敌台...

当然, 我相信大家肯定都没兴趣啦, 毕竟体验糟糕而且不支持现在大多数非网页应用了...

https 代理呢, 却还是可以用的

各种 iphone/android 可用的 "APN代理", 其实都是 http/https 代理

F_XZ: (嗯, 所以如果google不被墙那么go*也是可以用的

只不过他们的实现方式通常是, 用 http/https 代理连接到一台国内的机器, 然后再把需要翻墙的流量用其他翻墙方式翻过去

这样可以在设置 APN 代理的同时, 兼顾国内网站的访问速度

建立一个 HTTP 代理服务器可以选用 privoxy, polipo, 3proxy, 等等许多软件

(Windows 里还有 CCProxy(被pia飞

如果设置合适的密码, 普通的架设在国外服务器的 https 代理也还是可以正常使用的

(不设置密码的话, 会被人扫到滥用的)

另一个流行的 http 代理方案是 goagent

当然, 这和普通的代理不太一样啦

(虽然它也提供了 php 等其他姿势的服务端)

默认的 goagent 会用 GAE 的服务器, 不过这里有一个限制

最近大家讨论火热的漏洞也是早已埋下的坑啦

GAE 并不能直接代理 https 请求, 因此 Goagent 需要解密 https 请求, 分析, 然后用 GAE 提供的方法获取页面内容, 再加密传输过来

本质上扮演了 https 中间人的角色 (

因此呢, 默认情况下的 GoAgent 的安全性是低于 HTTPS 代理服务器的.

有一些方法可以增强它的安全性, 包括重新生成 CA 证书, 以及开启域名验证等.

另外, goagent 的服务端经常需要翻墙才能部署, 这让很多用户陷入鸡生蛋蛋生鸡的问题中

felixonmars: (虽然真的是先有蛋的(

F_XZ: 233

Socks 代理

接下来呢, 介绍一下 socks 代理服务器, 这大概是大家接触最多的一类翻墙方式了

首先呢, 常见的 socks 代理服务器分为 4/4a/5 三个版本

其中 4 是不支持远端域名解析的

主流的可用于翻墙的软件都已经支持了 socks5 的规范, 除了 tor 还停留在 socks4a

不过, 他们的支持情况也并不一致

SSH 代理, 也就是常见的 ssh -D

是同时支持 socks 4/4a/5 的请求的

大概从 Puff 出现的时代开始, SSH 翻墙成为相当主流的翻墙方式了

这里面多数人是用自己的服务器, 或者购买的商业解决方案

少部分人则是(偷偷)使用一些公共 ssh 服务器

F_XZ: (表示最近碰到go*爬不过去的地方就这么干了...

SSH 代理的主要问题是性能比较低下

用 ssh -D 直接开启的 socks 代理在面对连接比较多的情况下会非常慢, 因为连接需要排队一个个来返回

Windows 用户有一个更好的客户端解决方案 Tunnelier

F_XZ: 更好? 更快吗..?

这玩意有相对更好的多任务调度机制, 在网页上资源多或者同时打开多个网页的情况下能产生较为明显的性能提升

(当然, 这货也可以 wine 跑啦

第二个常见的 socks 代理是 Tor

Tor 是早年比较流行的翻墙方式, 最近几年来因为 bridge 也被封锁得比较严重, 而不是很好使了...

最大的问题当然是慢!

F_XZ: 这个主要是匿名用的吧...?

这货的主要设计目的是匿名, 而不是翻墙, 所以把你的请求绕三个节点才到目标服务器这种丧心病狂的事情(

值得一提的是, 这货有提供一个叫 tor browser 的翻墙整合包

曾经方便了很多小白用户翻墙

F_XZ: 坑爹校园网表示通常找不到其他relay...

第三个很常见的 socks 代理是 shadowsocks

这玩意火起来的时间还很短吧

注意它只支持 socks5 协议, 4/4a 的请求都是不会受理的哟(

shadowsocks 的主要设计意图是高速翻墙, 因此设置的加密算法并不重要, 因为它的使用方法早已破坏了安全性

和普通上网一样, 想要安全还是 https 吧 xD

chinochang: 【残念

shadowsocks 提供了多种服务端可供选择

F_XZ: 其实完全不知道它们的加密算法_(:3//)

包括功能齐全的 nodejs 版, 非常节省资源的 libev 版, 能在 win 里高速跑的 libuv 版, 以及上面几个优点都没有的 python 版(

Baihe: :-D

值得一提的是

chinochang: Python 版贊一個→_→

shadowsocks 有比较好使的 android 版, 以及不那么好使的 iOS 版

F_XZ: 黑个痛..

如果觉得把那个蛋疼的配置文件弄到手机上是一个很囧的操作, 官方有提供一个工具帮助你: http://shadowsocks.org/en/config/quick-guide.html

扫一下二维码, 配置就加好了

shadowsocks 是目前本猫推荐的翻墙方式之一了, 一方面来说, 它受干扰的情况相对较轻

一般如果遇到 reset 等问题, 换端口/换密钥能有效解决, 而且并不是很频繁

另一方面, 它的性能非常优秀

而且架设并不复杂

以 nodejs 版为例, 只需要在安装好服务器的普通 nodejs 环境后执行 npm install -g shadowsocks 就安装好了

与它相似的有 shadowSPDY, 系同一个作者的作品

chinochang: 還需要製作一個 setting.json

chinochang: →_→

sbyl: ssh -D

作者表示, shadowSPDY 的性能比 shadowsocks 更好, 以及目前来说受干扰的情况更罕见

安装方式是一样一样的, npm install -g shadowspdy 就行了

配置文件和 shadowsocks 格式几乎一样

不过这货目前还只有 nodejs 的客户端, 手机是用不了的哦...

除此之外呢, 老一辈的破网三剑客也还是可以用的

自由门, 无界浏览, 花园, 这三家的工具可以在 linux 里顺利 wine 运行

而且他们是同时支持 http 代理和 socks 代理的

当大部分屌丝开始用 goagent 等翻墙工具以后, 这几家的工具被墙的频率也大幅下降了

去年的版本今天还能用什么的

也不失为免费翻墙工具里不错的选择啦

sbyl: ssh -D 在app store下载东西速度还可以

F_XZ: 因为单线程...

嗯, 单线程不会暴露出它的性能问题的...

Baihe: 无界好像被墙了吧

无界我这里还能用, 可能和RP有关吧...

F_XZ: (弱弱说一句三剑客神马的一个都没用过..

Baihe: orz

(所以说是老一辈的

sbyl: (才洗澡回来

如果在 wine 运行的时候遇到 MFC42 错误, 可以安装 winetricks, 执行 winetricks mfc42

(我 wine 运行它们的时候一共只遇到过这一个问题

F_XZ: (wine大法好

(有一些小众而且也不那么好使的翻墙工具就略啦, 比如开个网页卡几个小时的 i2p, 以及发布很久还是没几个人用所以也不怎么好使的 lantern)

F_XZ: 听说过lantern不过因为用户太少根本用不了..

嗯-.-

VPN

然后接下去就是重口的 VPN 类啦

品种繁多各种名词五花八门什么的(

首先是传统的 PPTP 和 L2TP VPN

作为各种平台默认支持的 VPN 协议, 它们也是 VPN 翻墙方式最早的应用啦

F_XZ: 重口

不过在推广之初就遇到了广电铁通等奇怪网络禁止 GRE 协议之类问题的阻拦

到今天, PPTP 差不多是已经死完了吧, 而 L2TP 直到现在还有一定的活力

如果你的客户端直接支持 L2TP, 运营商没有折腾你, 而且你也没有同一个 IP 创建多个连接的需求的话, 可以考虑尝试 L2TP

除了这两货以外, 比较常见的 vpn 工具是 openvpn

不幸的是, 无论 ipv4 还是 ipv6, udp 还是 tcp, 默认端口还是其他端口, 基本都已经被墙的差不多了

所幸的是, 我们还有 openvpn-obfs

经猫测试, openvpn-obfs 的 udp 协议基本还是可用的

有兴趣可以围观 https://aur.archlinux.org/packages/openvpn-obfs/

F_XZ: 怎么觉得vpn这么惨...

毕竟是重口的翻墙方法(

然后呢, 介绍几个略微小众而比较好用的 vpn 协议

openconnect

这是一个 cisco anyconnect 兼容的解决方案

不过因为专利的问题不能拿出来卖, 否则会被思科的律师查水表

它的服务端叫 ocserv, 提供的服务可以用 cisco anyconnect 的客户端连接, 也可以用 openconnect 自己的客户端.

据猫测试, openconnect 协议在相同ip/端口/证书 的情况下, 受干扰的程度远低于 openvpn-obfs, 几乎可以说是不受干扰

F_XZ: 貌似美帝有些大学提供的vpn就是这个协议...

嗯, cisco anyconnect 有相当丰富的客户端

也是这些第三方 vpn 方案里唯一一个在 android 平台不用 root, ios 平台不用越狱的解决方案

目前搭建方法的教程在网上比较少见

不过其实也并不是很难

猫先给个简单的主要配置项示例:

auth = "certificate"
max-clients = 0
tcp-port = *****
udp-port = *****
mobile-dpd = 1800
try-mtu-discovery = true
server-cert = /etc/openvpn/*****.crt
server-key = /etc/openvpn/*****.key
ca-cert = /etc/openvpn/*****.crt
cert-user-oid = 2.5.4.3
ipv4-network = *****
ipv4-netmask = *****

注意猫写的 /etc/openvpn, 这个不是写错了哟

openconnect 如果使用证书方式验证, 是可以和 openvpn 用相同的证书方案的

(比如非常好使欲罢不能根本停不下来的 easy-rsa

F_XZ: 我猜这个服务端不是免费的..?

ocserv 是免费的, 开源方案

F_XZ: 客户端也有免费的吗..?

有所不同的是, openconnect 在连接建立阶段是 https 协议, 因此证书的 CN 必须对上服务器域名

嗯, 就叫 openconnect

也是开源的

只是因为专利原因, 不能用这套方案进行商业行为

自己用是没问题的

F_XZ: 了解..

嗯, 那么最后一个

tinc

也是很小众的 VPN 方案啦

目前没有受到墙的干扰

它的特色是 "自动寻路"

如果你有多于一台的服务器

可以把自己本地和所有的服务器加入到同一个 tinc 网络中

这个网络中的任何两点之间, 会由 tinc 用它自己的算法计算出最快的路径

和 openvpn 只需要一个 tcp 或 udp 端口不同, tinc 一定需要两个 (一个 tcp, 用来传输控制指令, 一个 udp, 用于传输数据流)

openconnect 则是介于两者之间, 如果提供了 tcp, udp 各一个端口, openconnect 会处于完整工作状态

而如果只给 openconnect 一个 tcp 端口, 它也是可以工作的, 不过会比较慢

目前 openvpn-obfs, openconnect 和 tinc 都是比较好使的 vpn 翻墙方案, 结合前面猫推荐的 shadowsocks, 这就是今晚猫会继续推荐的四种翻墙方式啦

对了, 如果用代理类 (http/socks) 翻墙方案的时候想兼顾国内网站, 可以考虑一些第三方 pac 方案, 比如 https://github.com/Leask/Flora_Pac

如果用 vpn 类翻墙方案的时候想兼顾国内网站速度, 可以考虑打开 chnroutes, 以及考虑猫的 dnsmasq-china-list https://github.com/felixonmars/dnsmasq-china-list

喵呜, 梗概什么的就是这样了

s2marine: 喵,有事来晚了,不过补历史记录赶上了~

:3

于是大家还有什么问题吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment