Linux下使用netpas

  什么是netpas,就是一个网络加速软件,可以使电信、网通、教育网、铁通等等之间的互访速度大大提高;而且对于教育网用户一个特别大的作用是它可以使你访问国际网,真好。注意:netpas是收费的,你也可以选择其他免费的软件替代

  1,为什么要在linux下使用netpas,linux这个网络操作系统如果不使用internet等于暴殄天物,而且很多时候linux要连国际网下东西,而教育网用户使用国际网是个麻烦事,总是自己找那个极不稳定的代理也是很累的事情。所以如果能让linux也用上netpas的服务,嘿嘿。其中妙处自己才能体会。简单的说,netpas给我们提供了一个稳定、透明的代理

  2,实现思路。当然首先要让netpas运行,而netpas目前只支持windows,所以,你先得有windows环境。一个思路是用wine,一个是用虚拟机。我觉得现在虚拟机发展不错,所以就选择了虚拟机这个思路。用虚拟机跑windows,然后在windows下运行netpas,最后在windows下开启代理服务,让linux走windows的线路出去,就能让linux也“享受”netpas的服务了。

  3,虚拟机的选择及上网方式。这个没什么好多说的,看自己的喜好,我用virtualbox 1.4.。至于上网方式,nat是不行的,必须给主机和客户机都分配一个独立的地址,所以我选则了用桥接的方式。

  4,虚拟机桥接的实现。这个是难点。大家可以参考一下网上的文章,很惭愧,我并没有搞懂原理,只是照葫芦画瓢,下面讲讲我这个瓢是怎么画出来的:

  4.1 去官方 http://www.virtualbox.org 下载对应你机器的包,我下载的是 virtualbox_1.4.0-21864_Debian_etch_i386.deb 装上。会提示缺少包,用 apt-get -f install 即可解决。

  4.2 安装编译工具及相关包。在安装过程中,要编译 VirtualBox 所用的内核模块。为此,你需要准备基本的编译工具及包,你可以使用下列指令来安装它们:

  sudo apt-get install build-essential linux-headers-`uname -r`
  实际上我还安装了内核源代码,不知道是否必要?

  4.3 现在,转到所保存 VirtualBox 安装包的目录,通过下面的指令来安装它:

  sudo dpkg -i virtualbox_1.4.0-21864_Debian_etch_i386.deb

  在安装的过程中,VirtualBox 会要求你接受许可协议。另外,安装程序也会创建 vboxusers 用户组,并编译所需的内核模块。

  4.4 现在,你还不能启动 VirtualBox,因为你的当前用户还不属于 vboxusers 用户组。你可以使用下面的指令来将当前的用户(请使用你的用户名代替指令中的“youruser”)添加到 vboxusers 用户组中:

  sudo adduser youruser vboxusers

  4.5 在基于 Debian 和 Ubuntu 的系统上,首先要安装含有建立虚拟网络设备 ( TAP interfaces ) 的工具 uml-utilities 和桥接工具 bridge-utils:

  sudo apt-get install uml-utilities
  sudo apt-get install bridge-utils

  为了使你的虚拟机能够访问网络接口,你必须将运行虚拟主机的用户的用户名(通常是你的ubuntu登录用户名)添加到uml-net用户组(请用你的用户名替换其中的“vboxuser”):

  sudo gpasswd -a vboxuser uml-net

  注意:为了使改动生效,请重新启动你的电脑。

  4.6 向你的 Debian 或者 ubuntu 操作系统描述你要添加的虚拟网络设备,编辑 /etc/network/interfaces,下面给出我的:

  # This file describes the network interfaces available on your system
  # and how to activate them. For more information, see interfaces(5).

  # The loopback network interface
  auto lo
  iface lo inet loopback

  # The primary network interface
  allow-hotplug eth0
  iface eth0 inet manual
  up ifconfig eth0 0.0.0.0 promisc up

  auto eth0

  auto tap0
  iface tap0 inet manual
  up ifconfig $IFACE 0.0.0.0 up
  down ifconfig $IFACE down
  tunctl_user well(这个改成你的用户名)

  auto br0
  iface br0 inet static
  address 你的ip
  netmask 255.255.255.0
  network 你的ip,最后一组改为0
  broadcast 你的ip,最后一组改为255
  gateway 你的网关的ip
  (如果你用的dhcp,上面6行请改为 iface br0 inet dhcp )
  bridge_ports all tap0

  4.7 首次使用需要激活刚才建立的虚拟网络接口和网络桥:
  sudo /sbin/ifup tap0
  sudo /sbin/ifup br0

  这个步骤只需要做一次,下次主机重新启动时,这个接口和桥将自动激活

  5,让 virtualbox 使用这个虚拟网络接口。启动 virtualbox,在主界面上选中要使用刚才建立的虚拟网络接口tap0的虚拟机,点“设置”,在弹出的窗口中选“网络”,选中其中一块网卡(通常为 “网络适配器 0”),选中“启用网络适配器”,“连接到”后面选 "Host Interface",选中“接入网线”,然后在“主机网络界面名称”中填入刚才建立的虚拟网络接口的名字 "tap0",确定。

  6,配置虚拟机网卡地址。这一步曾经难倒我了,其实很简单,和主机的br0一样的配置,只是ip改一个不重复的即可。子网掩码、网关、DNS 都不变,与br0的设置一样。

  7,此时,主机和客户机就可以通讯了。但注意要调整双方的防火墙,使主机和客户机能够互访。(可以关闭客户机的防火墙)

  8,关键一步。linux主机必须开启NAT才能让windows guest上网。注意到第7步,windows客户机还只是能和linux主机通讯,并不能上网。要让windows上网,在你的linux主机iptalbes规则中加入:

  echo -n "Setting up my NAT rules..."

  INTIF=br0
  EXTIF=tap0
  echo 1 > /proc/sys/net/ipv4/ip_forward

  # set forwarding and nat rules
  ${IPTABLES} -A FORWARD -i $EXTIF -o $INTIF -j ACCEPT
  ${IPTABLES} -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
  ${IPTABLES} -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

  echo " done."

  这里主要是注意内部网络接口是br0,而外部接口是tap0,重启防火墙,OK

  9,至此,我们得到了一个桥接上网的虚拟机。接下来就实现我们的让linux享受netpas服务的梦想。

  10,当然首先是在windows下安装netpas软件,然后,掏钱吧,一个月15元,我觉得值。当然你也可以用其他免费的类似软件

  11,接下来,在windows下安装一个代理服务软件,我推荐CCProxy。装好后,进行适当配置,让linux主机能享受CCProxy的服务。具体配置一目了然,也可以参考网上文章。

  12,最后,在linux主机中设置使用代理,firefox xchat 都有相应的设置。其他软件也基本都有。填入windows客户机的ip和端口(注意是在CCProxy里面设置的端口),就可以使用windows的代理服务了。当然,很多文本软件比如apt gpg wget 等使用代理是通过设置 http_proxy环境变量或者修改自己的配置文件来实现的。给出一个参考:

  export http_proxy=http://xxx.xxx.xxx.xxx:808

  13,终于,看到胜利之光了。在windows下开启netpas和CCProxy,在linux下设置好代理,尽情享受netpas给你带来的快感吧。祝好运。

  14,说明。另外还有别的实现方式也可以考虑,比如internet连接共享等。或者用其他的网络拓扑来实现。大家可以进一步补充。eth0在全过程中似乎没什么作用,我把它设置为混杂(promisc)模式,不知道需要否。特别注意防火墙,如果不怕入侵,就关闭主机和客户机双方的防火墙吧!

  15,感谢。