URL:http://www.oneasiahost.com/

html/qq%e6%88%aa%e5%9b%be20130819153639" rel="attachment wp-att-443">QQ截图20130819153639

 

现在只有OpenVZ主机,SSD少量到货。最低只要$12/年,注意不要选用Core VPS,这个是没有中国线路的。商家还很贴心的用中文写了“中国客户注意 - CORE VPS 没有直接的中国网络, 通过美国. Ping 400ms+ 连接中国速度慢, 较适合在中国以外的地区或需要使用高頻寬的用户”

可以安装PPTPD VPN,访问谷歌、youtube、twitter、非死不可(facebook)嗖嗖的。

------------20131210-----------

要开启 TUN/TAP和PPP

QQ截图20131209151832

其他不再赘述,发挥二的性格,我们直奔主题。

    用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DNS client,寻找到用户配置或者自动分配的DNS IP,之后就开始整个解析过程。

    DNS解析,变快有意义吗?

    有,呵呵,很多小型网站,DNS解析时间都接近0.5s,甚至我见过一个网站,需要1.2s才可以解析出结果的。这是个非常令人吃惊的数据,因为对于一般网站打开时间超过8s用户即将放弃访问,而对于电子商务网站,4s就是用户忍耐极限。而一般经过优化的小型网站,DNS解析时间都可以控制在200MS左右,而带宽在100M左右的网站,经过优化,DNS解析时间可以控制在50-100ms。

    如何优化呢?

    首先利用好TTL,因为要尽量多的让用户直接从运营商的DNS缓存中拿到A记录,这样才能保证最快,但是也要保证,当你的服务器出问题时,需要尽快的切换,所以,这个TTL设置也是有一些情况需要综合研究的。

1、 你肯定清楚,自己的服务器有没有多台或者备份。如无备份,那服务器宕机时,你只能生抗,所以,TTL时间对于你来说是越长越好,因为TTL短的目的是服务器发生问题时,可以及时切换,这个对于没有备份的网站基本利用不上。所以,你的TTL设置就是越长越好,当然了,也不能无限长,一般设置TTL 3600即可。

2、 如有备份或者多台服务器,会发生由于服务器宕机需要及时做切换,TTL时间越短,切换越及时,但是TTL时间越短,也就意味着运营商DNS经常缓存不住,一般用户,设置为TTL 600即可,如果对及时切换,要求特别苛刻的网站,设置TTL 120即可。

其次寻找足够热的域名解析商。很多网站,都是自己做一个域名解析服务器,看着自己掌控方便了,但是大错特错,因为你的域名解析服务器,基本上都不被缓存,每次从根服务器询问一圈,绕了大半个地球,才给出最后的结果,那自然会效果很差。所以,要寻找足够热的域名解析商。什么叫热,就是被访问的次数特别多。足够热的话,域名解析服务器的A记录基本上会被各地运营商的DNS一直缓存着。如何判断域名解析商够不够热呢?其实,也很简单,看看这个域名解析商的客户够不够多,他们客户网站够不够热门,访问的人够不够多。

也给大家推荐一个更好的方法,就是找CDN厂商做域名解析。因为CDN厂商服务的客户,有很多是很热很大用户群很多的,所以,这些CDN厂商的域名解析服务器,服务效果那是岗岗的好。

最后是进阶技巧---巧用CNAME。不少网站拥有者,在同样的一个或多个服务器上运营很多小网站;或者自己运营一个网站,但是拆分了很多个二级域名。针对这些情况,严重需要善用CNAME,把所有的这些小网站的域名或者二级域名,cname到一个自己定义的统一域名。然后设置这个cname对应的TTL时间足够长。这样的话,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到,也就是直接拿到cname后的记录。然后,第二个cname记录,再设置一个相对合理的TTL值。通过这样,变相加热了第二级域名,通过加热的第二级和缓存时间足够长的第一级,最大化的优化DNS解析时间。该技巧,一定要确保,最后A记录得到的IP,可以服务这些原始域名。

例子:

www.abc.com.  7200 IN  CNAME  hot.abc.com.

hot.abc.com.   600  IN  A       127.0.0.1

      什么叫拆分域名?

         很多网站,在搭建网站的时候,只是申请和购买了一个域名,然后所有内容:图片、js、css、html、php等等,都放在一个域名下。

         而拆分域名,指的就是根据不同的应用,而将域名拆分出来。

         拆分域名有什么好处?

         使用IE6和IE7内核的浏览器,针对同个域名,只会同时发起2个连接。

         使用IE8内核的浏览器,针对同个域名,可以同时发起6个连接。

         很重要吗?

         非常重要,请看图示。

         使用IE6打开一个所有内容均在同个域名下的网站

         

         使用IE8打开一个所有内容均在同个域名下的网站

