发布网友 发布时间:2023-09-19 07:39
共1个回答
热心网友 时间:2024-08-03 22:31
对于在教育网内的同学来说,最大的痛苦就是教育网不能出国和访问公网速度 慢了(有钱买流量的不用看本文),所以通常有些需求的就必须购买像教育网 直通车之类的加速服务,当然还有另一种选择那就是花钱买专门的VPN。但这里 都有一个问题,那就是所有的网络加速服务都只有windows下的客户端,在 linux就都没有官方的使用方法了。对有些加速服务,有人想出了一些非官方的 办法,比如在知道服务器地址的前提下,教育网直通车可以用PPPoE来连。据说,BrigeWan也可以用类似的方法,但上次在一个论坛里看到因为官网对协议作了点小修改,结果就是必须修改原来写好的连接脚本,而这又要听包,调试 等。另外,有人还想用netpas吧,这个是我看到的最便宜的,费用标准也最灵活,除了p2p*的厉害(会被卡在20KB/S下,而且几乎不浏览网页)外,一般 速度还是不错的。现在我用的就是这个。但是因为netpas用的协议比较特殊,PPPoE的方法就不能用了,网上也没有查到有用的资料,唯一搭得上边的也就是linuxdic上的这篇文章了(估计不是原出处),但那是2007年的了,老得 几乎没有参考价值。 可见,在linux下使用加速器,要么缺乏官方支持不稳定,要么是没有比较新的指导。所以写这篇文章很重要。
好了,废话不说了,下面介绍方法,可能有点长,但内容很丰富;)
2 准备工作
2.1 好点的机器配置。
既然是用虚拟机跑代理,当然机子内存要大,这点最重要。512M估计是会卡 的,1G应该就行,2G以上就很理想了,再小的话可能就要采用些非常手段了,下面也会稍微提到下。
2.2 安装VirtualBox
至少3.0以上吧,最好是3.1以上的。VirtualBox这几年开发进度很快,很多特 性都加了进去,合理运用能有效减少工作量。Ubuntu下是有的,其它的Linux 发行版的源里一般也都有,而且既然你都用Linux了,那么就至少现在能装软 件,不知道的话,搜下吧。我用的是Arch64(Archlinux 64位)。
2.3 安装winxp虚拟机。
VirtualBox怎么用就不说了,VirtualBox本身的文档很详细,网上这方面的 介绍也很多。这里提下,windows可以用98的,如果你机器内存小的话,但可 能会遇到一些小问题。最好是winxp了,最好不要用一些网上流传的镜像和 Deepin啥的,这些都是修改版,难保后面配置时没问题。重新安装个新 的,winxp professional的,不会用太多时间。最后记得安装VirtualBox Addition,这个副加包可以提高虚拟机的运行效率,另外还提供不少好用的 额外功能。
2.4 虚拟机windows中,下载,安装nat32e。
NAT32是一个我目前看到的最先进的NAT类软件(一般也叫共享网络 连接), 我也试过许多其它的,但是要么是没办法满足要求,要么就是不稳定少功能。 这个软件是免安装的,但是要安装一个驱动,这个可以手动作。图省事的, 就直接点setup就好了。软件是共享的,功能不设限,程序每次只能连续运行 2小时,但可以无*地重新运行,所以这不是个问题,后面有个简单的脚 本,能让这个软件几乎总是在运行(无需人为干预)。
2.5 可选:虚拟机windows中,下载3proxy
3proxy是一个非常非常小的proxy软件,功能很全也很强 大,windows和linux 下都可以使用。配置的时候是直接修改配置文件的,典型的unix风格。有人 喜欢用*roxy的话,就自己到网上搜下如何使用吧。 3proxydownloadsection中 有各个版本(包括windows64位的)下载。
3 配置与使用 3.1 设置虚拟机
你这时候应该已经安装好了netpas,并且在linux主机联网的情况下,netpas 能联上,然后在虚拟机中能正常上*。
3.1.1 设置网卡
主要是安装完windows后,设置虚拟机的网卡。默认是只有一个NAT网卡,地 址是10.0.*.*(*表示任意,当然具体只能是确定的)。这个是VirtualBox自 己配置的,后面也要用,但无需额外配置。在网卡配置里启动第二个网卡, 选择Host-only(中文应该是主机网络吧?),底下有个连接网线的选项,选 中。你还可以把虚拟机中别的不用的设备选项都关掉。图形里的2D图形加速 可以选上。启动虚拟机,这时候可以看到,有两个网络连接,找到那个 192.168.56.101(大致类似这个的),记下它现在的IP信息,然后修改IP属 性,把DHCP改为?态地址,并把刚才记下的都填上,没多填。这步之所以重 要是因为,这个网络连接,过会儿会作为linux主机的网关,所以我不希望它 的地址有任何变化,这点尤为重要如果你像我一样经常用到两个虚拟机同时 运行的话,这时候DHCP分配的地址会根据虚拟机启动顺序不同而不同。
注:不少学校的网络比较无聊,linux下没有对应的联网客户端,好像有个 叫锐捷的网络登录系统就是这样。这时候,推荐你到网上搜一下,有人作过 一个linux下的锐捷认证软件,如果还是不行,那么这里你可以用虚拟机联 网,不过虚拟机要用一个网桥连接的网卡。这方面网上也有不少资料,这里 就不多说了。
3.2 虚拟机windows下
3.2.1 获取netpas的路由表
必须先启动netpas。 开始菜单-运行-输入“cmd”-命令行窗口-输入“route PRINT” 这时候可以看到,屏幕上输出在netpas启动后的路由表。把这个输出复制到 文本文件中,编辑删除所有目标地址为保留地址(0.*.*.*, 192.*.*.*, 10.*.*.*等)的行,删除那些注释用行,最后文件中每一行都是路由表中的 一项,保存并传到linux主机中(用网络传,或是用共享文件夹,这个推荐 吧,方便)。
3.2.2 配置nat32e
注:因为后面用到了NAT的功能,据说在windows 2003 server版中有相应的 工具进行设置,比较方便可靠。但一来是虚拟机里跑,资源比较紧;二来也懒 得再去整另一个系统了,有知道的欢迎留言。另外,我知道有个netsh的命令 可以用来配置NAT,但整了挺长时间,没办法找到netpas虚拟网卡的名称 (netsh中需要这个),也不想浪费时间去学windows里这个怪怪的命令(用 过你就知道了,留着时间学linux吧:),所以放弃了。知道的也欢迎留言。
如果配置过共享上网的机器,在每一个网络联接属性的高级选项里都有一个 共享该连接的选项,这其实就是初等的NAT了。但因为netpas的连接比较特 殊,这种简单高效的方法不能用了。这里用nat32e来解决这个问题。
先连接上netpas吧,便于后面配置。 安装好net32e后,桌面上会有几个图标,第一次用需要用NAT32CFG这个功 能进行配置。配置过程本身很简单,基本上都是下一个(next/continue)。 只有一个页面需要介入,就是选择内网和*时。 (人懒,就不截图了,相信用linux的都至少有一定的英文基础吧,不过有 需要的可以留言,我再作个截图重新说下,这里简单讲)页面上,方框里有 一些网卡供选择,一般有三个,每选中一个其下有IP地址,名称等说明。选 择框右而有几个单选按钮,Private(内网),Internet(*)。选上名 称为Unknown Name Netpas Adapter的网卡,然后选上Internet按钮,这时 候网卡前标记为I,然后选另一个网卡,地址是192的那个,再选上Private 按钮。那个网卡前出现个P。好了,下一步直到完成。
配置完成后,以后每次运行时只要点桌面上的NET32RUN就可以了。 现在你还不可以通过NAT上网,需要在linux下作一些配置。
3.2.3 可选,配置3proxy
注:这个是可选的,就是对那些更喜欢用代理的人来说,或是那些想省事的人,设置代理可要简单得多,而NAT还有不少配置要做,但坚持到最后的人是会有回报的:)
3proxy的功能是非常强大的,有兴趣的或需求可以花时间读一下文档,这里给一个比较通用的配置文件。 ================================================================ ================3proxy.cfg Starts ==============================
#!/usr/local/bin/3proxy
# Yes, 3proxy.cfg can be executable, in this case you should place
# something like
#config /usr/local/3proxy/3proxy.cfg
# to show which configuration 3proxy should re-read on realod.
system "echo 3proxy is running...!"
# you may use system to execute some external command if proxy starts
# We can configure nservers to avoid unsafe gethostbyname() usage
####! maybe useful, but dont understand
#nserver 10.1.2.1
#nserver 10.2.2.2
# nscache is good to save speed, traffic and bandwidth
nscache 65536
# in log file we want to have underscores instead of spaces
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
# We will keep last 30 log files
internal 192.168.56.101
# internal is address of interface proxy will listen for incoming requests
# 127.0.0.1 means only localhost will be able to use this proxy. This is
# address you should specify for clients as proxy IP.
# You MAY use 0.0.0.0 but you shouldn't, because it's a chance for you to
# have open proxy in your network in this case.
auth none
# no authentication is requires
####! maybe useful in some occassions
# dnspr
# dnsproxy listens on UDP/53 to answer client's DNS requests. It requires
# nserver/nscache configuration.
#external $./external.ip
#internal $./internal.ip
# this is just an alternative form fo giving external and internal address
# allows you to read this addresses from files
auth none
# We want to protect internal interface
deny * * 127.0.0.1,192.168.56.101
# and llow HTTP and HTTPS traffic.
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n -p8090
auth none
flush
socks -p9080
===============3proxy.cfg End ================================ ================================================================
这是根据3proxy给的样例加以改造的,把它复制到文件中,并保存为 3proxy.cfg,然后放入3proxy的bin目录下,双击3proxy.exe运行就可以了。 这个配置使3proxy开启了两个代理,一个是http代理,在8090端口;一个是 socks5代理,在9080端口。 接下来你只要在需要设置代理的程序中设置如下即可: Http: 192.168.56.101:8090 socks5: 192.168.56.101:9080 这就是配置3proxy的全部过程,现在你应该可以在firefox里上国*了 推荐使用foxproxy等firefox插件,这些使设置代理变得非常方便。
补充:NAT与proxy的区别
网上介绍的大部分是用代理来共享的,这是因为代理简单,适用范围广。但 是,如果能够用NAT的话,最好还是用NAT。原因很简单,要求使用代理的程 序必须得支持代理,而且代理一般只支持特定协议如常见的http代理。当然 现在有很多socks代理,实际上可以支持任何协议,但首先程序必须能够支 持socks代理。这一点其实通常没有满足,这也是为什么像wincaps这样的 程序非常的流行,它们可以使原来不支socks代理的程序使用socks代理, 但问题依然存在:对每一个你需要用代理的程序,你要单独进行设置,另 外可能也有性能上的降低(这个不是很清楚)。另外,似乎linux下没有特 别好用这类软件(知道的,欢迎留言),tsocks的开发都停止很多年了。
而NAT虽然并非在所有场合都能用,但一旦使用,你获得的就是从网络底层 到高层统一一致的服务,从ping到http,无需再做设置就可直接使用所有网 络资源,而且结合使用路由表,灵活性不比proxy差。而在性能上一般也较 好。对于在linux中,你可能有IM,需要联网的桌面应用如桌面天气,桌面 RSS等,新闻下载客户端Miro,或是开源的联网小游戏teeworlds等。这些中 许多没有内置代理支持,而其使用的协议也各式各样。但在NAT下都能直接 使用。
3.3 linux下配置路由表
这部分应该说是最难的,而且因为大家上网的方式不一致,所以路由表的内 容和配置也不同,可能配置上会有些差异(??)
3.3.1 导入从windows下获得的netpas路由表(依前修改后)
这个路由表的特点是,所有表中的目标地址的访问netpas都设为不通过 netpas加速,这其中包括所处教育网,netpas的服务器地址等等netpas认为 不应或不需通过其加速的地址段。把这些都导入到linux下的路由表,其中 网关一项全部改为你直接在linux上网时用的默认网关,具体步骤如下:
打开一个终端,以root身份执行命令(su, 然后输入root的密码)。命 令“route -n”, 会输出目前系统的路由表,记住开头为default的一项后的 IP地址,此即当前的默认网关。
用命令“route add -net 1 netmask 2 gw 3” 或 “route add -host 4 gw 5” 导入新的路由表项。 其中1为目标网段,4为目标地址,即netpas路由表中的第一列,结 尾为0的是目标网段,其它为目标地址。而2为网址掩码,也就是 netpas路由表的第二列。4,5都是上一步得到的当前默认网关。 不要一个一个输入这些命令执行,先把这些命令写入一个shell脚本,然 后再一起执行。 脚本应该是类似这样的:
================
#/bin/sh echo "NEED root authentication"
echo "The following is from Netpas in w32…"
route add -net 58.154.0.0 netmask 255.254.0.0 gw -.-.-.-
route add -net 58.192.0.0 netmask 255.240.0.0 gw -.-.-.-
route add -net 59.64.0.0 netmask 255.240.0.0 gw -.-.-.-
route add -net 121.48.0.0 netmask 255.254.0.0 gw -.-.-.-
route add -net 121.192.0.0 netmask 255.252.0.0 gw -.-.-.-
================================================================
即一条命令接着一条,网关gw,“-.-.-.-”要填上你的网关。 至少如何执行,具体自己去搜吧,命令是“chmod u+x 脚本文件名”,“./脚本文件名”。
3.3.2 进一步设置路由表
完成上面的导入,现在就是切换路由路线的时候了。正如前面所说,netpas 路由表的表项都是不通过netpas加速的,所以上面都设置为直接通过你现在 的网卡连接。而对于其它的地址,我们需要设置其通过netpas。三步:
执行,“route add default gw 192.168.56.101",即增加一个默认网 关,这个网关就是虚拟机。这一步必须在虚拟机启动后执行才有效,否 则。
执行,“add -net 10.0.0.0 netmask 255.0.0.0 dev eth0”,即让所有 通过netpas加速的包都直接发送到*端口。这里eth0应换成是你在 linux下用来上网的网卡名称。这一步很重要,否则需要加速的包就出不 去了。这一步可以在任何时候执行
执行,“route del default gw -.-.-.-”。即从路由表中删除你当前的 默网关。这样,需要加速的包就必须从虚拟机这个网关通过。
好了,如果虚拟机里netpas和nat32都连上打开了,你现在应该可以上* 了,无需在相应程序中设置:)
4 更好的代理
4.1 打破2小时的*
前面说到nat32有连续2小时的*,然后必须重启nat32. 大家都不喜欢限 制,要么为什么要用Linux呢?:) 那么我们去找破解吧!我去找过,网上的破解大多不能用了,就算能用(没 找到,实际上,搜索结果挺多的)吧,也很老了,nat32这个软件1.8版本在 2005年就推出了,现在还是1.8版但却是在今年二三月份推出的,我对比了 下,差别很大,同是1.8界面功能都不太一样。所以,没有现成的破解。 那么我们去写一个破解吧!好吧,我承认,我太菜,这个任务我不能完成, 就留给聪明的读者和强大的黑客吧。不过,俺觉得有这个时间,不如写更好 的linux程序,这才是长久之道。看多了“破解-补丁-破解-补丁-破解……” 的恶性循环。 当然有第三种选择,就是写个脚本来自动重新启动nat32,如下: ================================================================ ================ repeat_start.bat START ===================
@echo off
echo Simple script to keep a program running all the time
set program_path=C:/NAT32/nat32.exe 2
set program_name=NAT32
set count=0
set wait_seconds=30
:LOOP
set /A count=%count%+1
echo "start %program_name% for %count% time(s)"
rem - wait it terminates
start /wait %program_path%
echo "ooooops, it stops..."
echo "wait for about %wait_seconds% seconds, then restart..."
rem - wait for several seconds
@ping 127.0.0.1 -n %wait_seconds% -w 1000 nul
@ping 127.0.0.1 -n %1% -w 1000 nul
echo ...
echo ================================================================
rem - to restart an infinite loop
rem - of course, you can use a for loop to make it run limited times
goto LOOP
================ repeat_start.bat END ====================== ================================================================
其中,set program_path=C:/NAT32/nat32.exe 2 这一行,= 后面的参数可以 通过看“NAT32RUN”这个桌面快捷方式找到,复制粘贴就行,一般若安装的 NAT32就是这个参数。 这里这个脚本,其实可以用来维持任意会中断的程序的运行,原理很简单,就 是启动程序后,等待其终止,一旦中止就再启动。一般,为了避免一些因为程 序刚关闭时的一些问题,最好等一会儿再启动。对nat32而言,因为它用到了 驱动,所以感觉最好等久些,我设成了30秒。至于其中等待用ping来实现,则是从网上复制来(人懒,没花时间去研究)的高人前辈的“暗黑系魔法”。2003 server里有个sleep的程序,而xp pro里没有。。。 以后,每次就不再运行NAT32RUN,而是直接用这个脚本。
4.2 更好的路由
其实,netpas路由表是很有限的。现在教育网访问公网,对有的地址其实是 很快的,像,youku之类的,应该是相应的网站针对教育网进行了优化。 所以,这些也通过netpas加速的效果反而更差。所以,你可以找到这些地址,然 后用“route”来设置为直接访问。 这里其实有个不好的地方,就是这里说的设置路由的方法总是要用到root权 限。当然,其实路由表是相对稳定了。不知道有没有更好的方法。
4.3 不再用了
不用NAT了,要回到正常联网,只需执行下面两个命令: “route del default gw 192.168.56.101". “route add default gw -.-.-.-”。 其实就是,上面设置路由表最后两步的逆过程,其它都不用改。
4.4 Some geek stuff:
对于像我一样,觉得命令行,文本更好,并且觉得应该尽量减少windows在 linux中的出现的。介绍两个命令,VBoxManage, VBoxHeadless。 VBoxManage,是VirtualBox的命令行,像“ VBoxManage startvm xpnet ” 这个命令,可以用来从命令行启动虚拟机,xpnet是虚拟机的名称。这样就 不用每次都打开VirtualBox的图形窗口了:) 当然,你会觉得这还不够,为什么要一个windows虚拟机的窗口始终在我的桌 面上呢,为什么我只是想用它来联网而它始终要一个显示窗口呢?好吧,让 它消失吧~ VBoxHeadless,原本的目的是为了在远程服务器上启动虚拟机用的,因为是 在远程服务器上,所以服务器上是不应有图形窗口的(没人在那看),所以 由它启动的虚拟机是没有窗口的。为了控制由此启动的虚拟机,它支持一个 VRDP的协议,相当于VirtualBox的远程桌面。当然,这里我们不用它这个功 能,因为开启这个功能会在主机上启动这项服务,可能会导致有人可以从网 上联到你的虚拟机。 开启winxp pro的远程桌面,用“VBoxHeadless -startvm=xpnet -vrdp=off ”启动虚拟机,用 “rdesktop -a 16 192.168.56.101 ”来连接,如果 需要手动调整配置什么的。 如果觉得每次输入密码麻烦,用下面这个命令 rdesktop -a 16 -p passwd 192.168.56.101 -p 后面填上密码明文,不用担心,你的虚拟机在内网里,外面联不进来的。
文章有些长,但我觉得方法还是很好的,尤其是NAT的使用,使虚拟机整个构 成了一个支持所有协议的透明网关。另外,值得注意的是,这个方法适用于几乎所有的加速器,因为整个设置通过虚拟机实现了对加速器是透明的。所以,希望有所帮助。有指导,有问题的欢迎留言。