- How to set up a PPTP VPN connection between Linux and Windows
- Install PPTP VPN Server on Linux
- For Ubuntu or Debian:
- For CentOS/RHEL 8 or Fedora:
- Configure PPTP VPN Server
- Set Up a PPTP VPN Client on Windows
- Support Xmodulo
- Установка и настройка L2TP VPN-сервера на Ubuntu Server
- Настройка IPSEC
- L2TP
- PPP
- Настройка клиента
- Доступ в Интернет и локальную сеть
- Диагностика проблем
How to set up a PPTP VPN connection between Linux and Windows
Point-to-Point Tunneling Protocol (PPTP) is a VPN tunneling protocol based on a client and server model. Microsoft Windows comes with a built-in PPTP client software, and so PPTP VPN is popular among Windows-running computers. PPTP server and client software is also available on Linux platform.
This tutorial describes how to set up a PPTP VPN server on Linux, and connect a Windows client to the server.
Install PPTP VPN Server on Linux
To set up a PPTP VPN server, you need to install PPTP VPN daemon software called pptpd .
For Ubuntu or Debian:
To install pptpd on Ubuntu or Debian:
$ sudo apt-get install pptpd
For CentOS/RHEL 8 or Fedora:
First install ppp and its development files with the following command:
$ sudo yum install ppp-devel
Note that on CentOS/RHEL, ppp-devel is available from PowerTools repository, so you need to enable it first::
$ sudo yum config-manager --set-enabled powertools
After that, download the source code of the latest stable version of pptpd (e.g., pptpd-1.4.0.tar.gz ) from the official source, and build it from the source.
$ sudo yum groupinstall 'Development Tools' $ tar -xf pptpd-1.4.0.tar.gz $ cd pptpd-1.4.0 $ ./configure $ make $ sudo make install
Configure PPTP VPN Server
After installing pptpd , go ahead and enable IP forwarding on the server.
Now configure pptpd by adding localip (VPN server’s IP address) and remoteip (VPN client’s IP addresses) in /etc/pptpd.conf . In this example, the potential IP address of a VPN client is 10.0.0.2 or any IP address between 10.0.0.10 and 10.0.0.30 .
localip 10.0.0.1 remoteip 10.0.0.2,10.0.0.10-30
Configure local DNS servers in /etc/ppp/pptpd-options . For example, you could add public DNS servers provided by Google.
$ sudo vi /etc/ppp/pptpd-options
Configure user authentication using CHAP in /etc/ppp/chap-secrets . In this example, alice is a client’s user name, pptpd is server, dfs is secret, and * represents the allowed IP addresses of clients. In this case, any IP address is allowed.
$ sudo vi /etc/ppp/chap-secrets
On Debian, Ubuntu or Linux Mint:
$ sudo /etc/init.d/pptpd restart
$ sudo service pptpd restart
$ sudo systemctl restart pptpd
Optionally, if the VPN server is behind a proxy, you need to set up port forwarding on TCP port 1723 , which is used for VPN control channel.
Set Up a PPTP VPN Client on Windows
Create a virtual private network connection.
Go to Properties , choose Security tab, and mark » Advanced (custom settings) «. In the custom settings, choose » Maximum strength encryption (disconnect if server declines) «. If you do not perform this last step, you may get the following error in PPTP VPN server side (in /var/log/syslog ).
GRE: Bad checksum from pppd" error on the PPTP VPN server side
The » bad GRE checksum » error can also originate from router/AP’s incapability of handling GRE packets. Some consumer-grade routers, wireless APs, or cable modems have a web-based management interface where you can enable or disable » PPTP passthrough » or » GRE passthrough » feature. So it is a good idea to check the management interface of your router/AP if PPTP VPN traffic goes through the router/AP.
Support Xmodulo
This website is made possible by minimal ads and your gracious donation via PayPal or credit card
Please note that this article is published by Xmodulo.com under a Creative Commons Attribution-ShareAlike 3.0 Unported License. If you would like to use the whole or any part of this article, you need to cite this web page at Xmodulo.com as the original source.
Установка и настройка L2TP VPN-сервера на Ubuntu Server
Обновлено: 18.05.2020 Опубликовано: 18.01.2020
- VPN-сервер, использующий туннельный протокол L2TP.
- Защита соединения посредством общего ключа + аутентификация пользователя.
- Доступ к локальной сети.
Мы выполним следующие настройки:
Настройка IPSEC
Для управления IPSec используется пакет strongswan — установим его командой:
apt-get install strongswan
Открываем конфигурационный файл для настройки ipsec:
Для config setup добавим:
config setup
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
protostack=netkey
* где virtual_private для нас является наиболее важным параметром и определяет приватные сети. В данном примере просто перечислены сети, зарезервированные под локальные — мы можем указать и другие.
conn l2tpvpn
type=transport
authby=secret
pfs=no
rekey=no
keyingtries=2
left=%any
leftprotoport=udp/l2tp
leftid=@l2tpvpnserver
right=%any
rightprotoport=udp/%any
auto=add
- type — тип соединения. Возможны варианты tunnel ( хост-хост, хост-подсеть или подсеть-подсеть); transport (хост-хост); passthrough (без обработки IPsec).
- authby — способы аутентификации двух узлов. Возможны варианты secret (по паролю) или rsasig (цифровые подписи RSA).
- pfs — расшифровывается как Perfect Forward Secrecy. Позволяет активировать совершенную секретность в канале ключей соединения.
- rekey — перепроверить соединение, когда оно истекает.
- keyingtries — число попыток, чтобы «договориться» о соединении или его замене.
- left — IP-адрес левого участника (сервера). %any означает, что адрес может быть любой.
- leftprotoport — определяет протокол и порт, на котором будет работать левая сторона (сервер). В данном примере указан UDP и порт 1701.
- leftid — идентификация левого участника соединения.
- right — IP-адрес правого участника (клиента). %any означает, что адрес может быть любой.
- rightprotoport — определяет протокол и порт, на котором будет работать правая сторона (клиент). В данном примере указан UDP и любой порт.
- auto — операция, которая должна запуститься автоматически при старте IPsec.
Создаем секретный ключ — для этого открываем на редактирование файл:
%any %any : PSK «my_key_password»
* в данном примере мы устанавливаем общий пароль my_key_password для соединений с любого IP.
Разрешаем автозапуск strongswan и перезапускаем службу:
systemctl enable strongswan
systemctl restart strongswan
L2TP
Устанавливаем сервер L2TP:
Открываем файл настройки сервера:
[global]
port = 1701
access control = no
ipsec saref = yes
force userspace = yes
auth file = /etc/ppp/chap-secrets
[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1
name = l2tpserver
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
exclusive = no
hidden bit = no
length bit = yes
require authentication = yes
require chap = yes
refuse pap = yes
- port — порт UDP, на котором работает VPN. По умолчанию, 1701.
- access control — принимать или нет запросы только от клиентов с определенными IP, перечисленными в настройках клиентов.
- ipsec saref — указывает использовать или нет ipsec Security Association, позволяющий отслеживать несколько клиентов с одинаковыми IP-адресами.
- force userspace — повышает производительность за счет декапсуляции пакетов L2TP.
- auth file — путь к файлу аутентификации.
- ip range — диапазон адресов, которые назначаются подключенным клиентам.
- local ip — IP-адрес сервера в сети VPN.
- name — имя сервера для процесса согласования.
- pppoptfile — путь к файлу с настройкой pppd.
- flow bit — позволяет добавлять в пакеты порядковые номера.
- exclusive — если поставить в yes, сервер разрешит только одно соединение с клиентом.
- hidden bit — скрывать или нет AVP.
- length bit — использовать ли бит длины, указывающий полезную нагрузку.
- require authentication — требовать ли аутентификацию.
- require chap — требовать ли аутентификацию PPP по протоколу CHAP.
- refuse pap — требовать ли аутентификацию PPP по протоколу PAP.
Разрешаем автозапуск vpn-сервера и перезапускаем его:
PPP
Открываем на редактирование конфигурационный файл:
noccp
auth
crtscts
mtu 1410
mru 1410
nodefaultroute
lock
noproxyarp
silent
modem
asyncmap 0
hide-password
require-mschap-v2
ms-dns 77.88.8.8
ms-dns 8.8.8.8
Создаем пользователя. Для этого открываем файл:
«user1» l2tpserver «password1» «172.16.10.10»
«user2» l2tpserver «password2» *
Настройка клиента
В параметрах сети и Интернет в разделе VPN создаем новое соединение:
- Имя подключения — произвольное имя.
- Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
- Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
- Общий ключ — ключ, который мы задали в файле /etc/ipsec.secrets.
- Тип данных для входа — выбираем пользователь и пароль.
- Имя пользователя и пароль — логин и пароль, которые мы задали в файле /etc/ppp/chap-secrets.
Доступ в Интернет и локальную сеть
После подключения к сети VPN мы не сможем ни выйти в Интернет, ни подключиться к узлам локальной сети. Чтобы это исправить, открываем на редактирование файл:
* мы разрешили форвард сетевых запросов и настроили сервер в качестве шлюза.
После применяем настройку:
sysctl -p /etc/sysctl.d/99-sysctl.conf
Добавляем правило в iptables:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
* данное правило включает маскарадинг на интерфейсе eth0. Вам необходимо подставить в команду значение своего сетевого адаптера.
В случае с единым сетевым интерфейсом больше ничего делать не потребуется — Ubuntu начнет работать как Интернет-шлюз.
В случае с несколькими сетевыми адаптерами, настраиваем сетевой экран:
iptables -A FORWARD -i eth1 -o eth0 -m state —state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
* предполагается, что eth1 используется для внутренней сети, а eth0 — внешней.
Диагностика проблем
Описанная выше настройка не предполагает наличие лога. Для этого открываем конфигурационный файл для ppp:
.
logfile /var/log/xl2tpd/xl2tpd.log
debug
Создадим каталог для лога:
Перезапускаем сервис xl2tpd:
Пробуем подключиться к серверу — в случае наличия проблем, наблюдаем за логом:
tail -f /var/log/xl2tpd/xl2tpd.log
Настройка L2TP VPN-сервера на Ubuntu для возможности подкючения стандартными средствами Windows