Archive for the ‘Network’ Category

March 23rd, 2011

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

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

  想法一:能通过53端口的OpenVPN蹭网,并且能蹭上后让翻墙小白无障碍访问Gmail等服务。做法是在VPS_BJ上搭建53端口的OpenVPN实现蹭网。然后在此VPS_BJ上另跑一个ssh -D进程连接到VPS_CA,实现动态端口转发,从而在VPS_BJ上创建了一个Socks5代理。客户端只要通过此OpenVPN蹭上网后,然后设置代理为VPS_BJ上创建的代理端口即可无障碍访问Gmail等服务。

 image

  其中VPS_BJ上的ssh进程参数是

1
ssh –CND 10.0.0.1:23 username@vps_ca

  这里有几点是需要注意的:首先,bind_address一定要写成VPN内网IP,这样Socks5代理就只在内网中有效,保证了这个代理只有连上OpenVPN后才能使用,极有效的防止了滥用。其次端口最好绑定一个1000以内的常见但不用的端口,如23 telnet,原因你懂的,不过绑定1024以内的端口需要root权限,谨慎操作。最后,为了防止这个ssh连接死掉或者网络故障挂掉,非常有必要结合inittab中的respawn或者自己写expect脚本实现ssh的自动重连,本文在此不做讨论。

  想法二:我从客户端直接ssh -D连接到VPS_CA有点卡,经常掉线很郁闷。希望VPS_BJ能在中间起个中转的作用,看似绕了一个弯,但实际上速度却更快。实现方法也非常简单明了,直接在VPS_BJ上起一个ssh -L的本地端口转发进程即可,千万不要忘了-g参数,以在所有的interfaces上监听被转发的端口:

1
ssh -g -L 7001:vps_ca:22 username@vps_ca

  之后从PC照旧ssh -D连接VPS_BJ的被转发端口即可。

image

  上述解决方案从VPS_CA通过ssh -R反向连回来也行,如下操作:

1
ssh –R *:7001:localhost:22 username@vps_bj

  需要注意的是,因为ssh -R也是默认只监听lookback这个网口的,需要修改VPS_BJ的sshd_config打开GatewayPorts,同时bind_address参数要写成*才行。

image

  显而易见,从复杂性上,反向远程端口转发不如正向的本地端口转发的方案。另外,上述两个方案也同样需要有对ssh连接进行断线或定时自动重连的考虑。

Tags: , , , , , ,

December 2nd, 2010

利用53端口的OpenVPN蹭网

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

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

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

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

Tags: , , ,

June 8th, 2010

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 - 19:03:21
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        9671772.5 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     1914.6 MWIPS (10.5 s, 7 samples)
Execl Throughput                               1259.3 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        302168.6 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           77339.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        880748.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                              425294.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  22283.7 lps   (10.0 s, 7 samples)
Process Creation                               2188.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3003.2 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    846.0 lpm   (60.0 s, 2 samples)
System Call Overhead                         437322.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    9671772.5    828.8
Double-Precision Whetstone                       55.0       1914.6    348.1
Execl Throughput                                 43.0       1259.3    292.9
File Copy 1024 bufsize 2000 maxblocks          3960.0     302168.6    763.1
File Copy 256 bufsize 500 maxblocks            1655.0      77339.6    467.3
File Copy 4096 bufsize 8000 maxblocks          5800.0     880748.9   1518.5
Pipe Throughput                               12440.0     425294.5    341.9
Pipe-based Context Switching                   4000.0      22283.7     55.7
Process Creation                                126.0       2188.1    173.7
Shell Scripts (1 concurrent)                     42.4       3003.2    708.3
Shell Scripts (8 concurrent)                      6.0        846.0   1410.0
System Call Overhead                          15000.0     437322.7    291.5
                                                                   ========
System Benchmarks Index Score                                         433.5

------------------------------------------------------------------------
Benchmark Run: 二  6月 08 2010 19:03:21 - 19:31:52
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       34776757.0 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     7017.4 MWIPS (10.3 s, 7 samples)
Execl Throughput                               4465.6 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        279935.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           73559.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        993067.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1545852.2 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 153438.0 lps   (10.0 s, 7 samples)
Process Creation                               4991.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   6503.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    985.1 lpm   (60.1 s, 2 samples)
System Call Overhead                        1479565.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   34776757.0   2980.0
Double-Precision Whetstone                       55.0       7017.4   1275.9
Execl Throughput                                 43.0       4465.6   1038.5
File Copy 1024 bufsize 2000 maxblocks          3960.0     279935.4    706.9
File Copy 256 bufsize 500 maxblocks            1655.0      73559.9    444.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     993067.5   1712.2
Pipe Throughput                               12440.0    1545852.2   1242.6
Pipe-based Context Switching                   4000.0     153438.0    383.6
Process Creation                                126.0       4991.3    396.1
Shell Scripts (1 concurrent)                     42.4       6503.9   1533.9
Shell Scripts (8 concurrent)                      6.0        985.1   1641.9
System Call Overhead                          15000.0    1479565.4    986.4
                                                                   ========
System Benchmarks Index Score                                         999.7

Tags: , ,

July 6th, 2009

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  MTU:1480  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)
 
nas0      Link encap:Ethernet  HWaddr 00:08:5C:14:C0:FB
          inet6 addr: fe80::208:5cff:fe14:c0fb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:275 errors:0 dropped:0 overruns:0 frame:0
          TX packets:281 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23972 (23.4 KiB)  TX bytes:19561 (19.1 KiB)
 
ppp0      Link encap:Point-to-Point Protocol
          inet addr:124.135.17.179  P-t-P:124.135.17.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:236 errors:0 dropped:0 overruns:0 frame:0
          TX packets:236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:20202 (19.7 KiB)  TX bytes:9883 (9.6 KiB)
[root@leon ~]# ping6 -c 4 ipv6.google.com
PING ipv6.google.com(tx-in-x68.google.com) 56 data bytes
64 bytes from tx-in-x68.google.com: icmp_seq=1 ttl=58 time=384 ms
64 bytes from tx-in-x68.google.com: icmp_seq=2 ttl=58 time=385 ms
64 bytes from tx-in-x68.google.com: icmp_seq=3 ttl=58 time=387 ms
64 bytes from tx-in-x68.google.com: icmp_seq=4 ttl=58 time=390 ms
 
--- ipv6.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3396ms
rtt min/avg/max/mdev = 384.629/386.821/390.147/2.146 ms

  总结配置过程,首先观察windows下6to4方式IPv4地址与IPv6地址的对应关系及其中继路由地址,然后在Linux中添加隧道,设置6to4网卡,添加IPv6地址和中继路由,最后测试成功。

  延伸阅读:http://en.wikipedia.org/wiki/6to4http://en.wikipedia.org/wiki/IPv6

Tags: , , , ,

July 3rd, 2009

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客户机获取。

Read the rest of this entry »

Tags: , , , , ,

June 26th, 2009

毕业IP纪念

  Farewell, my beloved 222.20.38.146.

  Farewell, my beloved 2001:250:4000:8fff:0:5efe:de14:2692.

华中科技大学韵苑学生公寓23#635寝室2号床位IP

Tags: , ,

June 16th, 2009

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

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

高 磊

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

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

关键词:无线传感器网络;时间同步;NS-2;RBS算法;TPSN协议;DMTS算法

(答辩PPT,其中有一些动态效果在这里看不到,如感兴趣欢迎致信索取)

Tags: , , , ,

April 2nd, 2009

毕设感想

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

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

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

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

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

Read the rest of this entry »

Tags: , ,