麦乐吧

专心而安静的生活

cmd进入DOS命令行状态,ping后提示“ping”不是内部或外部命令,也不是可运行的程序或批处理文件。 解决:1、首先ping.exe文件应该位于c:\windows\system32目录下,找到它。2、在我的电脑图标上点右键-> 属性-> 高级-> 环境变量,找到path这个变量,看看有没有%SystemRoot%\system32这个路径,没有的话加上。我的这次故障原因就是path变量变成了乱码,编辑修改一下就好了。 对于其它的DOS命令,比如ipconfig等出现这类问题,出错的原因大都是因为这个。解决办法一般都是如此。

VPS support

抢沙发

To Create a Trouble TicketLog into your Account Manager.
From the My Products section, select Servers.
Click Launch Manager next to the server account that you would like to manage. The Dedicated Hosting Manager opens in a new window.
Under Support, click Trouble Ticket. The Trouble Ticket Wizard displays
Enter your contact information, including an email address and phone number.
Enter a summary and a detailed description of your issue under Trouble Ticket Description.
Click Continue.
Review your trouble ticket information and click Submit.

Thank you for contacting Live Chat support for Virtual and Dedicated Servers. This is Heather. How can I help you?
myqq8comadmin: I am a Chinese user,I want my vps support Chinese ,can you help me install Simplified Chinese language pack?
Heather P. – Server Concierge: You can not change the language of a Virtual Dedicated Server.
myqq8comadmin: or can I install the language pack by myself?
Heather P. – Server Concierge: You can not modify the language on a Virtual Dedicated Server.
Heather P. – Server Concierge: It can not be changed.
Heather P. – Server Concierge: Due to the virtualization software, the server retrieves its language from the host node. You would need a fully dedicated server if you wish to change the language.
myqq8comadmin: Ok,I know.Thank you!
Heather P. – Server Concierge: Thanks again for using Live Chat; have a great day.
myqq8comadmin: another question
myqq8comadmin: can I install apache and php on my VPS?
Heather P. – Server Concierge: Yes you can.
myqq8comadmin: and mysql?
Heather P. – Server Concierge: You may install anything on your server that does not violate our license agreement or require system level modifications.
myqq8comadmin: undertand,thank you!
Heather P. – Server Concierge: Is there anything else I can help you with?
myqq8comadmin: no ,thanks!Goodbye!

  Windows远程桌面在使用过程中经常会遇到要求切换会话的问题。如:

  1、有多个人打开了不同的远程桌面,要想切换到另一个人的桌面会话。

  2、由于某些软件只能在控制台会话(主会话)下进行,所以需要切换到主会话桌面。

  解决办法:

  1、如何切换会话

  登录到远程机器后,你可以在【任务管理器】中切换到【用户】选项卡,然后选择你要切换到的会话记录,右键打开快捷菜单,选择【连接】,这样就可以切换到那个会话了。如下图所示:  

  2、登录时如何指定登录到控制台会话

  你可以在【运行】对话框中输入mstsc命令,带上/console参数来指定登录到控制台会话。

  例:mstsc/v:192.168.0.126/console

  

   mstsc命令的语法说明如下:

 

在一个IP地址上运行多个基于域名的web站 点。

您的服务器有一个IP地址,而在DNS中有很多映射(CNAMES)到这个机器。 您而您想要在这个机器上运行www.example1.comwww.example2.org两个站点。

注意

在您Apache服务器的配置中创建一个虚拟主 机并不会自动在您的DNS中对主机名做相应更新。您必须自 己在DNS中添加域名来指向您的IP地址。否则别人是无法看到您的web 站点的。您可以在您的hosts文件中添加这一条目来进 行测试,但这种方法仅适用于那些有这些条目的机器来使用。

服务器配置

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *

<VirtualHost *>
DocumentRoot /www/example1
ServerName www.example1.com

# Other directives here

</VirtualHost>

<VirtualHost *>
DocumentRoot /www/example2
ServerName www.example2.org

# Other directives here

