使用Linux建立IP隧道

分类: Linux服务器   出处:iocblog整理  更新时间:2008-10-19   添加到收藏  


  随着互联网中ipv4可用地址的日益减少,越来越多的企业开始采用nat方式上网,可用公网ip地址越来越少,而通过互联网访问内部服务器的需求确不断增加,因此本文对linux环境下建立通过互联网的ip隧道的方法,以实现对内部服务器的访问进行一些初浅的探讨,希望能起到抛砖引玉的作用。
  
  方法一:基于ssh的加密通道
  
  ssh(secureshell)是一套安全的网络连接程序,它可以实现通过网络远程登录其他系统,它就是加密的telnet协议。但是openssh除了具有远程登录功能以外,更可以建立加密ip隧道。
  
   
  
  我们这里假设alice.org服务器位于某个企业网的内网,其ip地址为192.168.2.200,它通过nat方式可以访问互联网。我们现在需要通过位于互联网上的名字为bob.org的机器里访问alice,也就是远程登录alice。这时候我们就需要在bob和alice之间建立ip隧道。我们首先登录alice,执行命令:
  
  #ssh-r11022:127.0.0.1:22 ideal@211.1.1.1
  
  该命令表示登录服务器211.1.1.1,并将服务器的11022定向为本地的22号端口。执行完该命令以后,会提示输入ideal用户密码,输入以后就会登录到远程服务器bob。这时在bob上netstat-ln就会发现11022端口监听,保持从alice到bob的ssh连接不断开。从互联网任何位置登录服务器bob以后,我们可以通过该隧道登录到alice服务器,执行以下命令:
  
  #sshlocalhost-p11022
  
  该命令表示连接本地的11022端口,因为我们已经创建了从alice到bob的隧道,因此连接本地的11022端口实际上就是通过隧道访问alice的22端口号。
  
  这样通过这个隧道就可以实现登录位于内部网的服务器alice,但是因为ssh命令中指定了源端口,这种隧道一般只能支持一种协议,对于特定应用则具有加密带来的安全性的优点,但灵活性则不够,而且为了保证隧道畅通,从alice到bob的ssh连接不能断开,也就意味着用户不能退出alice,否则隧道就会关闭。
  
  方法二:使用vtun建立ip隧道
  
  vtun(virtualtunnel,http://vtun.sourceforge.net)是一个功能很强的软件,可以利用它来建立ip虚拟隧道,而且隧道的数目可以不受限制,完全依照机器的能力而定,并且在此基础上应用上可以实现vpn、移动ip等功能。
  
  vtun所支持的通道并且具有多种功能特性:
  
  * 加密:支持基于chap的认证、并采用blowfish128bit密钥。
  * 压缩:支持zlib、lzo等多种压缩算法。
  * 通信整形:平台无关,允许分别限制进入和流出通道的速率。
  
  vtun支持以下类型通道:
  
  * iptunnel(tun):支持ppp的ip隧道。
  * 以太网隧道(ethernettunnel):支持可以实现以太网封装的各种协议,如:ipx、appletalk、bridge等。
  * 串口通道(serialtunnel,tty):支持串行电缆的传输方式,如:ppp、slip等。
  * 管道通道(pipetunnel,pipe):支持所有能使用unix管道的程序。
  
  vtun支持多种平台,包括:linux、bsd以及solaris。
  
  下载软件:
  
  http://prdownloads.sourceforge.net/vtun/vtun-2.6.tar.gz(文章来源 www.iocblog.net)
  http://vtun.sourceforge.net/tun/tun-1.1.tar.gz
  
  网络介绍
  
   
  
  bob.org拥有固定ip(211.1.1.1),所以作为vtun的服务器端。alice.org没有固定的ip,采用的是nat接入方式,因为没有固定公网ip地址,也没有域名。alice.org应该作为vpn的客户端,通过vtund连接bob.org服务器,建立vpn通道。
  
  首先确保两台服务器都允许ipforwarding。这点可以通过运行命令:
  
  #/sbin/sysctl-wnet.ipv4.ip_forward=1
  
  如果希望永久打开,则可以通过编辑/etc/sysctl.conf文件,将其中的net.ipv4.ipforward=0行改成net.ipv4.ipforward=1来实现。
  
  安装tun设备
  
  在安装vtun之前我们首先要安装虚拟通道点到点设备(virtualpoint-to-point(tun)andethernet(tap)devices),将会在/dev中产生两个虚拟通道设备/dev/tunx(字符设备)和tunx(virtualpoint-to-pointinterface,虚拟点到点接口)。
  安装vtun-1.1.tar.gz:
  
  1.解压软件:
  #tarxvfztun-1.1.tar.gz
  
  2.配置:
  #cdtun-1.1
  #./configure
  注意:安装tun需要系统安装有和当前内核版本一致的内核源代码,因此建议安装位于安装光盘的内核源代码rpm包。
  
  3.安装:
  #makeinstall
  
  4.加在内核模块
  #modprobetun
  
  如果希望系统启动时自动加载该模块,则编辑/etc/modules.conf,添加:
  
  aliaschar-major-90tun#2.2.x内核
  aliaschar-major-10-200tun#2.4.x内核
   
  
  这样就完成了对ip隧道驱动tunx的安装。查看内核模块,看tun是否被正确安装:
  
  #lsmod
  modulesizeusedby
  tun40643
  

[1] [2] 下一页


Tag: IP隧道 ,SSH



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。