手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:vpn

又是VPN手记。。。

这是一个自动安装脚本,for 大便系列。比如 大便和ubuntu(版权不是我的,我也只是拿来改改) :

XML/HTML代码
  1. #!/bin/bash  
  2.   
  3. function installVPN(){  
  4.         apt-get update  
  5.         #remove ppp pptpd  
  6.         rm -rf /etc/pptpd.conf  
  7.         rm -rf /etc/ppp  
  8.         apt-get -y remove ppp pptpd  
  9.         apt-get -y install ppp pptpd iptables  
  10.   
  11.         #注意,这里的一些refuse-pap之类的要注意,如果不能连接首先改这里。  
  12.         #如果一直出错,将require-mschap-v2和require-mppe-128 这两行加密注释掉,(对应源文件)  
  13.         echo name pptpd >> /etc/ppp/pptpd-options  
  14.         echo refuse-pap >> /etc/ppp/pptpd-options  
  15.         echo refuse-chap >> /etc/ppp/pptpd-options  
  16.         #refuse-mschap  
  17.         echo require-mschap-v2 >> /etc/ppp/pptpd-options  
  18.         echo require-mppe-128 >> /etc/ppp/pptpd-options  
  19.         echo proxyarp >> /etc/ppp/pptpd-options  
  20.         echo nodefaultroute >> /etc/ppp/pptpd-options  
  21.         echo lock >> /etc/ppp/pptpd-options  
  22.         echo nobsdcomp >> /etc/ppp/pptpd-options  
  23.   
  24.   
  25.         echo ms-dns 8.8.8.8 >> /etc/ppp/pptpd-options  
  26.         echo ms-dns 8.8.4.4 >> /etc/ppp/pptpd-options  
  27.         echo ms-dns 4.3.2.1 >> /etc/ppp/pptpd-options  
  28.   
  29.         #写到pptpd.conf文件中  
  30.         echo option /etc/ppp/pptpd-options >> /etc/pptpd.conf  
  31.         echo logwtmp >> /etc/pptpd.conf  
  32.         echo localip 192.168.99.1 >> /etc/pptpd.conf  
  33.         echo remoteip 192.168.99.9-99 >> /etc/pptpd.conf  
  34.   
  35.         #这个最好只能处理一次。否则每次都会修改,以防万一,改两次吧。。第一次应该失败  
  36.         sed -i 's/#net\.ipv4.ip_forward=0/net\.ipv4.ip_forward=1/' /etc/sysctl.conf  
  37.         sed -i 's/#net\.ipv4.ip_forward=1/net\.ipv4.ip_forward=1/' /etc/sysctl.conf  
  38.         #echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf  
  39.         sysctl -p  
  40.         #以下内容是for OPENVZ  
  41.         #iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`  
  42.         #sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  43.   
  44.         #echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local  
  45.         #echo exit 0 >> /etc/rc.local  
  46.   
  47.           
  48.   
  49.         # --- the sentence below was remarked By yanwen ,  what are you doing ??-----  
  50.   
  51. }  
  52.   
  53. function installOpenVZ(){  
  54.         (installVPN)  
  55.         iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`  
  56.         sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  57.   
  58.         echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local  
  59.         echo exit 0 >> /etc/rc.local  
  60.         (setDefaultUser)  
  61. }  
  62. function installXen(){  
  63.         (installVPN)  
  64.         iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE  
  65.         sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local  
  66.   
  67.         echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE >> /etc/rc.local  
  68.         echo exit 0 >> /etc/rc.local  
  69.         (setDefaultUser)  
  70. }  
  71.   
  72. function setDefaultUser(){  
  73.         #默认用户  
  74.         echo gouki \* 123456 \* >> /etc/ppp/chap-secrets  
  75.         /etc/init.d/pptpd restart  
  76. }  
  77.   
  78. function repaireVPN(){  
  79.         echo "begin to repaire VPN";  
  80.         mknod /dev/ppp c 108 0  
  81.         /etc/init.d/pptpd restart  
  82. }  
  83.   
  84. function addVPNuser(){  
  85.         echo "input user name:"  
  86.         read username  
  87.         echo "input password:"  
  88.         read userpassword  
  89.         echo "${username} pptpd ${userpassword} *" >> /etc/ppp/chap-secrets  
  90.         /etc/init.d/pptpd restart  
  91. }  
  92. function disableEncyption(){  
  93.         sed -i 's/^require-mschap-v2/#require-mschap-v2/' /etc/ppp/pptpd-options  
  94.         sed -i 's/^require-mppe-128/#require-mppe-128/' /etc/ppp/pptpd-options  
  95.         /etc/init.d/pptpd restart  
  96. }  
  97. function enableEncyption(){  
  98.         sed -i 's/^#require-mschap-v2/require-mschap-v2/' /etc/ppp/pptpd-options  
  99.         sed -i 's/^#require-mppe-128/require-mppe-128/' /etc/ppp/pptpd-options  
  100.         /etc/init.d/pptpd restart  
  101. }  
  102. echo "which do you want to?input the number."  
  103. echo "1. install Xen VPN service"  
  104. echo "2. install OpenVz VPN service"  
  105. echo "3. repaire VPN service"  
  106. echo "4. add VPN user"  
  107. echo "5. disable encryption"  
  108. echo "6. disable encryption"  
  109. read num  
  110.   
  111. case "$num" in  
  112. [1] ) (installXen);;  
  113. [2] ) (installOpenVZ);;  
  114. [3] ) (repaireVPN);;  
  115. [4] ) (addVPNuser);;  
  116. [5] ) (disableEncyption);;  
  117. [6] ) (enableEncyption);;  
  118. *) echo "nothing,exit";;  
  119. esac  

第一次写和改。连参数都不会。将就点了。。嗯。上面的内容复制起来比较麻烦,所以我做一个文件,可以直接下载:
放到自己的目录下,chmod a+x 这个文件。再执行就OK了。
你可以先看一下这个文件。。。以防万一
下载地址:untitled.sh

Tags: vpn

安装VPN。。。debian / centos

说实话,xen和openVZ安装VPN我真的不是特别了解 ,以前只知道openVZ默认不能装,因为没有ppp和tun设备,但即使有了ppp和tun设备 后,其实,iptables的NAT转发也不是每台机器 都支持。
我在cloud3k上的VPS后台里可以安装ppp和tun设备 ,但安装后无效,发了一个TK给客服,客服说是开通了NAT转发。然后就OK了。
但网上的一些教程中的iptables其实都不能用。因为那句: /sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE,其实是针对xen的VPS的。openVZ根本 就没有MASQUERADE这类的用法,而且。。。eth0,在openVZ上都没有。只有venet0。所以,我又找了一些资料,比如 :
1、http://qiaodahai.com/personal/article/2012/centos-6-pptpd-one-key-installation.htm
2、服务器架设:PPTPD VPN一键安装包 For CentOS 5
3、BuyVM OpenVZ VPS Debian安装PPTP VPN

其实现在网上有openVZ的一键安装包,我这里就不多介绍了,google一下或者百度一下,N多。
安装完后就三个功能
1、安装pptpd服务
2、修复pptpd服务
3、设置帐号
非常方便。但设置帐号后一定要去chep-secrets文件里看一下,理论上是可能有一个所谓的默认帐户存在的。注意删除一下。

Tags: vps, vpn, openvz, debian, centos

UBUNTU 下用使用VPN

用UBUNTU桌面版挺长时间了,配置VPN也很久了,但从来没有连接成功过。
昨天因为要查资料需要翻越长城,所以找了一下ubuntu VPN客户端的资料,想找个客户端来上网,结果找到的资料都是使用内置的PPTP客户端就成了。

再找资料,发现,我不能启动的原因可能是:

XML/HTML代码
  1. 要点上高级选项(Advance),选择Use-Point-To-Point-Encryption(MPPE)。  
反正,我这么一设置后,就可以正确连接上VPN了。

 

 

Tags: ubuntu, vpn

单网卡 Ubuntu 服务器打造 PPTP Server(VPN)

虽然转载,但并未成功,只是为了防止以后再也找不到类似资料做个备份。

其实作者写的挺详细了,只是我明明设置了RemoteIP,但却无法正确的获取。不知道是否因为是VPS的关系。当然也或许我太笨吧。先转了再说

原文如下,如看原文点击这里

自从实验室放了台 Linux 服务器后,可玩的东西就越来越多了。虽然这台服务器主要的工作是 Web Server,但鉴于我们那小站压力非常之小,服务器资源绝大多数还是浪费着,所以让它多干些活是个不错的选择。实验室的内部网络中有不少非常有用的资 源,例如科研用的文献资料,个人的实验数据等等,这些内容一旦离开实验室就不那么容易访问到了。解决这个问题最好的办法就是 VPN。在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。其中 OpenVPN 在 Windows/Mac 平台上还需要额外的客户端。而 L2TP/IPSec 方式虽然比较好,但我配置后,虽然 Windows 和 Linux 用户没有问题,但 Mac/iPhone 却始终无法连上,所以暂时删掉了,日后搞清楚是什么问题再换到这种方式。

只剩下 PPTP 了。事实上 PPTP 是这三者中配置最容易的方式,而且由于 Windows/Mac 系统中都内建相应的客户端,使用起来非常方便。下面我就简单写写我的安装过程,希望对需要的朋友有用。当然如果您有什么高见,也欢迎您提出。

首先,我所有的操作都是在之前文章中介绍的 Ubuntu 8.04 Server 系统中操作的,如果您的系统和我的不一样,请参考之前的两篇文章。我的服务器环境是单网卡 eth0。

在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装:

sudo apt-get install pptpd

系统会自动解决依赖关系,安装好后,需要进行一番设置。首先编辑 /etc/pptpd.conf

sudo nano /etc/pptpd.conf

去掉文件最末端的 localip 和 remoteip 两个参数的注释,并进行相应修改。这里,localip 是 VPN 连通后服务器的 ip 地址,而 remoteip 则是客户端的可分配 ip 地址。下面是我的配置:

localip 10.100.0.1
remoteip 10.100.0.2-10

编辑好这个文件后,我们需要编辑 /etc/ppp/pptpd-options 文件,还是用 nano 编辑,命令这里就不写了。这里绝大多数参数只需维持原来的默认值即可,我们只需要改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:

ms-dns 202.113.16.10
ms-dns 208.67.222.222

修改 /etc/ppp/chap-secrets 文件,这里面存放着 VPN 的用户名和密码,根据你的实际情况填写即可。如文件中注释所示,第一列是用户名,第二列是服务器名(默认写 pptpd 即可,如果在 pptpd-options 文件中更改过的话,注意这里保持一致),第三列是密码,第四列是 IP 限制(不做限制写 * 即可)。这里就不贴我的配置了 :)

全部搞定后,我们需要重启 pptpd 服务使新配置生效:

sudo /etc/init.d/pptpd restart

找一台 Windows 电脑,新建个 VPN 链接,地址填服务器的 IP(或域名),用户名密码填刚才设置好的,域那项空着(如果你在 pptpd-options 中设置了,这里就保持一致),点连接就可以了。正常情况下您应该能够建立与服务器的 VPN 链接了。

建立连接之后,您会发现除了可以访问服务器的资源,其余内外和互联网的内容均无法访问。如果需要访问这些内容的话,我们还需要进一步设置:

首先,开启 ipv4 forward。方法是,修改 /etc/sysctl.conf,找到类似下面的行并取消它们的注释:

net.ipv4.ip_forward=1

然后使新配置生效:

sudo sysctl -p

有些时候,经过这样设置,客户端机器就可以上网了(我在虚拟机上这样操作后就可以了)。但我在实验室的服务器上这样操作后仍然无法访问网络,这样我们就需要建立一个 NAT。这里我们使用强大的 iptables 来建立 NAT。首先,先安装 iptables:

sudo apt-get intall iptables

装好后,我们向 nat 表中加入一条规则:

sudo iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE

这样操作后,客户端机器应该就可以上网了。

但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:

sudo iptables-save > /etc/iptables-rules

然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:

pre-up iptables-restore < /etc/iptables-rules

这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。

到此,一个 VPN Server/Gateway 基本就算架设完毕。当然,也许你按照我的方法做了,还是无法成功,那么下面总结一些我碰到的问题和解决方案:

无法建立 VPN 连接

安装好 pptpd 并设置后,客户端还是无法建立到服务器的连接。造成的原因可能有以下几种:

  1. 服务器端的防火墙设置:PPTP 服务需要使用 1723(tcp) 端口和 gre 协议,因此请确保您的防火墙设置允许这两者通行。
  2. 如果服务器在路由器后面,请确保路由器上做好相应的设置和端口转发。
  3. 如果服务器在路由器后面,那么请确保你的服务器支持 VPN Passthrough。
  4. 如果客户端在路由器后面,那么客户端所使用的路由器也必须支持 VPN Passthrough。其实市面上稍微好点的路由器都是支持 VPN Passthrough 的,当然也不排除那些最最最便宜的便宜货确实不支持。当然,如果你的路由器可以刷 DD-Wrt 的话就刷上吧,DD-Wrt 是支持的。

能建立链接,但“几乎”无法访问互联网

这里我使用“几乎”这个词,是因为并不是完全不能访问互联网。 症状为,打开 Google 搜索没问题,但其它网站均无法打开;SSH 可用,但 scp 不行;ftp 能握手,但传不了文件。我就遇到了这种情况,仔细 Google 后发现原来是 MTU 的问题,用 ping 探测了一下果然是包过大了。知道问题就好办了,我们可以通过 iptables 来修正这一问题。具体原理就不讲了,需要的自己 Google。这里只说解决方案,在 filter 表中添加下面的规则:

sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN
-j TCPMSS --set-mss 1200

上面规则中的 1200 可以根据你的实际情况修改,为了保证最好的网络性能,这个值应该不断修改,直至能保证网络正常使用情况下的最大值。

好了,至此,一台单网卡 pptp-server 就算完成了。

----EOF---

后记:好象有很多类似的文章,前面几段都差不多的。

比如这里:

1、http://blog.sina.com.cn/s/blog_49cd61e70100cbph.html

2、http://hi.baidu.com/wangshuxun25/blog/item/b37779f04deae4a7a50f5231.html ,这个是用的shorewall防火墙,上面两篇都是用iptables的

继续后记:

已经可以了。哈哈。还是我没有配置好的原因。oh yeah ...

Tags: vpn