</VirtualHost>

因为星号匹配所有的地址,所以主服务器不接收任何请求。因为 www.example1.com首先出现在配置文件中,所以它拥有最高 优先级,可以认为是默认首要服务器。这意 味着如果一个接受的请求不能与某个ServerName指令相匹配, 它将会由第一个VirtualHost所伺服。

注意

如果您愿意,您可以用确定的IP地址来取代*。 在这种情况下,VirtualHost的参数必须NameVirtualHost的参数相符:

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
# etc ...

不论如何,当您的IP地址无法确定的时候,使用*是很方便的——比如说,您的ISP给您配置的是动态IP地址,而您有使用了某种动态域名解析系统时。因为*匹配任何IP地址,所以在这样的情况下,不论IP地址如何变化,您都不需要另外进行配置。

上述配置就是您在绝大多数情况下使用基于域名的虚拟主机时将要用到 的。事实上,仅在一种情况下这样的配置不会让您满意:当您想为不同的IP 地址或是端口提供不同的内容时。

在多于一个IP的情况下使用基于域名的虚拟 主机。

注意

在这里讨论的任何技术都可以推广到使用任意数量的IP 地址。

服务器有两个IP地址。一个(172.20.30.40)用于“主”服务器—— server.domain.com而另外一个 (172.20.30.50),我们将用于构建两个或多个虚拟主机。

服务器配置

Listen 80

# This is the "main" server running on 172.20.30.40
ServerName server.domain.com
DocumentRoot /www/mainserver

# This is the other address
NameVirtualHost 172.20.30.50

<VirtualHost 172.20.30.50>
DocumentRoot /www/example1
ServerName www.example1.com

# Other directives here ...

</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org

# Other directives here ...

</VirtualHost>

任何不是针对172.20.30.50的请求都将由主服务器来伺服。 而提交给172.20.30.50却没有主机名或没有 Host:头的请求,都将为www.example1.com伺 服。

在不同的IP的地址(比如一个内部和一个外部地址) 上提供相同的内容。

服务器有两个IP地址(192.168.1.1172.20.30.40)。这个机器位于内部(局域网)网络和外部 (广域网)之间。在外部,域名server.example.com指向 外部地址(172.20.30.40),而在内部,同样的域名指向内 部地址(192.168.1.1)。

服务器可以配置为向来自内部和外部的请求提供同样的内容,您只需要 一个VirtualHost配置段就可以达到这个目的。

服务器配置

NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40

<VirtualHost 192.168.1.1 172.20.30.40>
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
</VirtualHost>

现在,从不同的网络提交的请求都会由同一个 VirtualHost来伺服。

注意:

在内网中,您可以使用 server这个名字来代替 server.example.com全名。

跟上面一样,在上述的例子里,您可以用*来取代 具体的IP地址,这样就可以对所有的地址返回相同的内容了。

在不同的端口上运行不同的站点。

如果您想让同一IP的不同端口伺服多个域名。您可以借助在 “NameVirtualHost”标签中定义端口这样的方法来达到这个目的。如果您 想使用不带NameVirtualHost name:port的<VirtualHost name:port>或是直接用Listen指令,您的配置将无法生效。

服务器配置

Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

<VirtualHost 172.20.30.40:80>
ServerName www.example1.com
DocumentRoot /www/domain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example1.com
DocumentRoot /www/domain-8080
</VirtualHost>

<VirtualHost 172.20.30.40:80>
ServerName www.example2.org
DocumentRoot /www/otherdomain-80
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
</VirtualHost>

建立基于IP的虚拟主机

一个有两个IP地址(172.20.30.40172.20.30.50)分别对应域名 www.example1.comwww.example2.org的服务 配置如下:

服务器配置

Listen 80

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>

如果存在主服务器(main server),那么对没有出现在任一个 <VirtualHost>指令中的请求(比如,对 localhost的请求)都会由主服务器来伺服。

混用基于端口和基于IP的虚拟主机

