linux如何建立IP隧道

linux如何建立IP隧道
2011-11-18 10:47

 随着互联网中IPv4可用地址de日益减少,越来越多de企业开始采用NAT方式上网,可用公网IP地址越来越少,而通过互联网访问内部服务器de需求确不断增加,因此本文对linux环境下建立通过互联网deIP隧道de方法,以实现对内部服务器de访问进行一些初浅de探讨,希望能起到抛砖引玉de作用。
  
  方法一:基于SSHde加密通道
  
  SSH(SecureShell)是一套安全de网络连接程序,它可以实现通过网络远程登录其他系统,它就是加密detelnet协议。但是OPENSSH除了具you远程登录功能以外,更可以建立加密IP隧道。
  
   
  
  wo men 这里假设Alice.org服务器位于某个企业网de内网,其IP地址为192.168.2.200,它通过NAT方式可以访问互联网。wo men 现在需要通过位于互联网上de名字为bob.orgde机器里访问Alice,也就是远程登录Alice。这时候wo men 就需要在bob和alice之间建立IP隧道。wo men 首先登录Alice,执行命令:
  
  #ssh-R11022:127.0.0.1:22 ideal@211.1.1.1
  
  该命令表示登录服务器211.1.1.1,并将服务器de11022定向为本地de22号端口。执行完该命令以后,会提示输入ideal用户密码,输入以后就会登录到远程服务器bob。这时在bob上netstat-ln就会发现11022端口监听,保持从alice到bobdessh连接不断开。从互联网任何位置登录服务器bob以后,wo men 可以通过该隧道登录到alice服务器,执行以下命令:
  
  #sshlocalhost-p11022
  
  该命令表示连接本地de11022端口,因为wo men 已经创建了从alice到bobde隧道,因此连接本地de11022端口实际上就是通过隧道访问alicede22端口号。
  
  这样通过这个隧道就可以实现登录位于内部网de服务器alice,但是因为ssh命令中指定了源端口,这种隧道一般只能支持一种协议,对于特定应用则具you加密带来de安全性de优点,但灵活性则不够,而且为了保证隧道畅通,从alice到bobdessh连接不能断开,也就意味着用户不能退出alice,否则隧道就会关闭。
  
  方法二:使用vtun建立IP隧道
  
  VTun(VirtualTUNnel,http://vtun.sourceforge.net)是一个功能很强de软件,可以利用它来建立IP虚拟隧道,而且隧道de数目可以不受限制,完全依照机器de能力而定,并且在此基础上应用上可以实现VPN、移动IP等功能。
  
  Vtun所支持de通道并且具you多种功能特性:
  
  * 加密:支持基于CHAPde认证、并采用BlowFish128bit密钥。
  * 压缩:支持zlib、lzo等多种压缩算法。
  * 通信整形:平台无关,允许分别限制进入和流出通道de速率。
  
  Vtun支持以下类型通道:
  
  * IPtunnel(tun):支持pppdeIP隧道。
  * 以太网隧道(Ethernettunnel):支持可以实现以太网封装de各种协议,如:IPX、Appletalk、Bridge等。
  * 串口通道(Serialtunnel,tty):支持串行电缆de传输方式,如:PPP、SLIP等。
  * 管道通道(Pipetunnel,pipe):支持所you能使用Unix管道de程序。
  
  Vtun支持多种平台,包括:Linux、BSD以及Solaris。
  
  下载软件:
  
  http://prdownloads.sourceforge.net/vtun/vtun-2.6.tar.gz
  http://vtun.sourceforge.net/tun/tun-1.1.tar.gz
  
  网络介绍
  
   
  
  bob.org拥you固定ip(211.1.1.1),所以作为vtunde服务器端。alice.org没you固定deip,采用de是NAT接入方式,因为没you固定公网IP地址,也没you域名。alice.org应该作为VPNde客户端,通过vtund连接bob.org服务器,建立VPN通道。
  
  首先确保两台服务器都允许IPforwarding。这点可以通过运行命令:
  
  #/sbin/sysctl-wnet.ipv4.ip_forward=1
  
  如果希望永久打开,则可以通过编辑/etc/sysctl.conf文件,将其中denet.ipv4.ipforward=0行改成net.ipv4.ipforward=1来实现。
  
  安装tun设备
  
  在安装vtun之前wo men 首先要安装虚拟通道点到点设备(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需要系统安装you和当前内核版本一致de内核源代码,因此建议安装位于安装光盘de内核源代码RPM包。
  
  3.安装:
  #makeinstall
  
  4.加在内核模块
  #modprobetun
  
  如果希望系统启动时自动加载该模块,则编辑/etc/modules.conf,添加:
  
  aliaschar-major-90tun#2.2.x内核
  aliaschar-major-10-200tun#2.4.x内核
   
  
  这样就完成了对ip隧道驱动tunXde安装。查看内核模块,看tun是否被正确安装:
  
  #lsmod
  ModuleSizeUsedby
  tun40643
  
  安装Vtund
  
  解压缩:
  
  #tarxvfzvtun-2.6.tar.gz
  #cdvtund
  
  配置:
  #./configure--disable-lzo--disable-zlib--disable-shaper
  
  注:wo men 这里不打算压缩和流量成形,因此需要带这些参数,如果希望支持压缩,则需要先安装lzo或者zlib软件。
  
  编译安装:
  
  #makeinstall
  
  默认情况下,vtund被安装在/usr/local/sbin/目录下,而默认de配置文件则为/usr/local/etc/vtund.conf中。
  需要在两台机器上分别安装vtund和tun驱动,其中bob.org服务器上devtund以服务器方式运行,而alice.orgdevtund以客户端方式运行。
  
  vtund.conf配置文件说明:
  
  vtund.conf文件是vtund配置文件。Vtund.conf文件格式为:
  
  name{
  keywordvalue;
  keywordvalue;
  ..
  }
  
  关键字定义值后de分号是必须de,name后必须you完整de{}。Name可以you以下几个值:
  
  options:定义通用选项,例如端口号等信息;
  default:所you会话de默认值;
  session(可以为任意名,用于识别一个会话):指定该会话de特定值,用以覆盖default中de定义。
  
  下面是作为作者实际运行环境中以服务器方式运行devtund.confde内容:
  
  options{#bob.org,隧道IP地址为10.0.2.2
  port5000;#vtund服务器监听端口
  ppp/usr/sbin/pppd;
  ifconfig/sbin/ifconfig;
  route/sbin/route;
  firewall/sbin/ipchains;
  #vtund需要调用de各种程序de路径信息;
  }
  #默认会话选项
  default{
  typetun;#
  protoudp;#下层采用UDP协议
  compno;#不对会话压缩
  encrno;#不对会话加密
  keepaliveyes#保证连接一直激活;
  
  alice{#主机alice建立de会话特定选项,可以覆盖默认会话选项de配置
  passalice;#回话建立密钥
  typetun;#通道类型为IP隧道方式
  prototcp;#采用下层tcp协议
  compno;#不对会话压缩
  encrno;#不对会话加密
  keepaliveyes;#Keepconnectionalive
  
  up{#连接建立时,首先应该运行de命令
  ifconfig"%%10.0.2.2pointopoint10.0.1.2mtu1450";
  #首先激活接口,其中采用ppp建立连接,ppp本地IP为10.0.2.2,
  #而远程IP分配为10.0.1.2。
  program/sbin/arp"-sD10.0.1.2eth0pub";#配置arp表项
  route"add-net10.0.1.0netmask255.255.255.0gw10.0.2.2";#添加路由
  };
  down{#连接建立时,首先应该运行de命令
  program"/sbin/arp-d10.0.1.2-ieth0";
  };
  }
  
  vtundde更详细说明请参考manvtund.confde帮助手册内容。
  
  下面是作为作者实际运行环境中以客户端方式运行devtund.confde内容:
  
  客户端(yyy.orgVPN_IP=10.0.1.2):
  
  options{
  
  port5000;
  ppp/usr/sbin/pppd;
  ifconfig/sbin/ifconfig;
  route/sbin/route;
  firewall/sbin/ipchains;
  
  }
  
  alice{
  
  passalice;
  keepaliveyes;
  
  up{
  
  ifconfig"%%10.0.1.2pointopoint10.0.2.2mtu1450";
  program/sbin/arp"-sD10.0.2.2eth0pub";
  route"add-net10.0.2.0netmask255.255.255.0gw10.0.1.2";
  firewall"-Aforward-s10.0.0.0/24-d10.0.2.0/24-jACCEPT";
  
  };
  
  down{
  
  firewall"-Dforward-s10.0.0.0/24-d10.0.2.0/24-jACCEPT";
  program"/sbin/arp-d10.0.2.2-ieth0";
  
  };
  }
  
  启动vtund
  
  服务器端(bob.org):只须以root身份执行/usr/sbin/vtund-s就可以了,如果希望系统启动后自动建立VPN通道,可以将这个命令加入/etc/rc.d/rc.local中。
  
  客户端(alice.org):只须以root身份执行/usr/local/sbin/vt


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值