对ssh和vpn代理服务进行二次中转的探讨

  现有北京和美国VPS各一个分别为VPS_BJ和VPS_CA,流量和配置都比较给力,xen虚拟化,从我所在的客户端直接访问北京VPS非常极速,但访问美国VPS有点偏卡,主要原因是我客户端所在的接入网不给力。另一方面,国内最近对https盯的很严,特别是对翻墙小白来说,访问Gmail等服务有点困难。人家方sir有6个vpn,俺不能比,俺只能把手头有限的几个服务发挥到极致。

 ...... 

利用53端口的OpenVPN蹭网

      验证53端口是否开放有个最简单的办法,直接nslookup几个域名,看返回结果。如果能正确返回的话则说明53端口是开放的。

      只要主机/VPS支持,搭建OpenVPN的过程其实非常简单,Linode的这篇搭建OpenVPN的知识库教程写的太好了,不差于网上许多牛人的Blog,更别说那些转发来转发去不标注出处的抄袭了。

  1. 安装OpenVPN
  2. 生成各种密钥
  3. 配置服务器和客户端的configure文件
  4. 修改IPv4流的转发和配置iptables
  5. 建立连接,查log监控

      感谢中国移动、中国联通、中国电信,感谢那些提供通过Web验证来计费上网的宿舍。ISP们,乃们颤抖了吧。

Linode 360 VPS BenchMark

  昨天帮实验室买了个Linode 360的VPS,梦寐以求哇,迫不及待的去折腾。选在了加州的fremont机房,北京网通的ping值大概在210ms左右,很极品的速度了,ssh上去交互只有一点点地小卡。装的CentOS 5.5,然后配了几个shell账号,通过he.net提供的tunnel broker增加了IPv6的支持,最后装了个启用passenger-ruby模块支持的nginx。明天继续折腾。

  下班前顺便跑了一下Unix Bench 5.1.2,硬件配置上是一颗Intel Xeon L5520 2.27GHz四核的CPU, 8M Cache, Xen虚拟化,360M RAM,16GB Hard Drive。结果如下。

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.2)

   System: li165-73: GNU/Linux
   OS: GNU/Linux -- 2.6.32.12-linode25 -- #1 SMP Wed Apr 28 19:25:11 UTC 2010
   Machine: i686 (i386)
   Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
   CPU 0: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.5 bogomips)
          Hyper-Threading, MMX, Physical Address Ext
   CPU 1: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.5 bogomips)
          Hyper-Threading, MMX, Physical Address Ext
   CPU 2: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.5 bogomips)
          Hyper-Threading, MMX, Physical Address Ext
   CPU 3: Intel(R) Xeon(R) CPU L5520 @ 2.27GHz (4533.5 bogomips)
          Hyper-Threading, MMX, Physical Address Ext
   18:35:04 up 1 day,  2:19,  1 user,  load average: 0.00, 0.00, 0.00; runlevel 3

------------------------------------------------------------------------
Benchmark Run: 二  6月 08 2010 18:35:04 -
 ...... 

Linux中ADSL通过6to4自动穿隧连入IPv6

  前两天捣鼓了一个USB ADSL在VMWare虚拟机中Linux系统中的安装配置和拨号方法。目前青岛网通这里,如果是在Windows环境下,拨号后能够自动获取6to4自动穿隧方式的2002开头的IPv6地址,Linux下的获取需要手动配置一下,并不是很复杂。

  如果是Windows系统,那么通过ipconfig可以得到类似如下的信息。

C:\Documents and Settings\Administrator>ipconfig
Windows IP Configuration

PPP adapter AccessRunner DSL:
   Connection-specific DNS Suffix  . :
   IP Address. . . . . . . . . . . . : 123.235.169.32
   Subnet Mask . . . . . . . . . . . : 255.255.255.255
   Default Gateway . . . . . . . . . : 123.235.169.32

Tunnel adapter 6to4 Tunneling Pseudo-Interface:
   Connection-specific DNS Suffix  . :
   IP Address. . . . . . . . . . . . : 2002:7beb:a920::7beb:a920
   Default Gateway . . . . . . . . . : 2002:c058:6301::c058:6301

  其中IPv6地址中的7beb:a920正好对应动态IPv4的地址123.235.169.32,而IPv6网关地址中的c058:6301对应的是不变的192.88.99.1,这个192.88.99.1是一个特定的6to4中用于任意点传送的中继路由地址。需要做的就是记好这几个地址的规律。

  然后换到Linux中,配置好ADSL,拨号后连入IPv4网,ifconfig查询到新获得的动态IPv4地址,然后按照上面的规律自行将其转换到6to4方式下2002开头的IPv6地址。例如现在得到的是124.135.17.179,对应的6to4地址为2002:7c87:11b3::7c87:11b3。下面将手动添加6to4隧道和中继路由。

[root@leon ~]# ip tunnel add 6to4 mode sit remote any local 124.135.17.179
[root@leon ~]# ip link set dev 6to4 up
[root@leon ~]# ip addr add 2002:7c87:11b3::7c87:11b3/16 dev 6to4
[root@leon ~]# ip -6 route add ::/0 via ::192.88.99.1 dev 6to4 metric 1026

  添加完后通过ifconfig可以看到新多出的网卡6to4,同时ping6一下ipv6.google.com已经可以正常的显示结果。