我们看到的是,在IE6的情况下,请求第7个元素,需要0.7s,而在IE8的情况下,0.277就开始请求第7个元素。

由此可以看到,并发连接更多的时候,网页打开速度会更快。

使用IE6访问情况如下:

域名个数

页面大小

耗时

1个

500KB大小的首页

7s

多个

540KB大小的首页

3.6s

使用IE8访问情况如下:

域名个数

页面大小

耗时

1个

500KB大小的首页

4.6s

多个

540KB大小的首页

3.1s

         由以上数据可以看到,多个域名,不管是在IE6和IE8的情况下,拆分域名,都会使网站的打开速度变快。

         现实中也是如此,新浪、淘宝等大型网站,他们无一不是在拆分域名。

         另外,要纠正一个IT人的误区。因为IT人一般都热衷技术,很多人的操作系统等版本都很新,用的都是IE8甚至以上的浏览器。但是整个中国,到目前为止,使用IE6和IE7的用户,仍然非常另IT人震惊的80%左右。所以,拆分域名,基本上可以缩减你20%以上的打开速度。

         一个简单的操作,就能带来巨大的效果提升,何乐不为?

         当然了,肯定会有人问,拆分域名,那不就会导致域名热度不够,DNS缓存不住的问题吗?这个问题,请看我上一篇博文,已经给出了答案。

         按照什么原则拆分域名呢?

         个数多少合适?

         一般50M以下网页类网站,域名保持在4、5个即可,过多后范围会导致你的维护和使用变得复杂。

         100-500M以下网页类网站,域名保持在8-10个左右。

         1G以上的网页类网站,域名无所谓个数,保持10个以上,具体个数根据自己的业务和管理特点随心制定。

         什么内容放到同个域名下?

         页面类:html、htm等

         样式类:js、css等

         图片类:jpg、png、gif等

         动态类:php、asp等

         这样的分配方式,将来有利于你进一步优化你的网站,并且在你需要寻找加速工具时,也可以针对性的选择不同的加速方式。

  老鸟请直接看开启压缩进阶篇。

      菜鸟还是慢慢随着老夫的思路看吧,哇哈哈。

      

       什么是压缩?

         大家还记得我们第一次接触winzip软件吗?非常神奇,一个文件,经过winzip压缩后,大小可以压缩成原来的30%左右。记得当年,很多文件,都是压缩后才可以放到自己的软盘中。

而对于网站,也有这样的压缩技术,可以让你的网页中的文本类文件瘦身,在用户完全不知情的情况下,通过gzip和deflate压缩程序有效减少了网页,让用户更快的打开网站。

压缩有多大用处?

         通过一个小小的测试软件,我对新浪、网易等门户网站进行了访问。

         新浪首页访问情况:

网易首页访问情况:

大家可以明显的看到,网易和新浪的首页,经过压缩后,都缩小了70%以上。

相信大家都知道,当一个网页,减小到30%后,对于最终用户来说,打开网站的效率会提升为原来的3

备注:

该工具地址http://www.gidnetwork.com/tools/gzip-test.php  大家也可以测试下自己的网站压缩后的情况。

用户不支持压缩怎么办?

开启压缩后,会不会由于用户无法访问这种压缩文件,导致用户访问文件失败?

不会,因为Trident、Gecko、Webkit三种内核的浏览器,都在发起请求时,告知服务器,他们支持什么压缩格式,如下图:

而服务器都是按照发起请求中用户支持的压缩格式,进行对应反馈。如果用户发起的请求头中,无Accept-Enconding头,就将返回给用户非压缩格式。

如何开启压缩?

请百度娘之,网上太多教程了,不再赘述。

对哪些内容开启压缩呢?

只需要针对文本类文件的域名开启压缩。图片等,已经都是压缩格式了,再使用压缩,不会减少什么文件大小,反而会导致服务器负载变高,以及会由于这种对图片的不规范压缩使用导致各种各样意想不到的问题。

所以,开启压缩之前,最好先完成域名拆分的工作,具体见如何让网站打开更快第二弹。

技巧点:

开启压缩,建议使用apache服务器。

因为IIS服务器在处理压缩时有个小问题,就是第一次被访问的时候,IIS给出的文件时非压缩的,后续的访问,才直接给出压缩文件。

这个小的bug,其实问题并不大,但是现在很多网站都在用一些缓存服务器或者是CDN,就会导致这个问题被放大,会导致压缩启用并不能完全成功。

而apache是第一次就直接给出压缩后的文件。

当然了,如果你用的是IIS,并且无法替换apache,那就自己麻烦一些,写个脚本,将常用的页面,在开启压缩后,访问2次,可以减少很多问题发生。

开启压缩之进阶篇

当下的中国网络状况

中国网络谁当家,当然是电信和联通两朵花,但是现在越来越看到的现象是百花争艳,除了这两朵花之外,越来越多的涌现小ISP。如移动、电信通、长城、方正、歌华有线、光环新网、甚至南方地区还有些香港过来的小运营商。