如果您的服务器有两个IP地址(172.20.30.40172.20.30.50)分别对应域名 www.example1.comwww.example2.org。对每 个域名,您都希望在80端口和8080端口发布您的网站。您可以这样配置:

服务器配置

Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080

<VirtualHost 172.20.30.40:80>
DocumentRoot /www/example1-80
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.40:8080>
DocumentRoot /www/example1-8080
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example1.org
</VirtualHost>

<VirtualHost 172.20.30.50:8080>
DocumentRoot /www/example2-8080
ServerName www.example2.org
</VirtualHost>

混用基于域名和基于ip的虚拟主机

如果您想在一些地址上配置基于域名的虚拟主机而在另外一些配置基于 IP的虚拟主机。

服务器配置

Listen 80

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
</VirtualHost>

# IP-based
<VirtualHost 172.20.30.50>
DocumentRoot /www/example4
ServerName www.example4.edu
</VirtualHost>

<VirtualHost 172.20.30.60>
DocumentRoot /www/example5
ServerName www.example5.gov
</VirtualHost>

使用_default_虚拟主机

为所有端口配置 _default_虚拟主机

这样配置,以捕获任何指向没指定的IP地址和端口的请求。比如 说:一个没被任何虚拟主机使用的地址/端口对。

服务器配置

<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>

使用这样一个使用通配符端口的默认虚拟主机可以有效的防止请求被主 服务器接收。

如果一个地址/端口对已经被一个基于域名的虚拟主机使用,那么默认虚 拟主机决不会处理发向这个地址/端口的请求。如果一个请求的 Host:头中包含未知信息,或者干脆就没有,那么它会被第一 个基于域名的虚拟主机(就是在配置文件中首先出现的使用了那个地址/端 口对的虚拟主机)处理。

您可以用AliasMatch或RewriteRule来重写任何 请求,使它指向一个简单信息页面(a single information page)(或脚 本)。

为不同的端口部署 _default_虚拟主机

与第一种一样,但我们想让服务器侦听很多端口而第二个 _default_虚拟主机单独侦听80端口。

服务器配置

<VirtualHost _default_:80>
DocumentRoot /www/default80
# ...
</VirtualHost>

<VirtualHost _default_:*>
DocumentRoot /www/default
# ...
</VirtualHost>

侦听80端口的默认虚拟主机(必须出现在所有使用通配符端口 的虚拟主机之前)会捕获所有发向一个没有指定的IP地址的请求。主服务器 将不会用于伺服任何请求。

为一个端口配置 _default_虚拟主机

如果我们只想在80端口上建立唯一的一个默认虚拟主机,我们应该这样 配置:

服务器配置

<VirtualHost _default_:80>
DocumentRoot /www/default
...
</VirtualHost>

发向一个未进行设定的地址的80端口的请求将会为这个虚拟主机伺服; 而发向未进行设定的地址的其他端口的请求为主服务器伺服。

将一个基于域名的虚拟主机移植为一个基于 IP的虚拟主机

如果一个具有www.example2.org域名的虚拟主机(就是基于域名配置示例中的第二个)得到了自己的IP地址。 为了避免一些域名服务器或代理服务器在移植期间仍对这个域名做老的解析, 我们可以采用一种过渡方法:同时提供新旧两个IP地址的解析。
达到这个目的很简单。因为我们只要简单的把新地址 (172.20.30.50)加入VirtualHost指令就行 了。

服务器配置

Listen 80
ServerName www.example1.com
DocumentRoot /www/example1

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/example3
ServerName www.example3.net
ServerAlias *.example3.net
# ...
</VirtualHost>

现在这个虚拟主机就可以用新地址(表现为一个基于IP的虚拟主机)和 旧地址(表现为一个基于域名的虚拟主机)同时进行访问了。

使用ServerPath指令

如果我们在一个服务器上运行了两个基于域名的虚拟主机。为了匹配正 确的虚拟主机,客户端必须发送正确的Host:头。而旧的使用 HTTP/1.0的客户端无法发送这样的头,这样,Apache就无法辨别客户端想要 连接哪个虚拟主机(会用主虚拟主机来伺服这个请求)。为了尽量提供向下 兼容性,我们可以可以提供一个主虚拟主机来返回一个页面,在页面中加入 指向基于域名的虚拟主机的URL前缀的链接。

