翻墙教程
本来这篇文章打算还写一点GFW系统的相关内容的,不过这样可能篇幅就会过多,而且这本来就是很不和谐的东西
不知道哪天会从哪里寄来份水表也说不定(开个玩笑)

简单的说很多国内的人并不知道我们所处在的网络环境是什么个样子的,当然一般你也没有必要必需知道
但是总是有一些人比较向往自由(或者像我一样翻出去可能会显得自己好像很牛瓣的样子..........)

翻墙它并不是什么飞檐走壁的绝技,我想找这篇文章并看下去的人应该不用我解释太多了吧
越过长城,我们可以到达每一个角落

翻墙的方法有多少我不清除,但是这里的翻墙总的来说就是通过一个代理来访问那些被GFW重置掉的网站
当然这个代理必需能够访问这些网站,显然在国内的服务器是不可能直接访问的了,除非GFW特赦,那么这就需要一些国外的服务了
而且这些代理服务器不在GFW过滤系统黑名单内,不然我们同样无法连接这些ip
代理的大概过程是这样的,首先我们与这些提供了代理服务的服务器进行连接,然后建立一条隧道
我们把我们要请求的数据包(访问一些被GFW墙掉的网站)发送给代理服务器,然后代理服务器将这些请求发送给我们的目标网站(被墙掉的网站)
这时就相当于代理服务器在发送数据,所以我们的目标网站会将我们的请求的数据通过解析将应答数据发送给代理服务器
然后代理服务器再将这些数据发送给我们,这样我们就算是"绕"过了GFW对数据的过滤与封锁
可以看到我们搭了个"梯子",所以这种方法叫翻墙,从这也可以看出关键的东西是代理服务器

今天我讲几种搭建这种隧道的方法
这里补充一下,不知道大家知不知道ipv6,不知道也没关系,反正这里我只是提一下,也没打算具体点提供ipv6相关翻墙方法
有一种翻墙的方法是使用ipv6隧道,貌似GFW没有对ipv6提供封锁,所以那些被GFW墙掉的网站如果它们支持ipv6协议的话,我们可以通过ipv6来访问,这里不多说,因为具体有多少被墙掉的网站支持我还不知道

我们还是需要来讲吧,这里我以Linux Debian系统为主讲,不过不用担心,Wndows系统的相关方法我也是会提到的,因为原理都是一样的
我们首先来说ssh,ssh可以做端口转发,可以将我们发送的数据进行转发,所以可以进行翻墙
我们首先需要的就是注册一个ssh帐号,找到一个提供ssh翻墙的国外服务器,然后注册一个帐号(或者貌似有那种免费试用的公开帐号密码的,但是我一直都没用上,所以不建议大家去使用)
貌似最近GFW对ssh的干拢比较大,所以很多ssh代理服务都被封掉了,不过还是有没有被封掉的
如果你肯花钱的话可以去买一个帐号,貌似钱不多的样子,免费也有,但可能比较稀少了
而且免费的也会有很多限制,比如速度,流量,时间等,这里我不提供网址之类的了,太过高调可不好