这些小运营商都有一个特点,就是会cache文件,他们会为了减少网间结算带宽,而尽量想办法缓存文件,让他们的用户本地访问。

其次,对于很多中大型公司来说,他们也会搭建自己的缓存服务器。

另外,还有很多网站,自身都搭建或者在使用第三方的CDN,也都是缓存服务器。

所以,当下的中国网络情况,基本上就是缓存服务器在提供众多的服务。所以,你的开启压缩,如果不主动配合这些各种各样的缓存服务器,那么你out了,你会发现,你的很多努力,都是笑谈,并无实际作用。

如何适合当下的状况?如何才可以保证用户支持压缩时,网络间传递的就是你想给他的的压缩文件?

那么,请紧记以下要点,并逐个落实。

开启压缩时,需要针对压缩和非压缩文件,都返回Vary:Accept-Encoding头。

这个头部是告诉缓存服务器,要根据用户支持的编码方式提供对应的文件。

该项很重要,很多网站,只是对压缩文件开启该头。在缓存服务器中,如果给出的非压缩的文件不包含该头部,也就是告知缓存服务器,当用户请求时,不需要判断用户支持的编码格式,而直接将该文件传递。所以,最后导致用户请求到缓存服务器时,无论用户支持不支持压缩,都是直接返回非压缩的文件。

开启压缩时,需要同时对HTTP1.1HTTP1.0均开启压缩。

大家都是认为,HTTP1.0协议的用户,肯定是特别老的用户,肯定是不支持压缩的,所以,很多网站,都是针对HTTP1.0协议提供非压缩文件。

但是,实际中,太多太多的缓存服务器,为了追求最大的兼容性,还在使用HTTP1.0协议。所以,当你只是对HTTP1.1协议开启压缩时,等于抛个媚眼给瞎子看。

例如,新浪的缓存服务器,也是HTTP1.0协议的,但是他们就很聪明的针对HTTP1.0也开启了压缩服务,如下图:

  为什么要讲HTTP头?

1、  非常简单的通过HTTP头,可以让你的用户打开速度快10倍

2、  网上讲HTTP头的文章,都讲的太玄乎和专业,实际价值不大

3、  太多人看了太多乱七八糟的文章,加了很多自己也不知道干嘛用的HTTP头

4、  HTTP头过大会阻塞你的用户访问,你考虑过吗?如何让你的HTTP头正好够用,能够起到效果又不要过于臃肿堵塞你的用户,你考虑过吗?

什么是HTTP头?

         HTTP协议采用了请求/响应模型。

客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
         以上是抄来的,其实我不想讲,呵呵,但是普及下吧。

下面是我们这一篇中主讲的

HTTP响应头的管理

哪些是常用的HTTP响应头?

      看图:

                    总结来看,常用的HTTP头如下:

 

协议 状态码 HTTP/1.0 200 OK
服务器时间 Date:
服务器 Server:
文件类型 Content-Type:
自适应 Vary: Accept-Econding
备注:sohu的网站用的Vary后有很多选项,是为了手机访问给对应格式页面的,但是这个方式,哥甚不赞同
最后修改时间 Last-Modified:
备注:www.qq.com没有该项,所以,悲剧的qq,当他的用户每次点击刷新时,别的网站都是个发送If-Modify-Since请求,返回304无变化只需要几百字节,而qq的用户则需要直接请求,全新拿文件,从几百字节消耗变成5W多个字节
压缩格式 Content-Econding: gzip
备注:了解这个妙用,看俺的第三弹
过期时间 Expires:
备注:哥一直认为,这是个非常渣的HTTP头,没想到四大门户都有这个头,啧啧,预计在第五弹我会批判这个
缓存设置 Cache-Control: max-age=
经过缓存服务器后的各种头 Age: X-cache: Via: FSS-cahe: 等等
备注:这个再一次说明了,中国的互联网早就是缓存服务器的天下了,具体见第三弹
综合以上的以上,我充满信心的说,以前我和很多人争论过的,Etag头对于99%的网站就是垃圾这件事情,得到了充分证实,这四大门户首页,没有一个用Etag头的。

 

哪些头需要好好管理?

Cache-Control

这是个无比妙用的头,它可以让你的首页,从2MB,变成200KB。

没错,就是它。

我们先看看别人用了它之后,做到了啥。

 

网站

首次打开大小

再次打开大小

首次请求数

再次请求数

www.qq.com

505KB

45KB

92

18

www.sina.com.cn

1261KB

800KB

186

94

www.sohu.com

738KB

296KB

151

61

www.163.com

1784KB

487KB

247

66

 

减少了这么多,网站和用户双赢,靠的就是这个头。下面我将讲下具体如何用。