Server configuration

NameVirtualHost 172.20.30.40

<VirtualHost 172.20.30.40>
# primary vhost
DocumentRoot /www/subdomain
RewriteEngine On
RewriteRule ^/.* /www/subdomain/index.html
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub1
ServerName www.sub1.domain.tld
ServerPath /sub1/
RewriteEngine On
RewriteRule ^(/sub1/.*) /www/subdomain$1
# ...
</VirtualHost>

<VirtualHost 172.20.30.40>
DocumentRoot /www/subdomain/sub2
ServerName www.sub2.domain.tld
ServerPath /sub2/
RewriteEngine On
RewriteRule ^(/sub2/.*) /www/subdomain$1
# ...
</VirtualHost>

由于ServerPath指令的作用, 发送到http://www.sub1.domain.tld/sub1/的请求总会 被sub1-vhost所伺服。
如果客户端发送了正确的Host:头,发送到 http://www.sub1.domain.tld/的请求指挥被sub1-vhost伺服。 如果没有发送Host:头,客户端会得到从主虚拟主机发送的信 息页面。
请注意,这里还有一点小问题:如果客户端没有发送Host:头, 发送到http://www.sub2.domain.tld/sub1/的请求还是会被 sub1-vhost伺服。
RewriteRule指令用以确 保正确发送了Host:头的客户端可以任意使用这两种URL变量, 比如说:使用或不使用URL前缀。

联想旭日125屏幕转轴,左右都坏了。照片如下:

