原文:http://briteming.blogspot.com/2012/02/dnsiodine.html

"用 DNS隧道实现免费上网"这篇文章其实是转载自 文章"有DNS的地方就能上 网"(http://www.nsbeta.info/archives/96),同时云风进行了一些改进后的 方 案:DNS隧道( http://blog.codingnow.com/2011/06/dns_tunnel.html)。云风给出的 改进方案中,没有使用风河中提到的 OzymanDNS,而是使用了另外一个小玩意儿 iodine。云风也并没有提供很方便的设置代码,只是用文字将涉及到的相关问题和技巧 说明了下。 翻到iodine的主页,查看其Wiki上的How to Setup,文中的The quick way讲的很清 楚。只需将其下下来,在服务器端运行iodined,在客户端运行iodine就行了。但其实 它还需要你有一个域名,能够设置域名的DNS之类的。讲的最清楚的一篇文章,当属 How to Setup末尾提供的一个链接:Guide for debian server and win32 client。

要进行这项工程,你需要一台能够让自己自由安装软件的服务器,和一个能够设置NS记 录的域名。对于服务器,iodine很强大,支持各种各样的系统:FreeBSD、Linux、Mac OS X、NetBSD、OpenBSD以及Windows。在Linux下,编译安装就行。在Mac OS X下,还 需要安装一个TunTap,很简单,下载下来一路点下去就行。在Windows下,需要安装 OpenVPN的TAP Virtual Ethernet Adapter模块。

下面以Ubuntu或者Debian作为服务器,Windows作为客户机,说明如何配置。

1. 设置服务器

在服务器上,只需安装iodine这个小工具就可以了。如果你的服务器系统是最新版本的 Ubuntu,即Ubuntu Natty,可以这样通过添加源的方式来安装iodine:



1

2

3

4

5

6



cat >> /etc/apt/sources.list < <END

deb http://archive.ubuntu.com/ubuntu natty main restricted universe

 END

apt-get update

apt-get -t natty install iodine

sed -i '$d' /etc/apt/sources.list



在Debian上可以这样安装:



1

2

3

4

5

6



cat >> /etc/apt/sources.list < <END

deb http://ftp.debian.org/debian sid main

 END

apt-get update

apt-get -t sid install iodine

sed -i '$d' /etc/apt/sources.list



2. 设置域名的DNS

首先需要设置域名服务器。

其次,在域名下面添加一个A记录,A记录的名字可以任意,如 server.urdomain.com,A记录的值为你VPS服务器的IP地址。

最后,再添加一个NS记录,这个NS的名字可以任意,比如iodine.urdomain.com,NS记 录的值为你上面添加的A记录的名字,即server.urdomain.com。

3. 在你VPS服务器上运行iodined程序

通过SSH登入你的服务器,运行iodined这个程序:


iodined -c -f 10.0.0.1 -P password iodine.urdomain.com


上 面这段代码的10.0.0.1 IP地址是你设置的虚拟局域网的IP地址,如果你所在的局域 网的网段刚好也在10.0.0.1,可以换一个网段,比如172.16.0.0。其中的 password是 你在服务器端自己设定的一个密码,客户端登入的时候需要用到这个密码。 iodine.urdomain.com则是你后面添加的那个 NS记录。

运行上面的代码之后,程序会输出如下信息,表示你的服务器端成功运行iodine小程 序:



1

2

3

4

5



OOpened dns0

Setting IP of dns0 to 10.0.0.1

Setting MTU of dns0 to 1130

 Opened UDP socket

Listening to dns for domain iodine.yourdomain.com



4. 设置客户端

接下来就要用客户机去链接服务器了。无论你的客户机是什么系统,只需在这里把 iodine下下来就行了。在Linux下,需要自己编译安装一下即可运行。在Mac下,需先安 装TunTap这个小工具,再编译安装即可运行。在Windows下,需安装OpenVPN的Tap模 块。下面以Windows客户端做说明。

从OpenVPN官网下载最新版本的OpenVPN,在安装的时候只勾选TAP Virtual Ethernet Adapter这个模块。

5. 通过虚拟内网地址连接服务器

下载最新版本的iodine Windows客户端。解压后,通过命令行(cmd程序。如果你的系 统是Windows XP,直接打开cmd即可。如果你的是Windows 7系统,需要以管理员的身份 运行这个程序)进入这个目录。然后,通过以下这个命令运行这个程序:


iodine -f -P password server_ip server.urdomain.com


上面的password是你在服务器端运行iodined这个程序时设置的密码,server_ip是你的 VPS服务器的ip地址,server.urdomain.com是你设置的NS记录的域名。运行以上命令 后,你会看到类似下面的输出:



1

2

3

4

5

6

7

8

9

10

11

12

13

 14

15

16



Opening device Local Area Connection 2

Opened UDP socket

Opened UDP socket

 Opened UDP socket

Sending DNS queries for iodine.cwaffles.co.cc to 74.63.253.53

Autodetecting DNS query type (use -T to override).

Using DNS type NULL queries

Version ok, both using protocol v 0x00000502. You are user #0

 Enabling interface 'Local Area Connection 2'

Setting IP of interface 'Local Area Connection 2' to 10.0.0.2 (can take a few seconds)...



Server tunnel IP is 10.0.0.1

Testing raw UDP data to the server (skip with -r)

 Server is at 74.63.253.53, trying raw login: OK

Sending raw traffic directly to 74.63.253.53

Connection setup complete, transmitting data.



上面的74.63.253.53是你服务器的ip地址。

现在,你可以测试下是否能够Ping同10.0.0.1这个服务器了:


ping 10.0.0.1 /t


如果Ping通了,一切顺利。

现在,即使你的电脑打开浏览器的时候跳出让你输入密码认证的页面,即使你不输入认 证,你也可以上网了。前提是,你还需要进一步的设置。

6. 通过虚拟内网地址登入服务器

如果你以前用过SSH连接代理服务器,并拿它来翻墙,接下来的设置很简单,因为两者 是一样的。但是,如果你以前连翻墙都不会,也不会通过SSH登入服务器,那就有点麻 烦了。本文不再详述这些设置,只给出几个客户端和浏览器插件:

1). 所连接服务器的IP地址:10.0.0.1

你可以通过SSH登入10.0.0.1这个服务器了,这个服务器跟你的VPS服务器是一样的,只 不过是以不同的地址登入。你原有的是外网IP地址,现在多了一个10.0.0.1内部地址。 登入的用户名和密码还是跟你原来登入VPS的用户名和密码一样的。

2). 连接服务器的客户端:PuTTY、KiTTY和Tunnelier

推荐使用Tunnelier,设置代理端口非常的方便。

3). 浏览器的代理插件

你可以在浏览器下设置代理类型,代理IP地址和相应的端口。也可以使用第三方插件设 置代理,如Chrome的Switchy和Firefox的AutoProxy或FoxyProxy。

官方网址 :http://code.kryo.se/iodine/



--
Posted By GFW BLOG 功夫网与翻墙 to GFW BLOG(功夫网与翻墙) at 2/03/2012 06:18:00 AM

--
1、翻墙利器赛风3下载地址: http://dld.bz/caonima326http://dld.bz/caonima745/
2、我们的订阅地址:http://feeds2.feedburner.com/chinagfwblog
3、停止订阅,请发邮件到
[email protected]
翻越防火长城,你可以到达世界上的每一个角落。(Across the Great Firewall, you can reach every corner in 
the world.)

回复