Last-Modify

这个头好用,那就用是了,为什么还要单独拿出来说?

是因为这个头,有个小的隐藏风险,见过很多人中标,我指出来,希望更多的人可以看到,之后避免。

很多网站,在更新网站或者发布网站临时维护信息时,会采用将老的文件,剪切到其他目录,然后本地再上传一个同名文件进行文件更新或者网站的页面更新。当更新的页面出问题或者维护结束他们使用正常页面给用户服务,会立刻把老的文件剪切回来,覆盖旧文件。

这就有一个非常大的问题。

因为对于已经访问过网站的人来说,他们已经把文件缓存到了本地。当用户再次访问网站时,会发送一个If-Modify-Since请求。

老文件  Last-Modified: 旧时间

新文件  Last-Modified: 新时间

当你用旧文件替换新文件后,由于新文件的最后修改时间要早于旧文件的,所以,IE不会让用户拿到没有问题的旧文件,而是让他们使用新文件。

所以,如果你使用用旧文件替代新文件,一定要对旧文件做个小的处理,使其更新最后修改时间,不然,用户依然会访问出问题的页面或者是维护页面。

如何用好Cache-Control

当你不想让用户缓存时,你只需要添加一个头,no-store即可,其他no-cache、must、must-revalidate、proxy-revalidate等都没必要用,因为no-store一般默认为最高级。

其他可以让用户缓存的页面,区分目录,根据不同的目录,配置不同的max-age头。

max-age啥用处?

用户得到HTTP响应头后,会根据本地时间,加上max-age的时间,形成一个过期时间。例如,用户本次时间为11:00,max-age设置为600,那么文件拿到后,过期时间为11:10分。也就是这个用户,在11:10分以前,访问这个文件,就会直接缓存命中,而不会对服务器发出请求。

所以,max-age的运用就可以让你的网站像那四大门户一样,大小减少到原来的10分之一,请求数也会短期内得到巨大的减少。

如何设置Cache-Control

如何设置百度娘之。

管理上的建议:

你不可能针对每个文件配置Cache-Control,所以,最好是先拆分域名,将不同应用(文件类一个域名,图片类一个域名等等)配置不同的缓存控制头。

如果你的网站属于大中型网站,如网页访问带宽在100M以上的,可能针对域名配置不同缓存控制头,已经不能满足你的需求了,这个时候,就可以管理好你的目录。

将文件根据你们网站特点分到不同目录,然后针对目录,配置不同的缓存控制头。

max-age设置多大?

以下提出的均为建议值,但是最适合你的,是你自己根据网站特点进行的缓存时间配置。

首页,建议为900,也就是15分钟。

文本类文件,建议为10800,也就是3小时。

图片类文件,建议为86400,也就是24小时。

Swf类文件,建议为604800,也就是7天。

flv、exe类文件,建议为31536000,也就是1年。

作者:王康

文章来源:xmw2.blog.chinaunix.net

转:html">http://blog.chinaunix.net/uid-9395696-id-3432841.html
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/rc.local
sysctl.conf修改
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.ip_conntrack_max =655360
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
php.ini修改
default_socket_timeout = 120
memory_limit = 4096M
php-fpm修改
listen.backlog = 3072
pm.max_requests = 102400

参数根据自己服务器的性能调整

html">最有爱的3D实景版马里奥视频

来源于威锋网

html">http://tech.weiphone.com/2012-12-03/3D_Virtual_Edition_Mario_video_love_540064.shtml

        马里奥游戏大家自然是再熟悉不过了,水管、蘑菇、乌龟壳和跳上跳下的高低平台都是我们童年到年长的记忆。但是你想象过当马里奥来到现实世界里是什么情景吗?来看看一位国外网友发表的现实场景版马里奥冒险视频,绝对原汁原味,超乎你的想象。

html&id=weiphoneplayer1&file=http%3A%2F%2Fmp4.weiphone.com%2F%2Fattachments%2FDay_121203%2F0_2000434_edc1e9200bd833e.mp4&skin=http%3A%2F%2Fbbs.weiphone.com%2Fweplayer%2Fglow.zip&controlbar.position=over" />html&id=weiphoneplayer1&file=http%3A%2F%2Fmp4.weiphone.com%2F%2Fattachments%2FDay_121203%2F0_2000434_edc1e9200bd833e.mp4&skin=http%3A%2F%2Fbbs.weiphone.com%2Fweplayer%2Fglow.zip&controlbar.position=over" name="weiphoneplayer1" bgcolor="#000000" />

这部有爱的小短片里,马里奥世界和现实世界互相穿越到了一起,在我们日常的超市、厨房、书房、大街上、小花园里,看看马里奥大叔是如何以惊人适应力淡定地穿梭在现实世界中。然后视角一转,他竟然在房间里和路易、蘑菇头他们来了一把现实版的马里奥赛车,赛道还是用 SFC 卡带摆出来的,作者你晒够了没有!