[root@leon ~]# ifconfig
6to4      Link encap:IPv6-in-IPv4
          inet6 addr: 2002:7c87:11b3::7c87:11b3/16 Scope:Global
          inet6 addr: ::124.135.17.179/128 Scope:Compat
          UP RUNNING NOARP
 ...... 

USB ADSL在VMWare中Linux环境下拨号方法

  鉴于北京和山东网通已经提供原生ipv6服务(via newboysyb@newsmth提供了6to4方式的ipv6服务,不过家里的路由器和vmware目前根本就不支持ipv6穿透。为了将ipv6充分利用起来,打算在VMWare中的Linux环境下进行USB ADSL的拨号,这样就跨越了路由器的限制。很繁琐,研究了一个上午才搞定。

1.可行性分析

  网络环境:青岛网通ADSL
  硬件设备:大亚科技ADSL USB Modem,型号DB101-A(Conexant芯片)
  操作系统:VMWare Workstation 6.5.0虚拟机下的Fedora 10(内核版本2.6.27.5)

  整个过程之所以繁琐,最重要的原因是这个ADSL是USB接口的,要像学校里武汉电信ADSL使用的都是RJ-45接口从而system-independent也就舒服了。所以,首先设备必须被kernel所支持,幸运的是一般比较新的kernel都是没有问题的。然后需要检测一下自己的USB ADSL Modem是否被Conexant  AccessRunner芯片的Linux驱动所支持。简单方法如下图,在Windows的设备管理器中查询该设备的16进制Vendor ID和Product ID,然后看是否在这个网页http://accessrunner.sourceforge.net/modems.shtml所示的列表中。如若不然,奉劝早点收手,后面一些都是白费功夫。

2.让USB ADSL穿透VMWare

  这一步的目的是屏蔽掉VMWare这层马甲的影响,让Linux客户机能够“直接”存取这个USB ADSL设备。方法是在虚拟机客户端的设置页中,将USB Controller的Connections三个选项都打勾,然后重新启动Linux客户机,在VMWare窗口的右下角应该就出现了新的USB设备,指向它时会出现“Conexant ADSL USB Modem”字样的提示,然后点击它选择Connect (Disconnect from Host),这样主机便会失去设备连接,转而让Linux客户机获取。

答辩:无线传感器网络时间同步算法性能分析

无线传感器网络时间同步算法性能分析

高 磊

(华中科技大学电子与信息工程系,通信与探测研究所)

摘要:
  无线传感器网络近年来颇受关注,时间同步是无线传感器网络的一项重要支撑技术。在理论上对不同类型时间同步机制进行了性能分析;在网络仿真工具NS-2中设计并添加仿真模块,设计仿真脚本,从单跳时间同步精度和消息传输量两个方面评估RBS、TPSN、DMTS三种经典的时间同步机制的性能并与理论结果进行了对比分析。
  研究和仿真实验结果表明在同步精度方面,TPSN算法约比RBS算法优一倍,DMTS算法最次。在消息传输量方面,DMTS最优,TPSN算法和RBS算法则需要进行多次通信,或者需要多于两个节点间的通信。
  此性能分析结果可以为不同需求的场合下的无线传感器网络时间同步算法的选取提供参考借鉴的依据,以求得同步精度和同步开销二者的权衡。 ...... 

毕设感想

  毕设老师是要我来用NS-2仿真WSN的某方向几个算法的。

  报题目时,我对这个挺感兴趣,因为NS-2非常复杂和难于上手,我喜欢有挑战性的东西。

  可是,随着毕设的深入,我发现我的远远高估了自己的能力,首先NS-2,这个东西本身所需要的深厚的功底不是简简单单会点coding就能胜任的。我经常会不小心被ns-2某个隐藏的bug卡在半路上浪费掉很多时间,而不能专心下来做coding,更不用说自己代码中的bug和对于下一步要如何实现的无限的空白和无知。

  没有研究生带和引路的日子是异常痛苦的,只有自己在百思、近场论坛上慢慢的观察、讨论,在水木请教诸位大牛,在google上筛选海一般的信息,然后继续硬着头皮去读晦涩的paper,然后思考,然后继续coding。

  对于WSN,我甚至以为它是一个早产的婴儿,我不知道它是否会夭折,在水木上看了很多也想了很多,学术界本身对WSN前途的不明朗负有很大的责任。我在网上请教过一个做过WSN项目的研究生,对于WSN的model搭建,甚至在一无所知的情况下就做出了太多的假设。我发现我下到的那些paper,都没有在讨论WSN的模型究竟最开始是如何搭建起来的,而更多的是在讨论搭建起来以后,可以借鉴和发展哪些具体技术。里面很多假设和模型都是做纯物理层的人看起来根本不正确或不符合实际的。比如做路由的时候就假定通信链路有或者没有,做时间同步的时候又假定链路都建立可以进行数据交换了,可是WSN一开始的连物理层的通信都没建立起来。