setup-ipsec-vpn/docs/clients.md

405 lines
17 KiB
Markdown
Raw Normal View History

2016-09-09 23:45:39 +02:00
# Configure IPsec/L2TP VPN Clients
2016-05-10 21:52:02 +02:00
*Read this in other languages: [English](clients.md), [简体中文](clients-zh.md).*
2016-09-09 23:45:39 +02:00
*Note: You may also connect using [IPsec/XAuth mode](clients-xauth.md), or set up [IKEv2](ikev2-howto.md).*
2016-05-10 21:52:02 +02:00
After <a href="https://github.com/hwdsl2/setup-ipsec-vpn" target="_blank">setting up your own VPN server</a>, follow these steps to configure your devices. IPsec/L2TP is natively supported by Android, iOS, OS X, and Windows. There is no additional software to install. Setup should only take a few minutes. In case you are unable to connect, first check to make sure the VPN credentials were entered correctly.
2016-09-09 23:45:39 +02:00
An alternative <a href="https://usefulpcguide.com/17318/create-your-own-vpn/" target="_blank">setup guide</a> with images is available, written by Tony Tran.
2016-07-16 16:25:01 +02:00
2016-05-10 21:52:02 +02:00
---
* Platforms
* [Windows](#windows)
2016-07-20 20:47:21 +02:00
* [OS X (macOS)](#os-x)
2016-05-10 21:52:02 +02:00
* [Android](#android)
2016-07-20 20:47:21 +02:00
* [iOS (iPhone/iPad)](#ios)
2016-05-10 21:52:02 +02:00
* [Chromebook](#chromebook)
2016-09-09 23:45:39 +02:00
* [Windows Phone](#windows-phone)
2016-07-20 20:47:21 +02:00
* [Linux](#linux)
2016-09-30 18:53:33 +02:00
* [Troubleshooting](#troubleshooting)
* [Windows Error 809](#windows-error-809)
* [Windows Error 628](#windows-error-628)
* [Android 6.0 and 7.0](#android-60-and-70)
* [Other Errors](#other-errors)
2016-05-10 21:52:02 +02:00
2016-09-09 23:45:39 +02:00
## Windows
2016-09-09 23:45:39 +02:00
### Windows 10 and 8.x
1. Right-click on the wireless/network icon in your system tray.
1. Select **Open Network and Sharing Center**.
1. Click **Set up a new connection or network**.
1. Select **Connect to a workplace** and click **Next**.
1. Click **Use my Internet connection (VPN)**.
1. Enter `Your VPN Server IP` in the **Internet address** field.
1. Enter anything you like in the **Destination name** field, and then click **Create**.
2016-07-20 20:47:21 +02:00
1. Return to **Network and Sharing Center**. On the left, click **Change adapter settings**.
1. Right-click on the new VPN entry and choose **Properties**.
1. Click the **Security** tab. Select "Layer 2 Tunneling Protocol with IPsec (L2TP/IPSec)" for the **Type of VPN**.
2016-09-30 18:53:33 +02:00
1. Click **Allow these protocols**. Be sure to select the "Challenge Handshake Authentication Protocol (CHAP)" checkbox.
1. Click the **Advanced settings** button.
1. Select **Use preshared key for authentication** and enter `Your VPN IPsec PSK` for the **Key**.
1. Click **OK** to close the **Advanced settings**.
1. Click **OK** to save the VPN connection details.
2016-09-09 23:45:39 +02:00
### Windows 7, Vista and XP
2016-05-10 21:52:02 +02:00
1. Click on the Start Menu and go to the Control Panel.
1. Go to the **Network and Internet** section.
2016-05-11 07:26:25 +02:00
1. Click **Network and Sharing Center**.
2016-05-10 21:52:02 +02:00
1. Click **Set up a new connection or network**.
1. Select **Connect to a workplace** and click **Next**.
1. Click **Use my Internet connection (VPN)**.
1. Enter `Your VPN Server IP` in the **Internet address** field.
1. Enter anything you like in the **Destination name** field.
1. Check the **Don't connect now; just set it up so I can connect later** checkbox.
1. Click **Next**.
1. Enter `Your VPN Username` in the **User name** field.
1. Enter `Your VPN Password` in the **Password** field.
1. Check the **Remember this password** checkbox.
1. Click **Create**, and then **Close**.
2016-07-20 20:47:21 +02:00
1. Return to **Network and Sharing Center**. On the left, click **Change adapter settings**.
1. Right-click on the new VPN entry and choose **Properties**.
2016-05-10 21:52:02 +02:00
1. Click the **Options** tab and uncheck **Include Windows logon domain**.
1. Click the **Security** tab. Select "Layer 2 Tunneling Protocol with IPsec (L2TP/IPSec)" for the **Type of VPN**.
2016-09-30 18:53:33 +02:00
1. Click **Allow these protocols**. Be sure to select the "Challenge Handshake Authentication Protocol (CHAP)" checkbox.
2016-05-10 21:52:02 +02:00
1. Click the **Advanced settings** button.
2016-05-19 05:16:11 +02:00
1. Select **Use preshared key for authentication** and enter `Your VPN IPsec PSK` for the **Key**.
2016-05-10 21:52:02 +02:00
1. Click **OK** to close the **Advanced settings**.
1. Click **OK** to save the VPN connection details.
2016-05-13 08:46:26 +02:00
To connect to the VPN: Click on the wireless/network icon in your system tray, select the new VPN entry, and click **Connect**. If prompted, enter `Your VPN Username` and `Password`, then click **OK**. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-05-10 21:52:02 +02:00
2016-07-05 06:26:28 +02:00
If you get an error when trying to connect, see <a href="#troubleshooting">Troubleshooting</a>.
2016-06-26 21:51:21 +02:00
2016-09-09 23:45:39 +02:00
## OS X
2016-05-10 21:52:02 +02:00
1. Open System Preferences and go to the Network section.
1. Click the **+** button in the lower-left corner of the window.
1. Select **VPN** from the **Interface** drop-down menu.
1. Select **L2TP over IPSec** from the **VPN Type** drop-down menu.
1. Enter anything you like for the **Service Name**.
1. Click **Create**.
1. Enter `Your VPN Server IP` for the **Server Address**.
1. Enter `Your VPN Username` for the **Account Name**.
1. Click the **Authentication Settings** button.
2016-06-22 09:27:38 +02:00
1. In the **User Authentication** section, select the **Password** radio button and enter `Your VPN Password`.
1. In the **Machine Authentication** section, select the **Shared Secret** radio button and enter `Your VPN IPsec PSK`.
2016-05-10 21:52:02 +02:00
1. Click **OK**.
1. Check the **Show VPN status in menu bar** checkbox.
2016-07-20 20:47:21 +02:00
1. Click the **Advanced** button and make sure the **Send all traffic over VPN connection** checkbox is checked.
2016-05-10 21:52:02 +02:00
1. Click the **TCP/IP** tab, and make sure **Link-local only** is selected in the **Configure IPv6** section.
1. Click **OK** to close the Advanced settings, and then click **Apply** to save the VPN connection information.
2016-07-20 20:47:21 +02:00
To connect to the VPN: Use the menu bar icon, or go to the Network section of System Preferences, select the VPN and choose **Connect**. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-05-10 21:52:02 +02:00
2016-09-09 23:45:39 +02:00
## Android
2016-05-10 21:52:02 +02:00
1. Launch the **Settings** application.
1. Tap **More...** in the **Wireless & Networks** section.
1. Tap **VPN**.
2016-05-13 08:46:26 +02:00
1. Tap **Add VPN Profile** or the **+** icon at top-right of screen.
2016-05-10 21:52:02 +02:00
1. Enter anything you like in the **Name** field.
1. Select **L2TP/IPSec PSK** in the **Type** drop-down menu.
1. Enter `Your VPN Server IP` in the **Server address** field.
2016-05-19 05:16:11 +02:00
1. Enter `Your VPN IPsec PSK` in the **IPSec pre-shared key** field.
2016-05-10 21:52:02 +02:00
1. Tap **Save**.
1. Tap the new VPN connection.
1. Enter `Your VPN Username` in the **Username** field.
1. Enter `Your VPN Password` in the **Password** field.
1. Check the **Save account information** checkbox.
1. Tap **Connect**.
2016-09-09 23:45:39 +02:00
Once connected, you will see a VPN icon in the notification bar. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-09-09 23:45:39 +02:00
If you get an error when trying to connect, see <a href="#troubleshooting">Troubleshooting</a>.
2016-05-10 21:52:02 +02:00
2016-09-09 23:45:39 +02:00
## iOS
2016-05-10 21:52:02 +02:00
1. Go to Settings -> General -> VPN.
1. Tap **Add VPN Configuration...**.
2016-05-13 08:46:26 +02:00
1. Tap **Type**. Select **L2TP** and go back.
2016-05-10 21:52:02 +02:00
1. Tap **Description** and enter anything you like.
1. Tap **Server** and enter `Your VPN Server IP`.
1. Tap **Account** and enter `Your VPN Username`.
1. Tap **Password** and enter `Your VPN Password`.
2016-05-19 05:16:11 +02:00
1. Tap **Secret** and enter `Your VPN IPsec PSK`.
2016-05-13 08:46:26 +02:00
1. Make sure the **Send All Traffic** switch is ON.
2016-05-10 21:52:02 +02:00
1. Tap **Done**.
2016-05-13 08:46:26 +02:00
1. Slide the **VPN** switch ON.
2016-05-10 21:52:02 +02:00
Once connected, you will see a VPN icon in the status bar. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-09-09 23:45:39 +02:00
## Chromebook
2016-05-10 21:52:02 +02:00
1. If you haven't already, sign in to your Chromebook.
1. Click the status area, where your account picture appears.
1. Click **Settings**.
1. In the **Internet connection** section, click **Add connection**.
1. Click **Add OpenVPN / L2TP**.
1. Enter `Your VPN Server IP` for the **Server hostname**.
1. Enter anything you like for the **Service name**.
1. Make sure **Provider type** is **L2TP/IPSec + pre-shared key**.
2016-05-19 05:16:11 +02:00
1. Enter `Your VPN IPsec PSK` for the **Pre-shared key**.
2016-05-10 21:52:02 +02:00
1. Enter `Your VPN Username` for the **Username**.
1. Enter `Your VPN Password` for the **Password**.
1. Click **Connect**.
Once connected, you will see a VPN icon overlay on the network status icon. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-05-11 07:26:25 +02:00
2016-09-09 23:45:39 +02:00
## Windows Phone
2016-07-20 20:47:21 +02:00
Users with Windows Phone 8.1 and above, try <a href="http://forums.windowscentral.com/windows-phone-8-1-preview-developers/301521-tutorials-windows-phone-8-1-support-l2tp-ipsec-vpn-now.html" target="_blank">this tutorial</a>. You can verify that your traffic is being routed properly by <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">looking up your IP address on Google</a>. It should say "Your public IP address is `Your VPN Server IP`".
2016-09-09 23:45:39 +02:00
## Linux
Note: Instructions below are adapted from [the work of Peter Sanford](https://gist.github.com/psanford/42c550a1a6ad3cb70b13e4aaa94ddb1c). Commands must be run as `root` on your VPN client.
2016-07-20 20:47:21 +02:00
To set up the VPN client, first install the following packages:
2016-08-11 22:56:00 +02:00
```
# Ubuntu & Debian
apt-get update
apt-get -y install strongswan xl2tpd
# CentOS & RHEL
yum -y install epel-release
yum -y install strongswan xl2tpd
# Fedora
yum -y install strongswan xl2tpd
```
Create VPN variables (replace with actual values):
```
VPN_SERVER_IP='your_vpn_server_ip'
VPN_IPSEC_PSK='your_ipsec_pre_shared_key'
VPN_USERNAME='your_vpn_username'
VPN_PASSWORD='your_vpn_password'
```
Configure strongSwan:
```
cat > /etc/ipsec.conf <<EOF
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
# strictcrlpolicy=yes
# uniqueids = no
# Add connections here.
# Sample VPN connections
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
ike=aes128-sha1-modp1024,3des-sha1-modp1024!
esp=aes128-sha1-modp1024,3des-sha1-modp1024!
conn myvpn
keyexchange=ikev1
left=%defaultroute
auto=add
authby=secret
type=transport
leftprotoport=17/1701
rightprotoport=17/1701
right=$VPN_SERVER_IP
EOF
cat > /etc/ipsec.secrets <<EOF
: PSK "$VPN_IPSEC_PSK"
EOF
chmod 600 /etc/ipsec.secrets
# For CentOS/RHEL & Fedora ONLY
mv /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.old 2>/dev/null
mv /etc/strongswan/ipsec.secrets /etc/strongswan/ipsec.secrets.old 2>/dev/null
ln -s /etc/ipsec.conf /etc/strongswan/ipsec.conf
ln -s /etc/ipsec.secrets /etc/strongswan/ipsec.secrets
```
Configure xl2tpd:
```
cat > /etc/xl2tpd/xl2tpd.conf <<EOF
[lac myvpn]
lns = $VPN_SERVER_IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
EOF
cat > /etc/ppp/options.l2tpd.client <<EOF
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
defaultroute
usepeerdns
debug
lock
connect-delay 5000
name $VPN_USERNAME
password $VPN_PASSWORD
EOF
chmod 600 /etc/ppp/options.l2tpd.client
```
The VPN client setup is now complete. Follow the steps below to connect.
2016-08-11 22:56:00 +02:00
Create xl2tpd control file:
```
mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control
```
2016-08-11 22:56:00 +02:00
Restart services:
```
service strongswan restart
service xl2tpd restart
```
2016-07-20 20:47:21 +02:00
Start the IPsec connection:
```
# Ubuntu & Debian
ipsec up myvpn
# CentOS/RHEL & Fedora
strongswan up myvpn
```
2016-07-20 20:47:21 +02:00
Start the L2TP connection:
```
echo "c myvpn" > /var/run/xl2tpd/l2tp-control
```
Run `ifconfig` and check the output. You should now see a new interface `ppp0`.
Check your existing default route:
```
ip route
```
2016-10-23 21:32:07 +02:00
Find this line in the output: `default via X.X.X.X ...`. Write down this gateway IP for use in the two commands below.
Exclude your VPN server's IP from the new default route (replace with actual value):
```
route add YOUR_VPN_SERVER_IP gw X.X.X.X
```
2016-10-23 21:32:07 +02:00
If your VPN client is a remote server, you must also exclude your Local PC's public IP from the new default route, to prevent your SSH session from being disconnected (replace with your actual public IP <a href="https://encrypted.google.com/search?q=my+ip" target="_blank">from here</a>):
```
route add YOUR_LOCAL_PC_PUBLIC_IP gw X.X.X.X
```
Add a new default route to start routing traffic via the VPN server
```
route add default dev ppp0
```
The VPN connection is now complete. Verify that your traffic is being routed properly:
2016-07-20 20:47:21 +02:00
```
wget -qO- http://whatismyip.akamai.com; echo
```
The above command should return `Your VPN Server IP`.
To stop routing traffic via the VPN server:
```
route del default dev ppp0
```
To disconnect:
```
# Ubuntu & Debian
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
ipsec down myvpn
2016-07-20 20:47:21 +02:00
# CentOS/RHEL & Fedora
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
strongswan down myvpn
```
2016-07-20 20:47:21 +02:00
2016-06-26 21:51:21 +02:00
## Troubleshooting
2016-10-23 21:32:07 +02:00
*Read this in other languages: [English](clients.md#troubleshooting), [简体中文](clients-zh.md#故障排除).*
2016-06-26 21:51:21 +02:00
### Windows Error 809
> The network connection between your computer and the VPN server could not be established because the remote server is not responding.
2016-08-26 08:52:55 +02:00
To fix this error, a <a href="https://documentation.meraki.com/MX-Z/Client_VPN/Troubleshooting_Client_VPN#Windows_Error_809" target="_blank">one-time registry change</a> is required because the VPN server and/or client is behind NAT (e.g. home router). Refer to the linked web page, or run the following from an <a href="http://www.winhelponline.com/blog/open-elevated-command-prompt-windows/" target="_blank">elevated command prompt</a>. When finished, reboot your PC.
2016-10-12 22:02:15 +02:00
- For Windows Vista, 7, 8.x and 10
2016-08-26 08:52:55 +02:00
```console
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
```
- For Windows XP ONLY
```console
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\IPSec /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
```
2016-06-26 21:51:21 +02:00
### Windows Error 628
> The connection was terminated by the remote computer before it could be completed.
To fix this error, please follow these steps:
1. Right-click on the wireless/network icon in system tray, select **Open Network and Sharing Center**.
1. On the left, click **Change adapter settings**. Right-click on the new VPN and choose **Properties**.
1. Click the **Security** tab. Select "Layer 2 Tunneling Protocol with IPsec (L2TP/IPSec)" for **Type of VPN**.
2016-09-30 18:53:33 +02:00
1. Click **Allow these protocols**. Be sure to select the "Challenge Handshake Authentication Protocol (CHAP)" checkbox.
1. Click the **Advanced settings** button.
1. Select **Use preshared key for authentication** and enter `Your VPN IPsec PSK` for the **Key**.
1. Click **OK** to close the **Advanced settings**.
2016-06-26 21:51:21 +02:00
1. Click **OK** to save the VPN connection details.
2016-08-11 22:56:00 +02:00
![Select CHAP in VPN connection properties](images/vpn-properties.png)
2016-06-26 21:51:21 +02:00
2016-09-09 23:45:39 +02:00
### Android 6.0 and 7.0
If you are unable to connect using Android 6.0 (Marshmallow) or 7.0 (Nougat), try these workarounds:
1. Tap 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, see the next step.
1. (Note: The latest version of VPN scripts already includes these changes) 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. Save the file and run `service ipsec restart`. (<a href="https://libreswan.org/wiki/FAQ#Configuration_Matters" target="_blank">Ref</a>)
2016-06-26 21:51:21 +02:00
### Other Errors
2016-09-19 00:22:15 +02:00
Refer to the links below for more troubleshooting tips:
2016-09-30 18:53:33 +02:00
* https://documentation.meraki.com/MX-Z/Client_VPN/Troubleshooting_Client_VPN#Common_Connection_Issues
* https://blogs.technet.microsoft.com/rrasblog/2009/08/12/troubleshooting-common-vpn-related-errors/
* http://www.tp-link.com/en/faq-1029.html
2016-06-26 21:51:21 +02:00
## Credits
2016-05-17 18:25:06 +02:00
2016-09-30 18:53:33 +02:00
This document was adapted from the <a href="https://github.com/jlund/streisand" target="_blank">Streisand</a> project, maintained by Joshua Lund and contributors.
2016-05-17 18:25:06 +02:00
2016-05-11 07:26:25 +02:00
## License
2016-09-09 23:45:39 +02:00
Note: This license applies to this document only.
2016-05-11 07:26:25 +02:00
Copyright (C) 2016 Lin Song
Based on <a href="https://github.com/jlund/streisand/blob/master/playbooks/roles/l2tp-ipsec/templates/instructions.md.j2" target="_blank">the work of Joshua Lund</a> (Copyright 2014-2016)
This program is free software: you can redistribute it and/or modify it under the terms of the <a href="https://www.gnu.org/licenses/gpl.html" target="_blank">GNU General Public License</a> as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.