马里奥和库巴大 Boss 的决斗在一辆行驶的汽车上进行,搞笑的是最后他用卡带机弹卡的卑鄙招式把库巴打飞了。视频全程充满各种笑点,但是又极具创意,毫无违和感,看得出做视频的一定是位高端任饭。这款游戏曾带给我们的欢乐已经无法说清,如今玩家们也在以不同的方式将这些欢乐再次传递和反馈,真的很可爱。

参考文章:html">http://www.miui.com/thread-442048-1-1.html

 

环境:笔记本电脑,win7系统
设备:小米手机(强君的)
手机操作:打开usb绑定和wifi热点,设置wifi热点,配置ssid名和密码
PC操作:系统会自动安装usb驱动,生成网卡,本地连接2 设置IP为192.168.42.1 掩码255.255.255.0,然后在本地连接(也就是能上网的网卡)右键属性设置共享,允许本地连接2通过它上网。
如果无法识别驱动,装个豌豆荚就行了。
手机操作:安装quicksshd,豌豆荚有下载
PC操作:远程通过putty连接到手机,手机的IP在quciksshd上可以查到
PUTTY操作:
busybox sysctl -a | grep ip_forward
#查看是否存在net.ipv4.ip_forward = 1
#如果不存在
echo 1 >/proc/sys/net/ipv4/ip_forward
#将如下写成shell,比如share_aphot.sh
busybox route add default gw 192.168.42.1
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.43.0/24 -o usb0 -j MASQUERADE
然后赋予执行权限
chmod 777 share_aphot.sh
运行,就能上网了。

将来如果需要手机上网的时候,在putty里执行share_aphot.sh就行了,如果为了方便可以在手机上安装超级终端,登录进去执行su获得root权限再执行share_aphot.sh。

 

第2层隧道协议 (L2TP),是 VPN 隧道协议的一种,是 PPTP 的后续版本。L2TP 支持两端点间多隧道,但通常要由 IPSec 来提供加密和验证功能,可建立变动的客户端到固定服务器的连接。

一、安装 IPSec

IPSec 用于对 IP 数据包进行加密和验证,通常使用 Openswan 来实现 IPSec。

1.1、安装编译工具

1
apt-get -y install build-essential

1.2、安装 OpenSwan 依赖包

1
apt-get -y install libgmp3-dev flex bison

1.3、编译安装 OpenSwan

1
2
3
4
wget -c http://www.openswan.org/download/openswan-2.6.33.tar.gz
tar -zxf openswan-2.6.33.tar.gz
cd openswan-2.6.33
make programs install

1.4、编辑 IPSec 配置文件

注意将"192.168.1.102"换成服务器公网IP。

1
cp /etc/ipsec.conf /etc/ipsec.conf.old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
cat >/etc/ipsec.conf<<EOF
version 2.0

config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=192.168.1.102
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
EOF

1.5、设置 PSK 预共享密钥

注意将"192.168.1.102"换成服务器公网IP。将"123456"换成你自己的PSK。

1
2
3
cat >/etc/ipsec.secrets<<EOF
192.168.1.102 %any: PSK "123456"
EOF

1.6、调整网络策略

for 循环语句,请一行一行地输入,输完后按回车。

1
2
3
4
5
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

1.7、重启IPSec 服务

1
2
/etc/init.d/ipsec restart
/usr/local/sbin/ipsec verify

可尝试使用 L2TP/IPSec 客户端连接一次,以测试 IPSec 部分配置是否成功。

1
cat /var/log/auth.log | grep pluto

如出现"IPsec SA established transport mode"则成功了。

二、安装 L2TP

使用 xl2tpd 来实现 L2TP,另外要注意的是 xl2tpd 需要从 rp-l2tp 中提取 l2tp-control。

2.1、提取 l2tp-control

1
2
3
4
5
6
7
8
wget http://nchc.dl.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar zxvf rp-l2tp-0.4.tar.gz
cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control

2.2、编译安装 xl2tpd

1
apt-get -y install libpcap-dev #安装依赖包
1
2
3
4
5
wget -c http://www.xelerance.com/wp-content/uploads/software/xl2tpd/xl2tpd-1.2.8.tar.gz
tar -zxf xl2tpd-1.2.8.tar.gz
cd xl2tpd-1.2.8
make install
mkdir /etc/xl2tpd

2.3、编辑 xl2tpd 配置文件

ip range 是连接上来的客户端所获得的服务器端内网的 IPv4 地址段。
local ip 是 pppX 所占用的那个 IP 地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat >/etc/xl2tpd/xl2tpd.conf<<EOF
[global]
ipsec saref = yes

[lns default]
local ip = 10.10.11.1
ip range = 10.10.11.2-10.10.11.245
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
EOF