我们来说说有了ssh帐号后怎么翻墙
在linux下我们可以使用ssh的-D参数来进行
ssh -l username -D port xxx.xxx.xxx.xxx -p port
-l参数指定你的注册的用户名,比如你的用户名是123则ssh -l 123
-D后面跟的参数表示我们要将数据转发到本地的哪个端口上,Firefox浏览器有个插件是专门用来方便翻墙的叫作AutoProxy
它的ssh翻墙方式的默认端口设置的是7070当然为个我们可以改,但是建立大家改成1024以外的端口,这里我们就用7070吧
所以这里可以为-D 7070,后面的为我们要连接的代理服务器的ip地址,这个根据你注册的不同网址有不同的ip
再下面的则是远程服务器的ssh服务的端口了,因为GFW封得比较严,所以默认的22端口可能被封,所以有些会提供类似443之类的
如果你注册的服务商没有特别提示的话那么使用默认端口就可以了,默认端口可以不用加-p参数,这里假设代理服务器ssh开启的是443端口
所以整个的命令是这个样子的
ssh -l 123 -D 7070 xxx.xxx.xxx.xxx -p 443
之后我们输入密码便可以了,登陆完成后我们还要设置下系统的代理设置
这里以gnome2为主介绍
我们打开system---preferences---network proxy
或者如果你是其它的桌面环境的话可以找到网络代理设置对话框
我们将代理地址设置为127.0.0.1,端口设置为7070
这样我们再打开浏览器,在代理选项中选择使用系统代理,这样就可以访问那些被墙掉的网站了
不过这样做后你访问所有网站都是用代理的方法
所以这里我们使用Firefox或者Chrome浏览器时可以安装AutoProxy插件或者Chrome有个SwitchySharp插件都可以做到有选择性的代理
而如果是IE浏览器的话则没有办法了
Windows下可以使用putty这个软件来翻墙,自己去网上找下载地址,然后打开后会有地址,端口等设置
具体的参数和上面的差不多,这里不再细说
AutoProxy插件的话只要在默认的设置中选择ssh -D就可以了
而如果是SwitchySharp的话(这个是Chrome浏览器的插件)我们需要新建一个规则,由于我只用过一次所以记不太清了
但是设置方法还是比较简单的,名称你可以随便填这里填ssh -D好了,代理地址127.0.0.1,端口是7070(还记得吗),就这么简单
然后你再在浏览器中输入网址比如youtube.com,这时会等上一段时间然后提示你链接被重置
为什么还是在墙内?不要着急,这时我们点击插件的图标,然后我们在类似Enable proxy on site :youtube.com前面打勾(这是AutoProxy,SwitchySharp不太一样),然后再刷新一下你就已经在墙外了,其实很简单,不是吗
至于IE浏览器,由于我很长时间没用Windows了,所以有些忘记了,设置代理的位置大概在
工具----Internet 选项---连接-----局域网(LAN)设置
勾选为LAN使用代理服务器
地址127.0.0.1端口7070(没忘记吧)
确定就好了,不过这样浏览所有的网站都是使用代理,IE浏览器只能这样

上面说的ssh方法其实很简单,但看起来好像也挻麻烦的样子
光是看那些内容就觉得很难的样子,其实不然,很简单的,第一次总是有些困难
多操作几次就好了,毕竟并没什么技术性操作

下面介绍一种相对上面来说操作步骤似乎要少要简单的翻墙方法那就是VPN
我们可以通过使用pptp或者l2tp的方式来进行,这里我具体点说说pptp,因为l2tp我没用过还

同样的我们需要注册一个VPN帐号,免费的还是收费的这取决与你
可喜的是免费的VPN服务还不少,这里同样的我不推荐,免得我好像在推销一样
大家自己去谷歌或者百度搜索免费VPN,有一大堆可用
你总能找到一个甚至是多个称心如意的(我就可耻地用了很多个)
当然如果你对速度或者其它的限制不满意可以花钱购买VPN会员,但这不管我的事

有了VPN帐号后我们同样的是连接它
linux下我们可以使用NetworkManager这个工具来连接,Windows下可以在网络连接中新建一个网络连接来完成
先Linux下的来说,假如你使用了NwtworkManager,没有也没关系,我会用pptpsetup这个命令来说
当 然在此之前我们先安装点东西,如果是NetworkManager的话我们需要装network-manager-pptp pptp-linux network-manager-openvpn这样的东西,如果不用nm的直接安装pptp-linux,其它的发行版可能对包的命名不同,想办法找到 pptp pptpsetup所在的包折名称,如何找我不说了
然后如果你用的是nm,只要在VPN配置----VPN然后新建一个选择pptp或者openvpn又或者l2tp,名称随便,你喜欢就好ip地下为你注册的VPN提供的ip地下,这个不用我说了
你自己注册的哪个你自己去服务列表里去找地址,用户名输入你注册的名字,密码输入你注册的密码,是高级中是否加密等等是你的事,当然如果加密不能连接的话你可以选择不加密,l2tp和openvpn设置类似,不过貌似openvpnGFW封的比较厉害

下面说说使用pptpsetup来设置,这里给不用nm的同学或者你不喜欢使用nm来连接的同学
pptpsetup --create  --server  [--domain ]
          --username  [--password ]
          [--encrypt] [--start]

pptpsetup --delete 

Options:

* the name you wish to use to refer to the tunnel (you choose it),
* the IP address or host name of the server,
* the authentication domain name (optional),
* the username you are to use,
* the password you are to use,
* whether encryption is required,
* whether to start the connection after configuration.

pptpsetup - Point-to-Point Tunneling Protocol setup

Copyright (C) 2006 Nelson Ferraz

