叶厚:翻墙有术:DIY代理服务器
遠近-1230 08/31 11941
叶厚:翻墙有术:DIY代理服务器
这次因家事在国内呆的时间较长。前面几周忙于各种事物,没觉到中国的网络屏蔽有什么麻烦。百度提供了中文搜素,地图,新闻等等,山寨了google的功能甚至界面,办事娱乐基本上就够了。忙完了,想去国外网站,就遇到诸多不便。过去google.hk还可以用,现在完全不行了。Gmail时好时坏。最烦人的是想查NJ Transit的时刻表,网站却无法访问。
习时代的网络控制比过去更严了。我在美国的家里设置了不加密的代理服务器(proxy server), 但从中国用它,像CND这样在黑名单上的网站也无法访问。这是因为运营商不仅屏蔽了网址,也对数据包做深入巡查(DPI,deep-packet inspection)。即使代理服务器设置了不寻常的端口(TCP port),也无济于事。DPI使网速人为地减慢了许多。
为了能翻墙,去代理服务器的数据包需要加密。如果这个服务器在美国公司的VPN里,所需要的加密(IPSec 或 SSL VPN)就自然有了。本文介绍如何在家里设置代理服务器,并用SSH加密连接。这种方式不仅适用于在国内翻墙,也可以在公司里“遁身”:就是您不想让公司知道自己用公司的网络去了哪里。
首先,在家里找一台电脑装上 Linux操作系统(www.ubuntu.com)。如果只作为代理服务器,不需要最新最快的电脑,几年前的旧电脑就可以了。代理服务器的软件叫 squid。装上后这就自动成为代理服务器了。SSH加密服务的软件叫openssh-server;另外还需要安装火墙软件ufw。软件的安装可以在control panel里下载,或直接用指令 sudo apt-get install 。
家里的无线路由器(wireless router)分外部和内部;外部是连到运营商,用运营商给的外部地址。这个对外地址可以打开网页www.whatismyip.com查看;文中我们假设它是18.18.18.18。虽然这个地址是动态给定的,一般说来长期都不会改变。路由器的“内部”是家里的电脑、打印机、智能手机和平板电脑等,家里的IP地址一般是10.x.y.z 或者 192.168.x.y。路由器在内部和外部IP地址之间做地址转化(Network address translation)。我们把Linux服务器的IP地址必须设为手设(manual),您可以挑一个无线路由器里允许的内部任一个地址。我们在这里假设为 10.10.10.10。在家里无线路由器的DMZ(军事缓冲区)设置里,指定这个地址为外界可达地址。这个等于把外界欲联通18.18.18.18的数据包直接送到10.10.10.10,就是我们的服务器。为了防止黑客袭击服务器,设置防火墙只接受SSH:
sudo ufw enable
sudo ufw allow 22
sudo ufw default deny
这样,家里的SSH和 proxy server 的设置就完全了。现在谈谈怎么在手提或座机电脑上通过家里的服务器访问网站。我们假设这是个微软系统;其他系统类似。
微软上一款常用的SSH软件叫puTTY(www.putty.org)。puTTY 不仅能接通远程的SSH,还能在SSH中开设通道(tunnels):我们将开通网络代理服务的通道。具体设置是如下:连接方式选择SSH; 对方IP地址选家里的外部地址(我们这里是18.18.18.18)。在左边菜单,选择connection, SSH, Tunnels; 右边“add new forwarded port”,source port 选择3128,destination 选择 localhost:3128 (3128是proxy service的default端口)。然后按“Add”。把这个设置存下,下次直接调出就可以了。执行puTTY后,就会开始SSH连接,敲入您家里Linux服务器的用户密码。
SSH连接成功后,您就可以用家里的网络代理服务了。注意,proxy server 现在是 localhost,就是SSH的这一端。比如用google chrome, short-cut properties 的目标应为:
<code> “C:Program Files (x86)GoogleChromeApplicationchrome.exe” –proxy-server=localhost:3128</code>
好了, 关闭已有的chrome,新打开的chrome就可以访问中国黑名单上的任何网站了。