三、PPP 的安装配置

3.1、安装 ppp 包

1
apt-get -y install ppp

3.2、配置 options.xl2tpd

主要是改MS-DNS,其他默认。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat >/etc/ppp/options.xl2tpd<<EOF
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
EOF

四、添加 VPN 用户

chap-secrets 文件为4段,分别是:用户名、服务器名称、密码、分配给客户端的IP。
服务器名可以是l2tpd 或 pptpd,*号代表全部。
密码以明文填写,不需进行加密。
最后的*号代表从remoteip指定的IP段随机分配

1
2
3
cat >>/etc/ppp/chap-secrets<<EOF
user * 123456 *
EOF

五、配置数据包转发

否则连接VPN后,只能访问服务器资源,而不能访问这台服务器以外的资源。

1
2
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sysctl -p

开启iptables转发

1
iptables -t nat -A POSTROUTING -j MASQUERADE

设置MTU

1
iptables -I FORWARD -p tcp --syn -i ppp+ -j TCPMSS --set-mss 1356

六、启动 xl2tpd 服务

1
2
/usr/local/sbin/xl2tpd
/usr/local/sbin/xl2tpd -D #以调式模式启动

参考资料:

1. http://www.linuxhomenetworking.com/wiki/index.php
2. http://www.linode.com/wiki/index.php/AndroidL2TPPSKServer
3. html" rel="nofollow">https://humou.net/blog/201102061326.html
4. http://b.gkp.cc/2010/06/19/setup-ipsec-l2tp-on-centos-55/
5. html" rel="nofollow">http://apple4.us/2010/05/setting-up-l2tp-vpn-on-debian-ubuntu.html

原文地址 : html">http://wangyan.org/blog/debian-l2tp-ipsec-vpn.html
本站遵循 : 知识共享署名-非商业性使用-相同方式共享 3.0 版权协议
版权声明 : 原创文章转载时,请务必以超链接形式标明 html">文章原始出处

买了一台米国的KVM,一年才200块,可以用VPN,自己架设了一套,以下是参考出处:

html">http://www.onelone.com/tutorial/vpn2.html

感谢作者

Debian架设VPN其实跟CentOS相差不大,大家要设置的内容一样,只是具体执行命令有差别而已,所以本文只是简单讲解一下,如有不明请参看我的上一篇html" target="_blank">CentOS Linux VPS架设VPN教程。闲话少说,下面是教程:

 

一、确认PPP和TUN启用后,先升级系统然后重启一次:

 

apt-get update
reboot

 

1.png

二、安装pptpd:apt-get install pptpd 然后配置pptpd,编辑 /etc/pptpd.conf  文件,去掉下面两行前面#

 

localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.10.245

 

三、配置 DNS,编辑 /etc/ppp/options 文件,加入下面两行:

 

ms-dns 8.8.8.8
ms-dns 8.8.4.4

 

四、开启IP转发,编辑 /etc/sysctl.conf 文件,去掉下面代码前面的#

 

net.ipv4.ip_forward=1

 

五、添加VPN用户名密码,编辑 /etc/ppp/chap-secrets 文件,按下面格式输入:

 

用户名    pptpd       密码      *

 

六、把转发规则写成文件,执行命令:vi /etc/pptpdfirewall.sh 然后内容输入:

 

sudo /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT 
--to-source 你的VPS公网IP

sudo /sbin/iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m tcp --tcp-flags 
FIN,SYN,RST,ACK SYN -j TCPMSS --set-mss 1356

 

七、设置文件执行权限,执行下面命令:

 

chmod 755 /etc/pptpdfirewall.sh

 

八、设置开机启动,执行命令:vi /etc/init.d/rc.local 然后在最后一行加入下面代码:

 

sh /etc/pptpdfirewall.sh

 

九、重启VPS后就可以正常使用你的VPN了:

 

reboot

 

2.png 

最后,如果连接出现错误619或者错误734,html" target="_blank">请参看这里

 

Apache的Mod_rewrite学习(五)

今天主要列出一些例子。由于有些例子是针对特殊路径或特别情况的,列出供大家在思路上参考。因为它们就是些例子。