pptpsetup comes with ABSOLUTELY NO WARRANTY; for details see source.
This is free software, and you are welcome to redistribute it
under certain conditions; see source for details.

这里各个参数的解释已经很清除了,我不再多说,这里直接给个完整点的命令
pptpsetup --create test --server xxx.xxx.xxx.xxx --username 注册的帐号 --password 注册的密码 --encrypt --start
test你可以随便取,名称随你喜好,xxx.xxx.xxx.xxx是VPN服务地址,--encrypt开启加密,不开启的话可以不用写--start表示立即连接,如果想稍后连接的话可以不用写
这样便会在/etc/ppp/peers/下有个test(你填写的名称)文件,我们可以通过pon test(你填写的名称)来进行连接,poff test连接断开
然后使用route add default dev ppp1(也可以是其它)
使用ifconfig -a查看,看最后一个
Windows下的方法
打开控制面板-----网络和Internel连接----创建一个到您工作位置的连接-----虚拟专用网络连接
随便输入名称确定
拨不拨初始连接是你的事不管我的事,我这里选择不
接下来输入ip地址,和上面的那个xxx.xxx.xxx.xxx一样,具体地址根据你注册的VPN不同而不同,自己去服务列表找
之后完成就可以了
这样会生成一个和你使用adsl拨号连接一样的东西,你只要双击它输入你注册的用户名和密码就可以了
这里是xp的设置,win7的设置更这个应该差不多,我想你应该设置了adsl拨号上网的,那么对你来说就不是问题,只要选择建立虚拟专用网络就可以了
至于win8,好吧,我还没用过这个系统,自行搜索吧

这样你整个系统将都使用代理,打开浏览器不需要任何设置就可以在墙外
当然这并不好,所以麻烦点我们需要使用另外一个方法,就是让指定的ip走指定的"网卡"
一种方法,找到一个叫chnroutes 的项目,搜索一下就会有教程,这里我不多说
也可以通过另外一种方法,我们手动加入ip地址,这里需要用到一个route命令,Windows下和Linux下都是这个命令
Windows下和Linux下稍有不同,但差不多,Windows下在命令提示符中执行,什么命令提示符在哪?
Win+r运行 cmd回车,或者自己开始菜单里找运行或者命令提示符
Linux下就不用我们了吧,先来Linux下的
具体的方法和步骤Windows和Linux下都是一样的
首先我们修改下hosts文件,让我们浏览一些网站时连接固定的ip
hosts文件可以自己去网上找,我这里把我的给共享出来吧,由于东西太多,我放在一张网页上了,大家自己复制
hosts文件
Linux下hosts文件在/etc/hosts
Windows下在C:\Winnt\System32\Drivers\Etc\hosts
这个可能是隐藏的文件,你可以看不见,使用命令提示符attrib -s -r -h来搞定它
C:
attrib -s -r -h "C:\Winnt\System32\Drivers\Etc\hosts"
然后使用记事本打开它就可以了
之后将我的hosts文件内容复制进去,也可以复制你自己的hosts
然后保存再attrib +h +s +r "C:\Winnt\System32\Drivers\Etc\hosts"
Linux下就没这第麻烦了,相信这个对于Linux用户来说是小菜一碟了
然后我们再使用route命令让这些ip或者域名走指定"网卡"就行了
比如twitter.com
我们可以这样
Linux下
route add -host twitter.com gw xxx.xxx.xxx.xxx
这里的xxx.xxx.xxx.xxx可不是你连接VPN的ip地址,使用ifconfig -a或者Windows下使用ipconfig -a找到
最后一个,复制P-t-P后面的地址,比如10.0.0.1或者192.xx.xx.xx之类的
Windows下使用的大概是
route add 199.59.150.7 mask 255.255.255.0 xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx和上面一样,大概是这个样子的吧,这个我没有用过
把你hosts里的ip或者域名都给这样敲一边,然后不管是系统还是浏览器都可以那些敲进去的在墙外了
当然这样做实在累人,估计敲半天你都敲不完,因为ip太多了,所以对于高级一点的用户(好像挻邪乎的- -)比如你会编程的,会写脚本的
你可以发挥你的才智了,写一个程序或者写一个脚本来完成这些事件,这样就方便多了,只要运行下程序就万事搞定了,对于那些不会编程的
那个,没办法,确实很难帮到你了,不过如果有人肯愿意把它的脚本或者程序共享出来的话也好,你可以用它们的东西
我这里呢写了一个非常粗糙的C语言程序,当时还是用一指击键大法一字一字敲出来的,可累坏我了,后来太懒了就没再去写,我把它共享出来
当然这个程序只能用于linux用户,因为我不用windows,不过方法都是差不多的,windows下只需要更改点代码就可以同样完成了
然后程序我就不编译了,这个可能是有点为难大家吧,因为你需要下载编译器而且还要有一定的相关知识,不过对于会写程序的人来说就很简单了
为什么我不编译呢,我把源代码给你们证明我没有给你们病毒或者木马,所以如果你在翻墙中出现了某些问题我可不负责(说实话,我太认为翻墙是安全的)
代码的地址在这里,大家自己搞定
Windows用户需要修改的地方是fopen里面的路径和sprintf里面的相关字符串
改成上面的Windows的route命令那样,自己诼磨