后记:网上邮购的屏轴20元,邮费10元。自己动手修好了。联想售后维修的价格大约在200元以上,看来售后维修真实暴利。

  人生若只如初见,冷不丁的在一个人的博客的页头上看到这句词,心头蓦然一动。瞬间一幅幅美丽的画卷带着万千欣然的喜悦让自己沉浸在诗词的意境中。

  年少的时候也读过这首词:“人生若只如初见,何事秋风悲画扇。等闲变却故人心,却道故心人易变。……”只是那时不懂罢了。

  一个人,一种爱,在你生命里长久的吸引着你的视线,每每相见都宛如初见,那种美丽,暗中欣赏,还有淡然心动吧。她拨动你的心,左右你的眼睛,也许她不在你的视线中,但她却一直在你的关注中。这份心境,爱慕的心境就是“初见”吧。踏过岁月的长河,每每都有如此“初见”的感觉,该是多么美的爱情?

  穿过时光,眼眸里始终有她清丽的容颜,心海深处,深情眷眷,愿意为她落泪如珠。走进人海,身两侧依旧有她飘舞的衣袖,长街小雨,万种风情,痴心相对凝身为石。 人生若只如初见,执迷不悔,爱情如此美丽!

  小S今晚到达拉萨了,晚上7点多点,收到他发的短信,说已经在八郎学住下。

  看短信的时候,觉得心跳忽然就快了起来,那种来自心底的激动不受控制的涌动。

  想起了八角街上的玛吉阿米酒吧,想起那有着暖暖阳光的午后,我坐在玛吉阿米的屋顶,看远处屋顶太阳能热水器上冒出白色的烟;想起了矮房子,那个记不清面貌的年轻男人摆弄CD放出迷人的音乐。

  赶紧从我的纸堆里翻出玛吉阿米的名片,发短信告诉小S:午后可去八角街东南角的玛吉阿米酒吧,楼顶能俯瞰到八角街,或许还能找到我留下的字迹,晚上可去矮房子酒吧,老板很懂音乐,在北京东路上。

  忙乱的发完短信,脑子里还是萦绕着曾经的时光。我那么急切的告诉小S,是希望他能替我去看看那些地方,替我去看看我那么喜欢的地方时多么的优雅吗?不知道,其实并不确切的知道是什么原因。那些地方已经已经深刻在我的记忆里,即使已经过去很长的时间,一有机会,它还是铺天盖地的把我吸引。

  也许,我也该去再看看了。西藏的游记只写了开头,懒散的不想动笔,不想在今天却被记忆勾引了。

  他向我求婚的时候,尚处于一穷二白的阶段。他能给我的,事实上都属于纸上画饼。不过,男人向女人求婚的时候,都是极其豪迈的,他雄纠纠气昂昂地问我:“说吧,你想要什么?”

  我想要什么呢,钻戒,房子,车子,票子,我什么都想要。可是我更知道,这些东西他能许我的都是空头支票。既然是空头支票,我要来干什么呢,不如要一点实际的东西好了。我对他说,爱情可以风花雪月,婚姻却是柴米油盐,没有物质做基础,再璀璨的爱情也会凋谢的。我问他,琐碎拮据的生活里,他拿什么来给我坚定不移和他走下去的信心。

  纸老虎就是纸老虎,他一看我没有被他描绘的海市蜃楼套进去,马上就有点儿底气不足的说,爱情啊。

  我摇头,谈婚论嫁的当口,我不要虚的,我要实的。

  他看我的表情,就好象那煮熟的鸭子即将要飞了似的,“你想要什么,只要我能办到的,我绝不会皱一下眉头。”

  “我要你每天给我一个幸福的理由!”我说。

  “就这么简单?”他有点儿不相信自己的耳朵。

  “是,就这么简单,我只要你每天给我一个幸福的理由就够了。”

  他的脸立刻笑得像一朵花儿一样,“老婆,保证完成任务。”

  婚后的日子,他信守着他的承诺,每天给我一个幸福的理由。我告诉他,本人幸福的底线很低,只要他每天做的事情中有一件事情是他特意为我而做的就好。比如说,他给我倒了一杯水,比如说,回家路上顺手为我掐的一朵花,只要那件事是他特意为我做的就行,大小不论。

  我喜欢喝绿豆粥,他会在某个早晨早早地起床,熬好绿豆粥凉在桌上,然后对我说:“老婆,我给你熬了粥。”我点头,表示已经收到这一天里他给我的幸福的理由。他炒了我喜欢吃的菜,会对我说:“老婆,你尝尝这个,是为你炒的哦!”

  虽然每天心里都有小小的感动,不过琐碎拮据的日子总是艰难的,免不了心气郁结。我们第一次吵架,起因是我母亲生日。我想封一个大大的红包给母亲,一来是感谢母亲的养育之恩,二来不想在姐妹们面前失了面子。只是封完这个红包后,那一个月剩下的日子我们会很难过。他试探地说把红包减半,里子比面子更重要。我一下子心头火起,气他不理解我也就罢了,竟然还说出什么把红包减半的混帐话来。那次我说了很多伤他自尊的话,什么没本事啊,窝囊废啊。他也生气了,骂我虚荣。他气呼呼地摔门而去后,我才惊觉自己说了那么多刻薄入骨的话,想打电话叫他回家,他却关了机。那天在家里等他的时候,一会儿想起他的好,心里暖意一片,一会儿又想起他的绝情,心里哇凉哇凉的。很晚了他才回家,拿了枕头睡到床的另一头去。我很想开口问他今天给了我什么幸福的理由,骄傲却让我保持着沉默。静谧中,脚底传来暖意,他把我冰冷的脚捂进了他的怀里。他没有忘记每天给我一个幸福的理由的承诺。

  凡俗夫妻,隔三差五便会吵架怄气。只是,无论我们吵得多凶,他还是会给我一个幸福的理由,有时候正吵着呢,他会突然停下来跑去倒一杯牛奶递给我,让我润润嗓子。我哭笑不得地看着他,他却眉毛一扬,说:“为这一杯牛奶幸福吧,有哪个丈夫会给正骂人的妻子倒牛奶啊,我啊,是被你那句话套牢了,被你气得双脚乱跳的时候还要找一个让你幸福的理由。”

  日子慢慢地好起来,他升了职,一天天地忙起来。只是再忙,他依然坚持着每天给我一个幸福的理由,讲一个令人喷饭的笑话给我听,或者一个拥抱,或者是额头的轻轻一吻。他对我说:“老婆,我现在很忙,能够给你的不是太多,但是我绝对不是在敷衍你。”我知道他不是在敷衍我,我更明白人到中年的他是多么地忙,可是他再忙,一天里总有一个时间是想着我的,想着要给我一个幸福的理由,虽然有时仅仅是一个拥抱,一个温馨的短信,但那已经足够了,不是吗?

  一个男人,愿意每天花时间想着你,想着要做一件什么事情让你感到幸福,也许这件事情很小很小,小到仅仅是把电视机的遥控器递给你,但是一天一天这样的小事串起来,那不是幸福又是什么呢?

  我们对于生活,孜孜以求的不过就是“幸福”这两个字。但是幸福这个词有时候太飘太远,所以我只能把它细化,每天拥有一个小小的幸福就够了。一天一点细小的幸福,时间长了,回过头去看,哇,留在我身后的不是满满的幸福是什么呢?(红酒柠檬)