目标 重写设置 说明
规范化URL RewriteRule ^/~([^/>+)/?(.*) /u/$1/$2 [R] 将/~user重写为/u/user的形式
RewriteRule ^/([uge])/([^/>+)$ /$1/$2/ [R] 将/u/user末尾漏掉的/补上
规范化HostName RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC] 域名不合格
RewriteCond %{HTTP_HOST} !^$ 不空
RewriteCond %{SERVER_PORT} !^80$ 不是80端口
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R] 重写
RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]
URL根目录转移 RewriteEngine on
RewriteRule ^/$ /e/www/ [R] 从/移到/e/www/
末尾目录补斜线 RewriteEngine on
(目录范围内) RewriteBase /~quux/
RewriteRule ^foo$ foo/ [R] /~quux/foo是一个目录,补/
RewriteEngine on
RewriteBase /~quux/
RewriteCond %{REQUEST_FILENAME} -d 如果请文件名是个目录
RewriteRule ^(.+[^/>)$ $1/ [R] URL末尾不是斜线时补上
Web集群 RewriteEngine on
RewriteMap user-to-host txt:/path/to/map.user-to-host 用户-服务器映射
RewriteMap group-to-host txt:/path/to/map.group-to-host 组-服务器映射
RewriteMap entity-to-host txt:/path/to/map.entity-to-host 实体-服务器映射
RewriteRule ^/u/([^/>+)/?(.*) http://${user-to-host:$1|server0}/u/$1/$2 用户均衡
RewriteRule ^/g/([^/>+)/?(.*) http://${group-to-host:$1|server0}/g/$1/$2 组均衡
RewriteRule ^/e/([^/>+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2 实体均衡
RewriteRule ^/([uge])/([^/>+)/?$ /$1/$2/.www/
RewriteRule ^/([uge])/([^/>+)/([^.]+.+) /$1/$2/.www/$3\
URL根目录搬迁 RewriteEngine on
RewriteRule ^/~(.+) http://newserver/~$1 [R,L] 到其它服务器
所用户名首字母分 RewriteEngine on
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3 内一层括号为$2
NCSA imagemap移 RewriteEngine on
植为mod_imap RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT]
多目录查找资源 RewriteEngine on
# first try to find it in custom/...
RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir1/$1 [L]
# second try to find it in pub/...
RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f
RewriteRule ^(.+) /your/docroot/dir2/$1 [L]
# else go on for other Alias or ScriptAlias directives,
RewriteRule ^(.+) - [PT]
据URL设置环境变量 RewriteEngine on
RewriteRule ^(.*)/S=([^/>+)/(.*) $1/$3 [E=STATUS:$2]
虚拟主机 RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$ 基于用户名
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2
内外人有别 RewriteEngine on
RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$ 基于远程主机
RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L]
错误重定向 RewriteEngine on
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f 不是regular文件
RewriteRule ^(.+) http://webserverB.dom/$1
程序处理特殊协议 RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \ Xredirect协议
[T=application/x-httpd-cgi,L]
最近镜像下载 RewriteEngine on
RewriteMap multiplex txt:/path/to/map.cxan 顶级域名与最近ftp服务器映射
RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C]
RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L] 据顶级域名不同提供不同的FTP服务器
基于时间重写 RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^foo\.html$ foo.day.html 白天为早晚7点间
RewriteRule ^foo\.html$ foo.night.html 其余为夜间
向前兼容扩展名 RewriteEngine on
RewriteBase /~quux/
# parse out basename, but remember the fact
RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]
# rewrite to document.phtml if exists
RewriteCond %{REQUEST_FILENAME}.phtml -f 如果存在$1.phtml则重写
RewriteRule ^(.*)$ $1.phtml [S=1]
# else reverse the previous basename cutout
RewriteCond %{ENV:WasHTML} ^yes$ 如果不存在$1.phtml,则保持不变
RewriteRule ^(.*)$ $1.html
文件改名(目录级) RewriteEngine on 内部重写
RewriteBase /~quux/
RewriteRule ^foo\.html$ bar.html
RewriteEngine on 重定向由客户端再次提交
RewriteBase /~quux/
RewriteRule ^foo\.html$ bar.html [R]
据浏览器类型重写 RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^foo\.html$ foo.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^foo\.html$ foo.20.html [L]
RewriteRule ^foo\.html$ foo.32.html [L]
动态镜像远程资源 RewriteEngine on
RewriteBase /~quux/
RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P] 利用了代理模块
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^usa-news\.html$ http://www.quux-corp.com/news/index.html [P]
反向动态镜像 RewriteEngine on
RewriteCond /mirror/of/remotesite/$1 -U
RewriteRule ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1
负载均衡 RewriteEngine on 利用代理实现round-robin效果
RewriteMap lb prg:/path/to/lb.pl
RewriteRule ^/(.+)$ ${lb:$1} [P,L]
#!/path/to/perl
$| = 1;
$name = "www"; # the hostname base
$first = 1; # the first server (not 0 here, because 0 is myself)
$last = 5; # the last server in the round-robin
$domain = "foo.dom"; # the domainname
$cnt = 0;
while (<STDIN>) {
$cnt = (($cnt+1) % ($last+1-$first));
$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);
print "http://$server/$_";
}
##EOF##
静态页面变脚本 RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi]
阻击机器人 RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
阻止盗连你的图片 RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC] 自己的连接可不能被阻止
RewriteRule .*\.gif$ - [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$ - [F]
拒绝某些主机访问 RewriteEngine on
RewriteMap hosts-deny txt:/path/to/hosts.deny
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^/.* - [F]
用户授权 RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$
RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$
RewriteRule ^/~quux/only-for-friends/ - [F]
外部重写程序模板 RewriteEngine on
RewriteMap quux-map prg:/path/to/map.quux.pl
RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1}
#!/path/to/perl
$| = 1;
while (<>) {
s|^foo/|bar/|;
print $_;
}
搜索引擎友好 RewriteRule ^/products$ /content.php
RewriteRule ^/products/([0-9]+)$ /content.php?id=$1
RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) /marso/content.php?id=$1&sort=$2&order=$3&start=$4