看起来翻墙似乎很简单的样子,是的的确是这个样子
下面再给上一种翻墙方法,使用google的goagent,我找一篇比较详细的文章过来给大家看

goagent速度不错,稳定性也不错,每天一个appid有1G的流量
一个帐户最多可以设置10个appid即最多一天可以有10G的流量,我想这已经够了吧
很多人都在使用这个,一开始我并没有使用,因为申请创建appid需要手机来接收验证码
手机号!!!!有没有搞错,这是为了方便查我水表吗?!!!!!本着凡是要手机号的全部枪毙的原则所以我放弃了
不过在不久前我看到了一种不用手机号也能创建appid的方法,不过有些麻烦,如果你跟我有一样的想法,这里不介绍,自行搜索

首先就是注册帐号了,我们需要有一个gmail帐号,mail.google.com自己注册
然后我们去这个网址进行创建appid
我们点击Create An Application
选择国家为中国然后输入手机号码
注意这里中国的手机号码前面加上+86
如+86 13XXXXXXXXX
注意空格不能少
然后send
之后等待手机接收验证码吧
再将验证码填入到现在刷新的网页里
现在应该还需要再点击Create An Application,因为我不是用手机号验证了,所以这里不清楚了
然后输入名称,随便写,但要唯一,我想这里的几个英文关键词还是比较简单的,就算看不懂也能猜出一二吧- -
现在你应该已经创建好了一个appid了
你还可以创建9个,一共你可以创建10个,这个随便,反正我是厚颜无耻地创建了10个

下面下载goagent并上传
下载并解压,如果这个你打不开,就试试下面这个,我会定期更新的
里面还有篇文章,大家没事的话可以看下

解压后进入到server文件里,如果是Windows用户的话双击那个uploader.bat如果是Linux用户的话
python uploader.zip
输入你的appid多个appid用|分开,还记得你创建时使用的名称吗
再输入邮箱地址
输入邮箱密码
等待上传完成后可能会提示你也可以会直接退出消失


现在退出来进入local文件夹里
然后使用记事本(Linux用户我想你应该会懂得吧)打开proxy.ini文件
找到
[gae]
appid = goagent
将goagent改成你的appid,如果有多个appid的话使用|分开
然后保存关闭
现在如果你是Windows用户双击goagent.exe如果是Windows 7用户的话请右键使用管理员权限
因为要导入证书文件,需要相关权限
而Linux用户直接python proxy.py就行了
现在不在关闭这个窗口,关闭的话就不能翻墙了
然后其它的设置就跟上面的ssh代理设置是类似的,只不过那里的端口使用的是7070这里的默认端口使用的是8087
想改的话自己看proxy.ini文件,自己做琢磨去,以后只要点击goagent.exe或者python proxy.py就可以了
除非你更新了goagent而且更新是有提示是的
你需要重新上传
至于其它的我就不多说了

看起来目前流行的几种翻墙方法我这里都大致介绍了
可能文章太长文字太多且枯燥乏味
不过做起来并没有那么难,真的很简单
如果你在使用过程中遇到了什么问题可以给我发邮件

最后在这里讲一下,墙外的世界不管精不精彩都要有持有自己的原则
要有自己的判断力,GFW会把它们封肯定是有原因的,多数是政治原因
因为外面有太多的不和谐,而且那些都不一定全部都是正确的
我发现一些墙外的网友甚至一些媒体在一些方面都带有深厚的政治情感色彩
大家可能会接触到很多的负面内容,但一定要有自己的判断力,不要盲目,而且出去后请自律
貌似国家对互联网的管制在加强,可别做什么违法的事