这个过程最后是失败的,因为在我最终联系了HOstgator的技术支持后,他们给了我答案:
PPTP is not supported by Virtuozzo / OpenVZ. You would need to use OpenVPN because it uses a TUN device instead of PPP.
但是这个过程却让我学习了不少东西,记录下来,也许哪天换服务器了,或许可以用的到。

首先,在安装之前,需要检测服务器是否支持ppp,
Run the command below to test if your kernel supports MPPE and you should get a return an “ok”:
#modprobe ppp-compress-18 && echo ok
FATAL: Could not load /lib/modules/2.6.18-028stab066.10/modules.dep: No such file or directory
很不幸,我的服务器不支持。但是在我安装的时候忽略了,我以为只是模块没有安装,安装上就可以了。

还要检测服务器是否开启了tun/tap
#cat /dev/net/tun
cat: /dev/net/tun: File descriptor in bad state 返回这样的信息说明服务器开启了tun/tap。
如果其它信息,就说明没有开启,需要客服支持,我给他们发了邮件寻求支持。

I am using a level 3 VPS,but no cpanel.
I do not want to buy cpanel, because that need 10$/mon.
Now ,I want to install PPTP VPN,need tun/tap support,Can you help me enable tun/tap?

客服的服务很好,很快就给我开启了。继续安装。我的CentOS服务器是64位版的。
yum install -y ppp iptables
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-1.rhel5.1.x86_64.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.x86_64.rpm

配置文件编写
1、配置文件/etc/ppp/options.pptpd
mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd
输入以下内容:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 208.67.222.222
ms-dns 208.67.222.220
其中两个dns是OpenDns的IP,也可以用其它的,我目前能找到的就是它们了。
2、配置文件/etc/ppp/chap-secrets (VPN用户配置文件)
mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets
输入以下内容:
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
myusername pptpd mypassword *
注:这里的myusername和mypassword即为PPTP VPN的登录用户名和密码。

3、配置文件/etc/pptpd.conf
mv /etc/pptpd.conf /etc/pptpd.conf.bak
vi /etc/pptpd.conf
输入以下内容:
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.10.1
remoteip 192.168.9.5-10
注:为拨入VPN的用户动态分配192.168.10.5-192.168.10.10之间的IP。

4、配置文件/etc/sysctl.conf
vi /etc/sysctl.conf
输入以下内容:
net.ipv4.ip_forward = 1

保存、退出后执行命令:
#/sbin/sysctl -p

启动PPTP VPN 服务器端:
#/sbin/service pptpd start

启动iptables:
#/sbin/service iptables start
#/sbin/iptables -t nat -A POSTROUTING -o venet0 -s 192.168.10.0/24 -j MASQUERADE

我在最后一步的时候,总是出现错误提示,unknown error 18446744073709551615。

