From 05e4d46d41f69109cf37b83fdeabef1ed4cfad66 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Wed, 10 Aug 2016 21:23:39 -0500 Subject: [PATCH 01/12] Deploy link point to this repo [ci skip] --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c2b90c..f3ffdc7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# IPsec VPN Server Auto Setup Scripts  [![Build Status](https://static.ls20.com/travis-ci/setup-ipsec-vpn.svg)](https://travis-ci.org/hwdsl2/setup-ipsec-vpn) +# IPsec VPN Server Auto Setup Scripts  [![Build Status](https://static.ls20.com/travis-ci/setup-ipsec-vpn.svg)](https://travis-ci.org/hwdsl2/setup-ipsec-vpn) *Read this in other languages: [English](README.md), [简体中文](README-zh.md).* @@ -52,7 +52,7 @@ Customizable with the following options: - The size of the virtual machine. Default: Standard_A0 - + From 73688763d23bfb736ef77df88c2f612b46f2d611 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Wed, 10 Aug 2016 21:25:44 -0500 Subject: [PATCH 02/12] Fix a typo in script [ci skip] --- azure/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure/install.sh b/azure/install.sh index 6f7ece6..e61c903 100644 --- a/azure/install.sh +++ b/azure/install.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash export VPN_IPSEC_PSK=$1 export VPN_USER=$2 export VPN_PASSWORD=$3 From 68adddc969448083d5e0aa132aa3677912c64c66 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Wed, 10 Aug 2016 22:15:11 -0500 Subject: [PATCH 03/12] Update README.md [ci skip] --- README-zh.md | 8 +++++++- README.md | 29 +++++++---------------------- azure/README-zh.md | 27 +++++++++++++++++++++++++++ azure/README.md | 27 +++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 azure/README-zh.md create mode 100644 azure/README.md diff --git a/README-zh.md b/README-zh.md index 13b4a0b..a03d3e2 100644 --- a/README-zh.md +++ b/README-zh.md @@ -37,18 +37,24 @@ ## 系统要求 -一个新创建的 Amazon EC2 实例,使用这些 AMI: (详细步骤 看这里) +一个新创建的 Amazon EC2 实例,使用这些 AMI 之一: - Ubuntu 16.04 (Xenial), 14.04 (Trusty) or 12.04 (Precise) - Debian 8 (Jessie) EC2 Images - CentOS 7 (x86_64) with Updates - CentOS 6 (x86_64) with Updates +请参见 详细步骤 以及 EC2 定价细节。 + **-或者-** 一个专用服务器或者虚拟专用服务器 (VPS),全新安装以上操作系统之一。另外也可使用 Debian 7 (Wheezy),但是必须首先运行另一个脚本。 OpenVZ VPS 不受支持,用户可以尝试使用 ShadowsocksR 或者 OpenVPN。 这也包括各种云计算服务中的 Linux 虚拟机,比如 Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr 和 Linode。 + + Deploy to Azure + + **» 我想建立并使用自己的 VPN ,但是没有可用的服务器** :warning: **不要** 在你的 PC 或者 Mac 上运行这些脚本!它们只能用在服务器上! diff --git a/README.md b/README.md index f3ffdc7..331101e 100644 --- a/README.md +++ b/README.md @@ -37,39 +37,24 @@ We will use Libreswan as th ## Requirements -Microsoft Azure Subscription - -![Azure Custom Deployment](azure/custom_deployment_screenshot.png) - -The Template will create a fully working VPN server on the Microsoft Azure Cloud. Pricing details - -Customizable with the following options: - - - Username - - Password - - Pre-Shared Key - - Operating System Image (Debian 8 or Ubuntu 16.04 LTS) - - The size of the virtual machine. Default: Standard_A0 - - - - - - -**-OR-** - -A newly created Amazon EC2 instance, using these AMIs: (See instructions) +A newly created Amazon EC2 instance, using one of these AMIs: - Ubuntu 16.04 (Xenial), 14.04 (Trusty) or 12.04 (Precise) - Debian 8 (Jessie) EC2 Images - CentOS 7 (x86_64) with Updates - CentOS 6 (x86_64) with Updates +Please refer to detailed instructions and EC2 pricing. + **-OR-** A dedicated server or Virtual Private Server (VPS), freshly installed with one of the above OS. In addition, Debian 7 (Wheezy) can also be used with this workaround. OpenVZ VPS is not supported, users could instead try OpenVPN. This also includes Linux VMs in public clouds such as Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr and Linode. + + Deploy to Azure + + **» I want to run my own VPN but don't have a server for that** :warning: **DO NOT** run these scripts on your PC or Mac! They should only be used on a server! diff --git a/azure/README-zh.md b/azure/README-zh.md new file mode 100644 index 0000000..e1eeeea --- /dev/null +++ b/azure/README-zh.md @@ -0,0 +1,27 @@ +# 在 Microsoft Azure 上部署 + +*其他语言版本: [English](README.md), [简体中文](README-zh.md).* + +使用这个模板,你可以在 Microsoft Azure Cloud 上快速搭建一个 VPN 服务器 (定价细节)。 + +根据你的偏好设置以下选项: + + - VPN Username (用户名) + - VPN Password (密码) + - IPsec Pre-Shared Key (预共享密钥) + - Operating System Image (操作系统镜像,Debian 8 或 Ubuntu 16.04 LTS) + - Virtual Machine Size (虚拟机大小,默认值: Standard_A0) + +请点击以下按钮开始: + + + Deploy to Azure + + +屏幕截图: + +![Azure Custom Deployment](custom_deployment_screenshot.png) + +## 作者 + +- Daniel Falkner (https://github.com/derdanu) diff --git a/azure/README.md b/azure/README.md new file mode 100644 index 0000000..736022c --- /dev/null +++ b/azure/README.md @@ -0,0 +1,27 @@ +# Deploy to Microsoft Azure + +*Read this in other languages: [English](README.md), [简体中文](README-zh.md).* + +This template will create a fully working VPN server on the Microsoft Azure Cloud (pricing details). + +Customizable with the following options: + + - VPN Username + - VPN Password + - IPsec Pre-Shared Key + - Operating System Image (Debian 8 or Ubuntu 16.04 LTS) + - Virtual Machine Size (Default: Standard_A0) + +Press this button to start: + + + Deploy to Azure + + +Screenshot: + +![Azure Custom Deployment](custom_deployment_screenshot.png) + +## Author + +- Daniel Falkner (https://github.com/derdanu) From d3651890bdfd097b5baadd2e6e97f19764263d79 Mon Sep 17 00:00:00 2001 From: Kenneth Endfinger Date: Thu, 11 Aug 2016 15:06:50 -0400 Subject: [PATCH 04/12] Add support for Raspbian --- vpnsetup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vpnsetup.sh b/vpnsetup.sh index 1c92d3a..5719067 100755 --- a/vpnsetup.sh +++ b/vpnsetup.sh @@ -37,7 +37,7 @@ exiterr() { echo "Error: ${1}" >&2; exit 1; } exiterr2() { echo "Error: 'apt-get install' failed." >&2; exit 1; } os_type="$(lsb_release -si 2>/dev/null)" -if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then +if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ] && [ "$os_type" != "Raspbian" ]; then exiterr "This script only supports Ubuntu/Debian." fi From 0c3b2851f5ce369f76bde68fad95d69144f69379 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Thu, 11 Aug 2016 15:14:52 -0500 Subject: [PATCH 05/12] Add support for Raspbian [ci skip] --- extras/vpnupgrade.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extras/vpnupgrade.sh b/extras/vpnupgrade.sh index 9b81ea1..5d99503 100644 --- a/extras/vpnupgrade.sh +++ b/extras/vpnupgrade.sh @@ -21,7 +21,7 @@ exiterr() { echo "Error: ${1}" >&2; exit 1; } exiterr2() { echo "Error: 'apt-get install' failed." >&2; exit 1; } os_type="$(lsb_release -si 2>/dev/null)" -if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then +if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ] && [ "$os_type" != "Raspbian" ]; then exiterr "This script only supports Ubuntu/Debian." fi From dc97e46542c55fbb2e4761f05efa6c94be9c0a99 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Thu, 11 Aug 2016 15:56:00 -0500 Subject: [PATCH 06/12] Update docs [ci skip] --- README-zh.md | 4 +++- README.md | 6 ++++-- azure/README-zh.md | 2 +- azure/README.md | 2 +- docs/clients-zh.md | 15 +++++++++++---- docs/clients.md | 15 +++++++++++---- docs/images/azure-deploy-button.png | Bin 0 -> 17108 bytes docs/images/do-install-button.png | Bin 0 -> 2190 bytes docs/images/vpn-properties-zh.png | Bin 0 -> 18475 bytes docs/images/vpn-properties.png | Bin 0 -> 39798 bytes 10 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 docs/images/azure-deploy-button.png create mode 100644 docs/images/do-install-button.png create mode 100644 docs/images/vpn-properties-zh.png create mode 100644 docs/images/vpn-properties.png diff --git a/README-zh.md b/README-zh.md index a03d3e2..b54dfe3 100644 --- a/README-zh.md +++ b/README-zh.md @@ -52,7 +52,9 @@ 这也包括各种云计算服务中的 Linux 虚拟机,比如 Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr 和 Linode。 - Deploy to Azure + Deploy to Azure + + Install on DigitalOcean **» 我想建立并使用自己的 VPN ,但是没有可用的服务器** diff --git a/README.md b/README.md index 331101e..8a500c3 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,9 @@ A dedicated server or Virtual Private Server (VPS), freshly installed with one o This also includes Linux VMs in public clouds such as Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr and Linode. - Deploy to Azure + Deploy to Azure + + Install on DigitalOcean **» I want to run my own VPN but don't have a server for that** @@ -93,7 +95,7 @@ VPN_USER='your_vpn_username' \ VPN_PASSWORD='your_vpn_password' sh vpnsetup.sh ``` -For installation on DigitalOcean, check out this step-by-step guide by Tony Tran. +For install on DigitalOcean, you may refer to this step-by-step guide by Tony Tran. **Note:** If unable to download via `wget`, you may also open vpnsetup.sh (or vpnsetup_centos.sh) and click the **`Raw`** button. Press `Ctrl-A` to select all, `Ctrl-C` to copy, then paste into your favorite editor. diff --git a/azure/README-zh.md b/azure/README-zh.md index e1eeeea..ee177f3 100644 --- a/azure/README-zh.md +++ b/azure/README-zh.md @@ -15,7 +15,7 @@ 请点击以下按钮开始: - Deploy to Azure + Deploy to Azure 屏幕截图: diff --git a/azure/README.md b/azure/README.md index 736022c..616206d 100644 --- a/azure/README.md +++ b/azure/README.md @@ -15,7 +15,7 @@ Customizable with the following options: Press this button to start: - Deploy to Azure + Deploy to Azure Screenshot: diff --git a/docs/clients-zh.md b/docs/clients-zh.md index 398aebf..788525e 100644 --- a/docs/clients-zh.md +++ b/docs/clients-zh.md @@ -160,10 +160,17 @@ VPN 连接成功后,网络状态图标上会出现 VPN 指示。最后你可 1. 在文件 `xl2tpd.conf` 中,删除这一行 `# your vpn server goes here`。 1. 在文件 `options.l2tpd.client` 中,将 `require-mschap-v2` 换成 `require-chap`。 +1. 替换 `sudo echo "c XXX-YOUR-CONNECTION-NAME-XXX " > /var/run/xl2tpd/l2tp-control` 为: + + ``` + echo "c XXX-YOUR-CONNECTION-NAME-XXX " | sudo tee /var/run/xl2tpd/l2tp-control + ``` + 1. 替换最后一个命令 `sudo route add -net default gw ` 为: -``` -sudo route add default dev ppp0 -``` + + ``` + sudo route add default dev ppp0 + ``` 如果遇到错误,请检查 `ifconfig` 的输出并将上面的 `ppp0` 换成 `ppp1`,等等。 @@ -211,7 +218,7 @@ sudo route del default dev ppp0 1. 单击 **允许使用这些协议**。选中 "质询握手身份验证协议 (CHAP)" 复选框,并且取消选中所有其它项。 1. 单击 **确定** 保存 VPN 连接的详细信息。 -![Select only CHAP in VPN connection properties-2](https://cloud.githubusercontent.com/assets/5104323/16026263/cbda945a-3192-11e6-96a6-ff18c5dd9a48.png) +![Select CHAP in VPN connection properties](images/vpn-properties-zh.png) ### 其它错误 diff --git a/docs/clients.md b/docs/clients.md index e0790d7..01b7de0 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -160,10 +160,17 @@ Follow the steps in " > /var/run/xl2tpd/l2tp-control` with: + + ``` + echo "c XXX-YOUR-CONNECTION-NAME-XXX " | sudo tee /var/run/xl2tpd/l2tp-control + ``` + 1. Replace the last command `sudo route add -net default gw ` with: -``` -sudo route add default dev ppp0 -``` + + ``` + sudo route add default dev ppp0 + ``` If there is an error, check the output of `ifconfig` and replace `ppp0` above with `ppp1`, etc. @@ -211,7 +218,7 @@ To fix this error, please follow these steps: 1. Click **Allow these protocols**. Check "Challenge Handshake Authentication Protocol (CHAP)" and uncheck all others. 1. Click **OK** to save the VPN connection details. -![Select only CHAP in VPN connection properties](https://cloud.githubusercontent.com/assets/5104323/16024310/b113e9b6-3186-11e6-9e03-12f5455487ba.png) +![Select CHAP in VPN connection properties](images/vpn-properties.png) ### Other Errors diff --git a/docs/images/azure-deploy-button.png b/docs/images/azure-deploy-button.png new file mode 100644 index 0000000000000000000000000000000000000000..e81f2c1c5733192076a5eb63340a2f4a2bda5eed GIT binary patch literal 17108 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 Q6#icF~zbnF}-6P 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ℜc zg6Q+&X6P5?Z>Qa4Zj*9NntSZvaFzblJJcK?WBS~b!0b2SKmS9<#Eba=B_TARhur9` z;p*NRCu=^M(|Nk{BCfzduI3F%74Wy!iHon-Ho3i+u)rk}Wh6Y;a+u`&1VA0JqwO(D zIlz~VE!Tl!hFv~vsNJ0B_|9mq0mzROpkwryqU8I6@~?Gt9Sm&@IIeay zZQ=BZ%c~*iFM3zX}Iu+mQlc|78gh?vQ~YP{AzQwd8{rd=zXx_HH1@hFs| z%39wrauey&z1hp#8l&8jzTJ5?5igt7E=&-X9VQ4OqC8}&4;XWeFY!O&+`4FjOYNvN zrumrDQZZsLjhOHpV{$f%mEYgF?7o=DTL(oNhwTmo4fgpKI2t=cN+7Z zAVm}~$(ciF_T>t%0-EJ-aP@yeR;vB!Ylj=Ax^)o3#y&QRyK}*iMCQ_5By$muG|@;c z63-<1+cTCt1YY3clZ|(}dd77&gP3)ZS}OcZJk@$l5|Y|#J=Jgj6))9aRGcmUF#EmG`xc#>#^mAa#+V67!rx6()bo8-wnntTpgpN<&17bbd8j$n-N~~unGC!&Z0?6* z0!AEuFfw(wLfbcZ6!eUR7HsIqLRUpu8Mjj7?!tY1$v^ykteb->qddv=Sn9y`Om421 z?JR=EIP28<5{VBVe?J9{njm^7&Y82wj^$xb;qmv4^(?yR(VteX?VoopI}P5eCEx&S>8}W(UAvqOm~_3jgLA&m2}2mI z3r+crRMqAT&n|B~RwBK7 z0y{E+F&wH;ZcZi0=8@UWsPKbqL(PLA2yICb4qd8WEpy^H(T>hKZg;M9X8}$Pl@11t zxjvD~{qORv7roqhSXxgF8)6K&x5S&zmxcttwuuXRdIXbP=1A9F)s}*I3ER}so(*|~ zGMGv3Fv*7+!oHwJOXs0zYb(DNnwX8QUaql*DT&NHtF0oN^0yh#Ezq%_JWz~4CfB>1 zlg*{vzo`HwEm}nK4-0zDN6y>(Q^3Sa7pmCr7Rl^pWj>_jc)lClN!MpuplF&o;hd2H z1$)waZ1J*>nO0K3+GtzC>wI)w(Nxc&$z={S zp`^b)bdoI8vkn=hW0OmN9O*Qq38hO9TTRhQ(!tD7JOpp(Xe(1ROwHn!V%Us@2?N^^ zo0=?=qLz8XmW?JG!xQs&k|{qigI6QMSEivW5TZN%u}3kodAHU3akrkvQF} z;=I#np%8N;SW%2s=^0LkMOi91#!A0?S%`d6a}TXrx8$E=tY_+MWhNyuZAjJAart7 zinJg#AWejTND~MU2t|4a={58Yq4!YUiTA#>-fz9%d+VLQa@LwNlQU;#_MZKH-yT3N z1g!kZ|1MY#Y(9?Z2YX)u1@;nZm>cjBj^bR5?J30MTDN@zSiz1@sx6S|y)A{;hNhSg zAA6O&&Il5}EMMk}WPM^sf^1e=4ER#L?0XKv#p-TuNpX&MINrfraT;}i_TGkbI`=yz z{>xURRUpvc`yEkWAIdM+VM=8zQx~#JwC}uk%F!{YVZvKOV(ZvN$8$6%{=lZ_BdFLV zO$v0%7ddX13tfgj3iVU=o|0Ojbnds!bEsGVe-exrSMznE*=I|@`l-c+xx}5D`}=Bg zxU9@xC{`LOQ80(cw15P{v-KPCvy^dyRYS%Pzc|xk>C`CAVkYmA-{+z>k`fBTq6|tx zYZ67{`-UE!osFd01C5RL<;>8uZ<9qEf9~NsbNnz4mjksm7kzAYHO0Qs`vY^8^dM%8 z)2Hs_ApOO(oYhi7s_*f7m~4P=rsj6~{PuWOduyw(o3`(eZY`QFjw^~9=51x4!}+wb zgC@gC9`XUU!N#kX7L%wPUSq;ikMJYnR4ch$ZP!cG*r(8N_%!TlR1N$o-pkpg{f)a5 zU@7cv`&^&?qfg$L3^ymc1>=exl;Hp$#FDIXwTx0ItSzI2+*IvGPm01AwoPH8J7pp) zg!o*nW4k5ySa)yaXICSeh_>yA>B?I-7`?=Hq zV^B5bmmZ|1r0+=zOr_KtzoT0)!DwhniEeQ!U3$e(U&>P(Nq4@%F~y8BHkjG!SE@Mr zU7_G9ezy=|vd4Q#zf4=Y^F%WjUM>{-ID}QG$bw~Sb7K*t>GUTSkm+b89Dw$J2sm1g zs69JOIBq!J?D)M?Arg9#HEG6%ZQ&E=1fh~hLdS25V7|C@za9>=pA7r;zNz&;az=?n zv(Od%da3C-yE(Sr^)&Q9prEOs7EH1u?&;x+N*MJ0>5d5)-opwTKp)!ayh1hzxi>Va zR(}&!C1Z~(W%MXHfGc~*yrZiO8{q3uC7uCL`?}iazFFdoM`pFYVQ%82vVr|L5$QMI zTQT-mKTHg45a#=&+eK`!Z}OBzOtbEoSDAm}I)eH1<7HDvcBnm>8-)o&YKNg%!iLou2SBrdk&=rBw znIal-!%?FkRJd4@%g^^La$ss0?_1@p(_j1U(ZJ;@J!v~X>~&}Mi6olNCAp^W9;_e| zrZ`V)39|@c)}M#m0qdNSsnx7P>+1rn-{ja9rwhq6wWdo6Yp(`IIP%^PPy2x{=x8ZJVuHiH47l#Sn^$UHaTss2p0R0W~{685&f(rD@ zy^6qN)l6?@?|kI{m8MP;W-L-A)#&2CNSm1IFpMQDbFH}IRQBPqT5WNvs>cZ`C|9af zI_+yHO+KO%-7)-Vj85UmZNY>!E5>DcSgjm%O+z$^0zHfBjbaS{ghjcjvLC+?rPXi>ud-00!Mh{%<{Jvr(U*Oby6{;P0ob)5AhI3qW9O(ILS@J8Yvq z_+|6gQBS0i^;lLq4s-MR$@2!;`_qdwQ=kmpMInTLi5e@wm|6u&bcVvXu{&(rH2+mN34~*m& zB;{p%B2M(*6I=3ZiF;j?a~fjZcuQ{|(x_1+;ASQ5%dQ2hxX@GPJ{9WPp(wYWr{ESg zc#!pXNG7|*=-C54iS!==m70kG;Ep`NUCK|6wS@4i?(W{_E^W=Pgcsa0We}!6qGHd` z9o9{em_sM@2;}STQtbu@Us?t8q|?ND+AmBzfM*9%=iN%M9D%C8&}`n)4+;_qy8t=N zELMxaB7qm^a07%HKW#G)BfP}R?B0r%@{8aK3)k?hRdBoelV5bYc$s>amb8@wizi$t zX_@)bCjWo@$)xZ|$tumK<&~vC|)BggEOpyL;(-8obg8j~rf~r#k`&#T^U~ ztvk`if=Y=a?NLt;=Z(4x?-RGs78+Y42D(aD(VE()jBNw42JH8p>%Trgs;sk*!*7jp zARws*(0x2T3mHcc(+MxicbAaQ92iEcDKTq_=84T^li4vET~hvA)_>=i`_^nH>cGcR z6O{2ts^%xOyK(9zWRjw4D0F3xo;Mw|zukJxFsnXDX;9KU+lXqk5ZWUR*cDu2GA86r zb%el124}g7el}k~K^0_*?Lt57E2%7bp=phjTmPcyle`o%o0Eq0LsFD|roGEuCjAPK zeZMQ?%O!)50&64qTQQ^l&W^JZLHr|-h&b&cpM(a;fH8o~-pF#Xbhz!FJze`bM)kf@ z2EvJgwV1b=mHo&{${B^#o=_@`9P1LuL(wcHK;^g5VqtK{?C@%-kTJ0sE9%(JTN{Hq%;W2WMn(g2{@?g}*cK8KS+R0nEO*%f zFOu}qn)~W675eR7(&#gKh&IA-y)b{+Ry;Gp*2~^QF_&M#fqpxY`uY1slD*;jw?n;Y z{i2cf`uUoBdt$$6rad+qU9h1Ao&u&m{aO{E|4V_*1G`;U`tx@x8KYrFm(5=Ecs1f6GrMpx|ibgZ$!#3tGi1z6bpRwEY{bG zhs#s?lg-w9cU)P&-t3D1h(@SeufFxRPl%LtO5f>1ngl#w$=!ufZ7p0()ju=4mJr`M z+BT9gc^`o&sPY$~sdOGeIGjEQ;@&?GJ5MhD%H(jmZ(mFKc5Eoc+;aBfMET|8Yoa@> z@BDUYu+w<3PdF@Dd#WqvwMS1KihGh!KOuGsw!1l9@EmnT{v~!`Q43}tVPaNlv$6WI z&_Rq7at|4YK(+W6*Ks(-;uP&TAm?5~JTLHBq;;Sjvx)~`pSN5R(R)+vV1}yJT1Re; z(QeiJ(mIpQkz7%*U3j5z{{;OL4rB-N@?||J4-PjmD;lOT8sLlwIiocsg(FS(tba%yDi7@z# z>v~4QLrcfaj1s!KkZ=9v;|c<;=o{^h|7kJ|HBVyT^fh==)tlM~`~5RjjRa3P(+T_? z#h#-dc?M8XV^{pVnb@nu1ETM|;KKQrure^BbC*Q@^(SwmJP@J7IT2@V{R5BBc8J%z zL%)sN_Z-ce1=%1xx~=JHkqN6{L#b<*Vl9o%bwyl%hs;=aSa*v4WIVayAduA*O>6%A zKKSV%;yo?~D4W19zl%yfS52jZJ7buwlVtaeT*d)`bXP$>b!;S+oQ-o8*E z_5@L28eDq1Cjd2E<=CF6c(Fnt!T%2i%x^Z&zeSHU{(>!vylHO`8jp6ste{eQu^*si&f3|k!ak}whr6*ORTIJ_*Cw}|EjTLSqVy)J?K%r$^!Y^($lI{dKK@3?ig;e*>;Fujqw^m+Acei0DOJoE$3 z)2KT?O@>)ss=8#YeSq{kWYiYujh{~AANrq>=tjz3%U}?1ezQ=uG-BLe>|&k@yF4Xe z#KYXoVvavey|BTBlNCT-Qgg@hWD{RW#*=ZNZ;;s2JttUOer{yj4PyN4AU>ooQzlui z#yAM(I0kRZ_|{Nd=kay8)%|c-AJQ7hI0n1AC;^Tu&3|JM!yJ$(+TX2<^mmNeKWz<|<$5<$zb`v&<#QQ__Ty#tL2#PnB4-}9bPK{7 zQdGe$TKY;{&s8lTBSS+&{6JdAGPfyn&bj0$=8~6-{MnrBPn2Y31MoMt-SIdwRpY1{ zfJS2vdV6yqRBmrw!Z5WF^h_m0nm@s~+2jy`-oL2z*ur-Qjtr_k6_GRwm^(Ol;yU5+9{va=t&oF;7F4)DlSn=w<{mHBNX(b) zm1BHBMb9=agJIgpIy*cxc$T&NACwwDE7|?XyXejSlIyOeEmj!xLbT4Wts}0g0Q9jtvgPhuS38Y^*(!=o*8j`8!>~(jA z1?~vL%K204J|IO0$uEZ#@|Si7wcy;+doR>X)?Jc(Y-l?XMGc=tAE*{Lmy}{xk4(p^ z0vY)){m)~&t}pVdF>-f61}e=a2#~xz$b#Ye{P4X;tUT=K16D+k15*-GwQ2ARvSAc1V_SRncNpKixNIf_1M?^h(!7Q;I zQg6AD?XESBcZxr7%v0$yUx(6KY{7|tx$F|7UCu%a#nQK7SNJ3uKQS|(CEEO#EKMPl zP2I`D$f#HWFf-;RxZawUE?_(fm}HJ4)?3NW{jUnN{7?sP>BZk;2a$z@fmhMkYRd5p z4J31r(besUuOJx4iJuMlL-_^#q${jR)}V}>TMsRRHbn<~&H_YZ-gsQ4+iGTLEBy7b z?mr7-I?+Z*za;QYiEF+N^6`jU;&sH^Mc-OZ`roS8SOC^v z)#-AIHEJTUg>R3Nt%}|C=O5_BSk(efHq*G@bXH4ZxfF_X)oLpOU$2f@?yC2{qgfu1 z*tYGzO(|j3281{NN(_lTkvRd8-kopw?zeMXFXtpmu)X>V&3EKJmUYR6lruMhxw_7t z<^FMT^9O8(=z!aCvdfvUorgngb^Z`@QMFtcNir{G^O|zYi>SX;kCep;d%J`(xdTPE zdSz?LcLuV&zPfIXm7wR&HUt!Ab_vQM`X4g37&G+MB|ht2$cgH9)tyjWZl4KY|Eq-^ z+s4z&Ou;PD-U7YShYH;_doRu}-pxR|t&YqF2s?3f3vB$%kfybB` zlIlZwbD;TDEP)T P;8Ic4P$+t8@%}#nIF?W& literal 0 HcmV?d00001 From 14767d354fcf313f977d9c0c08b81dbc0cb25e19 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Thu, 11 Aug 2016 20:51:48 -0500 Subject: [PATCH 07/12] Reduce wget timeout --- vpnsetup.sh | 4 ++-- vpnsetup_centos.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vpnsetup.sh b/vpnsetup.sh index 5719067..2f8ed07 100755 --- a/vpnsetup.sh +++ b/vpnsetup.sh @@ -120,8 +120,8 @@ PUBLIC_IP=${VPN_PUBLIC_IP:-''} PRIVATE_IP=${VPN_PRIVATE_IP:-''} # In Amazon EC2, these two variables will be retrieved from metadata -[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 15 -qO- 'http://169.254.169.254/latest/meta-data/public-ipv4') -[ -z "$PRIVATE_IP" ] && PRIVATE_IP=$(wget -t 3 -T 15 -qO- 'http://169.254.169.254/latest/meta-data/local-ipv4') +[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 5 -qO- 'http://169.254.169.254/latest/meta-data/public-ipv4') +[ -z "$PRIVATE_IP" ] && PRIVATE_IP=$(wget -t 3 -T 5 -qO- 'http://169.254.169.254/latest/meta-data/local-ipv4') # Try to find IPs for non-EC2 servers [ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short) diff --git a/vpnsetup_centos.sh b/vpnsetup_centos.sh index 6710120..08c421d 100755 --- a/vpnsetup_centos.sh +++ b/vpnsetup_centos.sh @@ -107,8 +107,8 @@ PUBLIC_IP=${VPN_PUBLIC_IP:-''} PRIVATE_IP=${VPN_PRIVATE_IP:-''} # In Amazon EC2, these two variables will be retrieved from metadata -[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 15 -qO- 'http://169.254.169.254/latest/meta-data/public-ipv4') -[ -z "$PRIVATE_IP" ] && PRIVATE_IP=$(wget -t 3 -T 15 -qO- 'http://169.254.169.254/latest/meta-data/local-ipv4') +[ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(wget -t 3 -T 5 -qO- 'http://169.254.169.254/latest/meta-data/public-ipv4') +[ -z "$PRIVATE_IP" ] && PRIVATE_IP=$(wget -t 3 -T 5 -qO- 'http://169.254.169.254/latest/meta-data/local-ipv4') # Try to find IPs for non-EC2 servers [ -z "$PUBLIC_IP" ] && PUBLIC_IP=$(dig @resolver1.opendns.com -t A -4 myip.opendns.com +short) From 28a8d496f0092d96cd141729594ec62b477663f4 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Thu, 11 Aug 2016 21:36:12 -0500 Subject: [PATCH 08/12] Update docs [ci skip] --- README-zh.md | 2 ++ README.md | 2 ++ docs/images/linode-deploy-button.png | Bin 0 -> 20132 bytes 3 files changed, 4 insertions(+) create mode 100644 docs/images/linode-deploy-button.png diff --git a/README-zh.md b/README-zh.md index b54dfe3..e835b40 100644 --- a/README-zh.md +++ b/README-zh.md @@ -55,6 +55,8 @@ Deploy to Azure Install on DigitalOcean + + Deploy to Linode **» 我想建立并使用自己的 VPN ,但是没有可用的服务器** diff --git a/README.md b/README.md index 8a500c3..6fb5f53 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,8 @@ This also includes Linux VMs in public clouds such as Google Compute Engine, Ama Deploy to Azure Install on DigitalOcean + + Deploy to Linode **» I want to run my own VPN but don't have a server for that** diff --git a/docs/images/linode-deploy-button.png b/docs/images/linode-deploy-button.png new file mode 100644 index 0000000000000000000000000000000000000000..cbdc8192b5698d209d86e3a6cfe4e892f1f98796 GIT binary patch literal 20132 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 literal 0 HcmV?d00001 From 2cb4d2f9093f7dfdf7dff83a9a5062f26722c24e Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Fri, 12 Aug 2016 16:35:27 -0500 Subject: [PATCH 09/12] Improve tests --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 096b835..de395f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: bash sudo: required -dist: trusty addons: apt: From b27f58f7852dc8dc36062f5e95e0ef60d421a1a1 Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Sat, 13 Aug 2016 14:54:26 -0500 Subject: [PATCH 10/12] Update README.md [ci skip] --- README-zh.md | 15 +++++---------- README.md | 15 +++++---------- docs/images/linode-deploy-button.png | Bin 20132 -> 19741 bytes 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/README-zh.md b/README-zh.md index e835b40..7e28b0a 100644 --- a/README-zh.md +++ b/README-zh.md @@ -51,13 +51,7 @@ 这也包括各种云计算服务中的 Linux 虚拟机,比如 Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr 和 Linode。 - - Deploy to Azure - - Install on DigitalOcean - - Deploy to Linode - +Deploy to Azure Install on DigitalOcean Deploy to Linode **» 我想建立并使用自己的 VPN ,但是没有可用的服务器** @@ -97,7 +91,7 @@ VPN_USER='你的VPN用户名' \ VPN_PASSWORD='你的VPN密码' sh vpnsetup.sh ``` -如需在 DigitalOcean 上安装,可以参考这个分步指南,由 Tony Tran 编写。 +DigitalOcean 用户可以参考这个分步指南,由 Tony Tran 编写。 **注:** 如果无法通过 `wget` 下载,你也可以打开 vpnsetup.sh (或者 vpnsetup_centos.sh),然后点击右方的 **`Raw`** 按钮。按快捷键 `Ctrl-A` 全选, `Ctrl-C` 复制,然后粘贴到你喜欢的编辑器。 @@ -140,8 +134,8 @@ VPN_PASSWORD='你的VPN密码' sh vpnsetup.sh ## 问题和反馈 -- 有问题需要提问?请先搜索已有的留言,在这个 Gist 以及我的博客。 -- Libreswan (IPsec) 的相关问题可在邮件列表提问。也可以参见这些文章:[1] [2] [3] [4] [5]。 +- 有问题需要提问?请先搜索已有的留言,在 这个 Gist 以及 我的博客。 +- VPN 的相关问题可在这些邮件列表提问: [1] [2],或者看相关文章: [1] [2] [3]。 - 如果你发现了一个可重复的程序漏洞,请提交一个 GitHub Issue。 ## 卸载说明 @@ -158,6 +152,7 @@ VPN_PASSWORD='你的VPN密码' sh vpnsetup.sh - VPN Deploy Playbook - Insta VPN - One Key IKEv2 VPN +- Setup Strongswan ## 作者 diff --git a/README.md b/README.md index 6fb5f53..f4fc670 100644 --- a/README.md +++ b/README.md @@ -47,17 +47,11 @@ Please refer to this workaround. OpenVZ VPS is not supported, users could instead try OpenVPN. +A dedicated server or Virtual Private Server (VPS), freshly installed with one of the above OS. In addition, Debian 7 (Wheezy) can also be used with this workaround. OpenVZ VPS is NOT supported, users could instead try OpenVPN. This also includes Linux VMs in public clouds such as Google Compute Engine, Amazon EC2, Microsoft Azure, IBM SoftLayer, VMware vCloud Air, Rackspace, DigitalOcean, Vultr and Linode. - - Deploy to Azure - - Install on DigitalOcean - - Deploy to Linode - +Deploy to Azure Install on DigitalOcean Deploy to Linode **» I want to run my own VPN but don't have a server for that** @@ -97,7 +91,7 @@ VPN_USER='your_vpn_username' \ VPN_PASSWORD='your_vpn_password' sh vpnsetup.sh ``` -For install on DigitalOcean, you may refer to this step-by-step guide by Tony Tran. +DigitalOcean users may refer to this step-by-step guide by Tony Tran. **Note:** If unable to download via `wget`, you may also open vpnsetup.sh (or vpnsetup_centos.sh) and click the **`Raw`** button. Press `Ctrl-A` to select all, `Ctrl-C` to copy, then paste into your favorite editor. @@ -141,7 +135,7 @@ The additional scripts vpnupgrade ## Bugs & Questions - Got a question? Please first search other people's comments in this Gist and on my blog. -- Ask Libreswan (IPsec) related questions on the mailing list, or read these articles: [1] [2] [3] [4] [5]. +- Ask VPN related questions on these mailing lists: [1] [2], or read related articles: [1] [2] [3]. - If you found a reproducible bug, open a GitHub Issue to submit a bug report. ## Uninstallation @@ -158,6 +152,7 @@ Please refer to Uninstall the VPNVPN Deploy Playbook - Insta VPN - One Key IKEv2 VPN +- Setup Strongswan ## Author diff --git a/docs/images/linode-deploy-button.png b/docs/images/linode-deploy-button.png index cbdc8192b5698d209d86e3a6cfe4e892f1f98796..5a394a2851b719c24762d4d3a617ba9af377223b 100644 GIT binary patch delta 3305 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 From 963242bf410ac2ebc22803aab34f12e061f1094d Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Mon, 15 Aug 2016 11:38:23 -0500 Subject: [PATCH 11/12] Update docs - Minor corrections - [ci skip] --- azure/README-zh.md | 6 +++--- azure/README.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/azure/README-zh.md b/azure/README-zh.md index ee177f3..62f275e 100644 --- a/azure/README-zh.md +++ b/azure/README-zh.md @@ -6,9 +6,9 @@ 根据你的偏好设置以下选项: - - VPN Username (用户名) - - VPN Password (密码) - - IPsec Pre-Shared Key (预共享密钥) + - Username for VPN and SSH (VPN 和 SSH 用户名) + - Password for VPN and SSH (VPN 和 SSH 密码) + - IPsec Pre-Shared Key (IPsec 预共享密钥) - Operating System Image (操作系统镜像,Debian 8 或 Ubuntu 16.04 LTS) - Virtual Machine Size (虚拟机大小,默认值: Standard_A0) diff --git a/azure/README.md b/azure/README.md index 616206d..af2f2d8 100644 --- a/azure/README.md +++ b/azure/README.md @@ -6,8 +6,8 @@ This template will create a fully working VPN server on the Microsoft Azure Clou Customizable with the following options: - - VPN Username - - VPN Password + - Username for VPN and SSH + - Password for VPN and SSH - IPsec Pre-Shared Key - Operating System Image (Debian 8 or Ubuntu 16.04 LTS) - Virtual Machine Size (Default: Standard_A0) From 5064f3a6d68d17f145ca0256dadecc63d43548cb Mon Sep 17 00:00:00 2001 From: hwdsl2 Date: Fri, 19 Aug 2016 01:38:23 -0500 Subject: [PATCH 12/12] Update docs - Improve Android 6 workaround - [ci skip] --- docs/clients-xauth-zh.md | 5 ++++- docs/clients-xauth.md | 5 ++++- docs/clients-zh.md | 5 ++++- docs/clients.md | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/clients-xauth-zh.md b/docs/clients-xauth-zh.md index 54bafe7..3155d3a 100644 --- a/docs/clients-xauth-zh.md +++ b/docs/clients-xauth-zh.md @@ -81,7 +81,10 @@ VPN 连接成功后,会在 VPN Connect 状态窗口中显示 **tunnel enabled* 1. 选中 **保存帐户信息** 复选框。 1. 单击 **连接**。 -**注:** Android 6 (Marshmallow) 用户需要编辑 VPN 服务器上的 `/etc/ipsec.conf`,并在 `ike=` 和 `phase2alg=` 两行结尾添加 `,aes256-sha2_256` 字样。然后在它们下面添加一行 `sha2-truncbug=yes`。每行开头必须空两格。保存修改并运行 `service ipsec restart`。(更多信息) +**注:** 如果你使用 Android 6 (Marshmallow) 并且无法连接,请尝试以下解决方案: + +1. 单击 VPN 连接右边的设置按钮,选择 "显示高级选项" 并且滚动到底部。如果选项 "兼容模式" 存在,请启用它并重试连接。如果不存在,请跳到下一步。 +1. 编辑 VPN 服务器上的 `/etc/ipsec.conf`,并在 `ike=` 和 `phase2alg=` 两行结尾添加 `,aes256-sha2_256` 字样。然后在它们下面添加一行 `sha2-truncbug=yes`。每行开头必须空两格。保存修改并运行 `service ipsec restart`。(参见) VPN 连接成功后,会在通知栏显示图标。最后你可以到这里检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。 diff --git a/docs/clients-xauth.md b/docs/clients-xauth.md index 38bad1e..db6989e 100644 --- a/docs/clients-xauth.md +++ b/docs/clients-xauth.md @@ -81,7 +81,10 @@ To connect to the VPN: Use the menu bar icon, or go to the Network section of Sy 1. Check the **Save account information** checkbox. 1. Tap **Connect**. -**Note:** Android 6 (Marshmallow) users should edit `/etc/ipsec.conf` on the VPN server and append `,aes256-sha2_256` to both `ike=` and `phase2alg=` lines. Then add a new line `sha2-truncbug=yes` immediately after those. Indent lines with two spaces. When finished, run `service ipsec restart`. (Reference) +**Note:** If you are using Android 6 (Marshmallow) and unable to connect, try these workarounds: + +1. Click the settings icon next to your VPN profile. Select "Show Advanced Options" and scroll down to the bottom. If the option "Backwards-compatible mode" exists, enable it and reconnect the VPN. If not, skip to the next step. +1. Edit `/etc/ipsec.conf` on the VPN server and append `,aes256-sha2_256` to both `ike=` and `phase2alg=` lines. Then add a new line `sha2-truncbug=yes`. Indent lines with two spaces. Save the file and run `service ipsec restart`. (Ref) Once connected, you will see a VPN icon in the notification bar. You can verify that your traffic is being routed properly by looking up your IP address on Google. It should say "Your public IP address is `Your VPN Server IP`". diff --git a/docs/clients-zh.md b/docs/clients-zh.md index 788525e..551f10d 100644 --- a/docs/clients-zh.md +++ b/docs/clients-zh.md @@ -117,7 +117,10 @@ 1. 选中 **保存帐户信息** 复选框。 1. 单击 **连接**。 -**注:** Android 6 (Marshmallow) 用户需要编辑 VPN 服务器上的 `/etc/ipsec.conf`,并在 `ike=` 和 `phase2alg=` 两行结尾添加 `,aes256-sha2_256` 字样。然后在它们下面添加一行 `sha2-truncbug=yes`。每行开头必须空两格。保存修改并运行 `service ipsec restart`。(更多信息) +**注:** 如果你使用 Android 6 (Marshmallow) 并且无法连接,请尝试以下解决方案: + +1. 单击 VPN 连接右边的设置按钮,选择 "显示高级选项" 并且滚动到底部。如果选项 "兼容模式" 存在,请启用它并重试连接。如果不存在,请跳到下一步。 +1. 编辑 VPN 服务器上的 `/etc/ipsec.conf`,并在 `ike=` 和 `phase2alg=` 两行结尾添加 `,aes256-sha2_256` 字样。然后在它们下面添加一行 `sha2-truncbug=yes`。每行开头必须空两格。保存修改并运行 `service ipsec restart`。(参见) VPN 连接成功后,会在通知栏显示图标。最后你可以到这里检测你的 IP 地址,应该显示为`你的 VPN 服务器 IP`。 diff --git a/docs/clients.md b/docs/clients.md index 01b7de0..05ec75b 100644 --- a/docs/clients.md +++ b/docs/clients.md @@ -117,7 +117,10 @@ To connect to the VPN: Use the menu bar icon, or go to the Network section of Sy 1. Check the **Save account information** checkbox. 1. Tap **Connect**. -**Note:** Android 6 (Marshmallow) users should edit `/etc/ipsec.conf` on the VPN server and append `,aes256-sha2_256` to both `ike=` and `phase2alg=` lines. Then add a new line `sha2-truncbug=yes` immediately after those. Indent lines with two spaces. When finished, run `service ipsec restart`. (Reference) +**Note:** If you are using Android 6 (Marshmallow) and unable to connect, try these workarounds: + +1. Click the settings icon next to your VPN profile. Select "Show Advanced Options" and scroll down to the bottom. If the option "Backwards-compatible mode" exists, enable it and reconnect the VPN. If not, skip to the next step. +1. Edit `/etc/ipsec.conf` on the VPN server and append `,aes256-sha2_256` to both `ike=` and `phase2alg=` lines. Then add a new line `sha2-truncbug=yes`. Indent lines with two spaces. Save the file and run `service ipsec restart`. (Ref) Once connected, you will see a VPN icon in the notification bar. You can verify that your traffic is being routed properly by looking up your IP address on Google. It should say "Your public IP address is `Your VPN Server IP`".