参考文献:
URL Rewriting Guide
http://httpd.apache.org/docs/misc/rewriteguide.html

mod_rewrite: A Beginner's Guide to URL Rewriting
http://www.sitepoint.com/article/910

转自:http://www.netingcn.com/aliyun-install-gcc.html

以前使用的aws和盛大的云主机,直接用yum来安装gcc,一条命令就搞定,命令为:

yum -y install gcc  gcc-c++

今天准备开始用阿里云,申请了一台centos 64位机器,使用上述命令安装gcc时出错,听说是阿里云处于安全考虑,生产环境不提供编译工具。想要安装不是不可能的,很简单,只有修改一下/etc/yum.conf文件即可,把文件中的

exclude=kernel*

行注释即可,注释符号为#。也可以使用如下命令来安装:

 

sed -i 's/^exclude/#exclude/'  /etc/yum.conf && yum -y install gcc gcc-c++ && sed -i 's/^#exclude/exclude/'  /etc/yum.conf

找不到网卡的时候,修改了一下snmpd.conf就好了

http://blog.sina.com.cn/s/blog_6a03f09f0100xcf8.html

Cacti snmp找不到网卡的问题,请帮忙解决net-snmp版本5.0.9
编译配置:
./configure --with-default-snmp-version="3" --with-sys-contact="root@localhost" --with-sys-location="beijing" --with-logfile
="/var/log/snmpd.log" --with-persistent-directory="/var/net-snmp" --with-libwrap

snmp安装完成后,配置了一下snmpd.conf
内容为:

rocommunity abc_snmp
com2sec notConfigUserdefault abc_snmp
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2
view systemview included .1.3.6.1.2.1.2.2.1.1
view systemview included .1.3.6.1.2.1.25.1.1
view systemview included .1.3.6.1.4.1.2021.10.1.3.1
view systemview included .1.3.6.1.4.1.2021.10.1.3.2
view systemview included .1.3.6.1.4.1.2021.10.1.3.3
view systemview included .1.3.6.1.4.1.2021.4.3.0
view systemview included .1.3.6.1.4.1.2021.4.4.0
view systemview included .1.3.6.1.4.1.2021.4.5.0
view systemview included .1.3.6.1.4.1.2021.4.6.0
view systemview included .1.3.6.1.4.1.2021.4.11.0
view all included .1 80
accessnotConfigGroup "" any noauth exactall none none
syslocation abc
syscontact abc@abcd
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat

然后把编译目录下/dist/snmpd-init.d cp到/etc/rc.d/init.d/snmpd
然后修改/etc/rc.d/init.d/snmpd
#!/bin/sh
#
# snmpd This shell script takes care of starting and stopping
# the net-snmp SNMP daemon
#
# chkconfig: - 26 74
# description: snmpd is net-snmp SNMP daemon.

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0
name="snmpd"
prog="/usr/local/sbin/snmpd"

[ -x $prog -a -f /usr/local/share/snmp/snmpd.conf ] || exit 0

start() {
# Start daemons.
echo -n $"Starting $name: "
daemon $prog -Cc /etc/snmp/snmpd.conf
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$name
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $name: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$name
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $name
RETVAL=$?
;;
restart|reload)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$name ]; then
stop
start
RETVAL=$?
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac

exit $RETVAL

修改的内容主要是把启动时的命令添加了参数 -Cc /etc/snmp/

html" target="_blank">请建议vpn方案...

snmpd.conf 修改snmpd读取的配置文件

在cacti添加了这个服务器以后http://www.2uphone.com,取不到数据,不知道为什么,请高人指导http://www.vaexcellent.com!佳能600DCacti版本是0.8.6h for linux,数据获取方式是Cactid,Cactid默认编译.
我觉得问题应该不是Cactid,因为我以前用cmd.php取数据也是没有取到请看cacti下 的log/cacti.log查找问题你要抓的网卡是千M还是百M,是32位还是64位?
下一个新的net-snmp从新编译安装试试。
configure 时加个--enable-mfd-rewrites我现在严重怀疑是我的cacti端的net-snmp版本太低.正在重新编译5.4版的.希望有些奇迹. 我的网卡32位1000M的