在有点碰运气的状况下,远程VPN连接服务器,总是提示错误619,连接不上。

在无奈之下,查看系统日志\var\log\messages 发现了原因:
This system lacks kernel support for PPP. This could be because the PPPkernel module could not be loaded, or becaus e PPP was not included inthe kernel configuration. If PPP was included as a module, try`/sbin/modprobe -v ppp’. If that fails, check that ppp.o exists i n/lib/modules/`uname -r`/net. See README.linux file in the pppdistribution for more details.

于是,再次检测ppp
I run the command to test:
[root@xin ~]# modprobe -v ppp
FATAL: Could not load /lib/modules/2.6.18-028stab066.10/modules.dep: No such file or directory

然后把错误信息发给客服,客服答复说不支持,建议我安装OpenVPN。
下面就开始OpenVPN的安装之旅。

在经过了一番头疼的折腾后,这次的结果是成功的。过程比较顺利。下面是过程和细节。

由于PPTP对环境的要求很高,大多数的VPS都是基于OpenVZ虚拟化技术的,所以无法安装。这回介绍另一种VPN——OpenVPN,能在绝大多数VPS上安装,而且功能更加强大。(有些话是google来的,比如这句套话)

OpenVPN 需要TUN支持,大多数VPS默认都没有开启,你可以用这个命令检测:cat /dev/net/tun 如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常,否则就需要客服帮忙开吧。(这段上文中也讲过。)

另外如果你需要连上OpenVPN后能访问互联网,还需要iptables_nat模块支持,用这个命令检测:iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

如果返回信息为:iptables: Unknown error 4294967295 说明正常,否则同样需要客服帮忙开通。

环境准备好之后,开始安装OpenVPN了。网上的教程绝大多数都是用源代码编译方式安装的,但我觉得这种方式不便于以后升级维护,这里使用yum来安装。

默认情况下centos的yum源没有OpenVPN的,先安装EPEL这个东西,使用命令:rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm

(注意上面的x86_64,我的VPS是64位的,所以是这个,如果是32位的就要改成i386)

成功后yum源里面就有 OpenVPN了,直接使用命令yum -y install openvpn

这里就体现了yum安装的好处,比如 OpenVPN需要lzo支持,安装的时候会检测系统,没有的组件会自动安装进去。

程序安装到了这个目录:/usr/share/openvpn/easy-rsa

把easy-rsa这个文件夹移出来,用命令:cp -R /usr/share/openvpn/easy-rsa /etc/openvpn/

然后cd /etc/openvpn/easy-rsa/2.0进入,生成OpenVPN需要的证书。

vi vars来编辑环境变量(目录操作和文件的编辑我都是用VNC远程桌面编辑的,跟windows一样)。

把最后几行根据实际情况修改:

export KEY_COUNTRY=”CN
export KEY_PROVINCE=”He
export KEY_CITY=”He
export KEY_ORG=”xxxx
export KEY_EMAIL=”xxxx@mail.com

这些红字需要自己按需修改,在生成证书的时候需要提问的。

保存后运行. vars设置生效。(注意点后面的空格)

接下来运行./build-ca server创建证书颁发机构。

Generating a 1024 bit RSA private key
……………………++++++
….++++++
writing new private key to ‘ca.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]:回车
State or Province Name (full name) [He]:回车
Locality Name (eg, city) [He]:回车
Organization Name (eg, company) [xxxx]:回车
Organizational Unit Name (eg, section) []:回车
Common Name (eg, your name or your server’s hostname) [xxxx]:回车
Name []:回车
Email Address [xxxx@mail.com]:回车

注意红色的地方,需要按回车的。

创建CA之后来生成服务器证书,输入./build-key-server server

Generating a 1024 bit RSA private key
…++++++
……………++++++
writing new private key to ’server.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]:回车
State or Province Name (full name) [He]:回车
Locality Name (eg, city) [He]:回车
Organization Name (eg, company) [xxxx]:回车
Organizational Unit Name (eg, section) []:回车
Common Name (eg, your name or your server’s hostname) [server]:回车
Name []:回车
Email Address [xxxx@mail.com]:回车

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:回车
An optional company name []:回车
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName           :P RINTABLE:’CN’
stateOrProvinceName   :P RINTABLE:’He’
localityName          :P RINTABLE:’He’
organizationName      :P RINTABLE:’xxxx’
commonName            :P RINTABLE:’server’
emailAddress          :IA5STRING:’xxxx@mail.com
Certificate is to be certified until Nov 18 17:25:15 2019 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

同样注意红色字的部分,是需要人工输入的。

服务器证书生成完了,接下来生成客户端证书,理论上每个OpenVPN用户都有独立的证书,我们先来生成一个试试。

输入命令:./build-key client1,这里的client1是客户端名称,如果第二个就是client2了。

Generating a 1024 bit RSA private key
…….++++++
………++++++
writing new private key to ‘client1.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [CN]:回车
State or Province Name (full name) [He]:回车
Locality Name (eg, city) [He]:回车
Organization Name (eg, company) [xxxx]:回车
Organizational Unit Name (eg, section) []:回车
Common Name (eg, your name or your server’s hostname) [client1]:回车
Name []:回车
Email Address [xxxx@mail.com]:回车

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:回车
An optional company name []:回车
Using configuration from /etc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject’s Distinguished Name is as follows
countryName           :P RINTABLE:’CN’
stateOrProvinceName   :P RINTABLE:’GD’
localityName          :P RINTABLE:’GZ’
organizationName      :P RINTABLE:’Black-Xstar Net Empire’
commonName            :P RINTABLE:’client1′
emailAddress          :IA5STRING:’webmaster@black-xstar.com’
Certificate is to be certified until Nov 18 17:31:21 2019 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

注意红色字的部分,和上面生成服务器证书差不多。

最后生成Diffie Hellman参数:./build-dh,这个需要一点时间的。完成上面的过程后,把/etc /openvpn/2.0/keys里面的东西下载回来。

接下来我们开始配置OpenVPN了,配置文件只是一个参考,可以根据实际情况修改。

/etc/openvpn目录下,用命令vi server.conf新建一个配置文件,输入下面内容:

port 443
proto tcp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
push “redirect-gateway def1″
push “dhcp-option DNS 208.67.222.222″
push “dhcp-option DNS 208.67.220.220″
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3

其中DNS服务器地址可以换成主机商的,这里用的是OpenDns。另外我有了tcp协议和443端口,是为了方便我在cmwap下使用,也可以换别的。

到这里为止OpenVPN就配置好了,接下来我们设置外网访问。

输入vi /etc/sysctl.conf开始编辑,找到net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1保存。然后执行sysctl -p这个命令。

输入iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source 1.2.3.4添加规则,注意最后1.2.3.4改成你的VPS的IP 地址。(注意红线,to前面是两个短线-)

完成后用/etc/init.d/iptables save保存iptables设置,然后/etc/init.d/iptables restart重新启动下。

把OpenVPN添加到开机启动,用vi /etc/rc.local进入编辑,在后面加入/usr/sbin/openvpn –config /etc/openvpn/server.conf &这一行。(注意:&是结束符)

需要在服务器上完成的操作到这里就结束了,输入openvpn –config /etc/openvpn/server.conf &启动。
安装客户端:
OpenVPN需要安装客户端才行,在http://www.openvpn.net/index.php/open-source/downloads.html下载最新版本的Windows Installer安装。

然后在下载回来keys文件夹里面找到ca.crt、client1.crt和client1.key这三个文件,放到C:\Program Files\OpenVPN\config里面。

同时在这里面新建一个名字为“client1.ovpn”的文本文件,输入下面内容:

client
dev tun
proto tcp
remote 1.2.3.4 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

把第四行的1.2.3.4换成VPS的IP地址,然后保存。

在开始菜单里面找到OpenVPN GUI并运行。

文中大部分文字都是google来的,懒得修改了。累了~~~~