Centos linux vpn server

Установка и настройка VPN сервера на CentOS 7

В этой статье я рассмотрю на практике полный алгоритм настройки VPN сервера на примере CentOS 7.6. Мы одновременно включим и L2TP и PPTP сервер.

Для работы VPN в Linux необходимо настроить 3 слоя: IPsec, L2TP и PPP. Причем, PPP будет общий для L2TP и PPTP серверов. Настройка L2TP сложнее, чем PPTP. В ней:

  1. IPsec обеспечивает конфиденциальность сетевого соединения и авторизации клиента (системы)
  2. С L2TP туннель настроен так, что VPN трафик прозрачно проходит через IPsec
  3. PPP (протокол точка-точка) контролирует авторизацию пользователей

Настройка VPN PPTP

Перед началом установки непосредственно сервера я рекомендую обновить пакеты и установить Midnight Commander (mc) и VestaCP для удобства. Вместе с VestaCP поставится большая часть пакетов, поэтому часть команд ниже будут излишними, не пугайтесь. В mc удобнее редактировать конфиг файлы.

yum install -y epel-release yum install -y mc yum install -y net-tools

yum install -y epel-release yum install -y mc yum install -y net-tools

Далее необходимо отключить Selinux.
Система принудительного контроля Selinux отключается правкой конфигурационного файла /etc/sysconfig/selinux.

mcedit /etc/sysconfig/selinux

или заменяем значение командой sed:

sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config

sed -i ‘s/\(^SELINUX=\).*/\SELINUX=disabled/’ /etc/sysconfig/selinux sed -i ‘s/\(^SELINUX=\).*/\SELINUX=disabled/’ /etc/selinux/config

После перезагрузки проверьте статус SELinux командой « sestatus », Вы должны увидеть следующий вывод:

Переходим к установке PPTP VPN сервера и добавлении его в автозагрузку:

yum install -y ppp pptp pptpd pptp-setup chkconfig pptpd on

yum install -y ppp pptp pptpd pptp-setup chkconfig pptpd on

Далее настройка конфигов из консоли (копируем, вставляем и жмём «Enter»). Перед началом редактирования бэкапим каждый файл.

Файл /etc/pptpd.conf

cp /etc/pptpd.conf /etc/pptpd.conf.bak

cp /etc/pptpd.conf /etc/pptpd.conf.bak

cat >/etc/pptpd.conf <option /etc/ppp/options.pptpd
logwtmp
localip 172.16.0.1
remoteip 172.16.0.10-254
EOF

  • localip — ip адрес из выбранной вами подсети, который будет являться локальным шлюзом для клиентов VPN.
  • remoteip — пул ip адресов для раздачи клиентам VPN.

Если на вашей машине несколько внешних IP адресов, то вы можете указать конкретный IP, по которому будет доступно подключение к VPN серверу. В конце файла добавьте:

Файл /etc/ppp/options.pptpd
Редактирование данного файла преследует собою цель — указание DNS серверов.
В примере ниже гугловские, можно заменить на свои.

Читайте также:  Восстановление загрузчика линукс убунту

Также добавляем метод mschap2: require-mschap-v2

cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak

cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak

cat >/etc/ppp/options.pptpd <name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4
EOF

Редактирование данного файла преследует собою цель — указание логина и пароля для подключения к PPTP VPN серверу.

В примере ниже «user» и «pass» можно заменить на свои.

cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak

cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak

chmod 600 /etc/ppp/chap-secrets

chmod 600 /etc/ppp/chap-secrets

Редактирование данного файла преследует собою цель — изменение значения «0» на «1» net.ipv4.ip_forward = 1.

cp /etc/sysctl.conf /etc/sysctl.conf.bak

cp /etc/sysctl.conf /etc/sysctl.conf.bak

cat >/etc/sysctl.conf <net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.ipv4.ip_forward = 1
EOF

На этом установка и настройка VPN PPTP сервера закончена.

Осталось только «разобраться» с файерволом.

Удаляем firewalld (если не удален или не отключен):

systemctl stop firewalld systemctl disable firewalld

systemctl stop firewalld systemctl disable firewalld

и вместо него ставим IPTABLES:

yum install iptables-services iptables

yum install iptables-services iptables

Включим автозапуск iptables:

systemctl enable iptables chmod +x /etc/rc.d/rc.local

systemctl enable iptables chmod +x /etc/rc.d/rc.local

Теперь процесс настройки IPTABLES подошёл к ответственному моменту — настройке конфигурации таблиц, включению маршрутизации и открытию TCP портов 1723 и 22. Необходимо добавить следующие строки в файл iptables:

mcedit /etc/sysconfig/iptables
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [853:222169] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #-A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT -A INPUT -i eth0 -p gre -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT -A FORWARD -i ppp+ -o eth0 -j ACCEPT -A FORWARD -i eth0 -o ppp+ -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [853:222169] -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT #-A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT -A INPUT -i eth0 -p tcp -m tcp —dport 1723 -j ACCEPT -A INPUT -i eth0 -p gre -j ACCEPT -A INPUT -j REJECT —reject-with icmp-host-prohibited -A INPUT -p gre -j ACCEPT -A INPUT -p tcp -m tcp —dport 1723 -j ACCEPT -A FORWARD -i ppp+ -o eth0 -j ACCEPT -A FORWARD -i eth0 -o ppp+ -j ACCEPT -A FORWARD -j REJECT —reject-with icmp-host-prohibited COMMIT

Читайте также:  Как устанавливать файлы в linux

Cохраняем и перезапускаем всё: файерволл и сервер PPTP VPN.

service iptables save service iptables restart systemctl start pptpd

service iptables save service iptables restart systemctl start pptpd

Обратите внимание, если при редактировании конфигурационного файла iptables не сохраняются настройки, а после перезагрузки файл принимает своё первоначальное значение, то для того, чтобы после редактирования файла изменения вступили в силу, необходимо перед редактированием отключить файервол iptables:

Затем отредактировать файл /etc/sysconfig/iptables, сохранить изменения

И, наконец, запустить сервиc

Обратите внимание, что eth0 — имя вашего сетевого интерфейса. Вы можете узнать его с помощью команды ifconfig. Если вам необходимо, чтобы была локальная сеть между клиентами, подключенными к VPN, добавьте следующие правила в iptables путем выполнения следующих команд из консоли или непосредственно редактируя iptables файл (кому как нравится):

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 172.16.0.0/24 -i ppp0 -j ACCEPT iptables --append FORWARD --in-interface eth0 -j ACCEPT

iptables —table nat —append POSTROUTING —out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 172.16.0.0/24 -i ppp0 -j ACCEPT iptables —append FORWARD —in-interface eth0 -j ACCEPT

Как видно, мы включаем маскарадинг для ppp0 и разрешаем обращаться к VPN интерфейсу клиентам из VPN сети. Обратите внимание, что 172.16.0.0/24 — локальная подсеть, которую вы себе выбрали, а ppp0 — имя pptp интерфейса.

Если вы решили не отключать firewalld и не использовать iptables, то вам потребуются следующие команды для настройки файрвола:

firewall-cmd --permanent --add-service=pptpd firewall-cmd --permanent --add-port=1723/tcp firewall-cmd --permanent --add-port=22/tcp firewall-cmd --permanent --add-service=ipsec firewall-cmd --permanent --add-service=l2tpd firewall-cmd --permanent --add-port=1701/udp firewall-cmd --permanent --add-port=4500/udp firewall-cmd --permanent --add-masquerade firewall-cmd --reload

firewall-cmd —permanent —add-service=pptpd firewall-cmd —permanent —add-port=1723/tcp firewall-cmd —permanent —add-port=22/tcp firewall-cmd —permanent —add-service=ipsec firewall-cmd —permanent —add-service=l2tpd firewall-cmd —permanent —add-port=1701/udp firewall-cmd —permanent —add-port=4500/udp firewall-cmd —permanent —add-masquerade firewall-cmd —reload

Читайте также:  Unix and linux essentials

Источник

Настройка IPSEC L2TP VPN-сервера на CentOS 7

Обновлено

Обновлено: 14.03.2020 Опубликовано: 09.04.2018

Один из лучших способов поднять сервер VPN — настроить OpenVPN. Однако, данный сервер не лишен недостатков — на клиенты потребуется устанавливать специальное программное обеспечение. Если мы хотим использовать стандартные средства операционных систем для подключения к серверу, настроим VPN IPSEC L2TP.

Подготовка сервера

Для установки ПО потребуется репозиторий EPEL:

firewall-cmd —permanent —add-port=1701/tcp

firewall-cmd —permanent —add-service=ipsec

IPSEC

Открываем конфигурационный файл racoon:

remote anonymous
exchange_mode main,aggressive,base;
doi ipsec_doi;
passive on;
proposal_check obey;
support_proxy on;
nat_traversal on;
ike_frag on;
dpd_delay 20;
proposal
encryption_algorithm aes;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
>
proposal
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
>
>

Теперь открываем следующий файл:

Для клиентов Windows добавляем:

ip-addres1 key-password1
ip-addres2 key-password2

* где ip-addres — ip-адрес клиента, с которого будет идти подключение; key-password — пароль для подключения.

Для клиентов Android добавляем:

identifier1 key-password1
identifier2 key-password2

* где identifier — идентификатор клиента, который будет использоваться при подключении; key-password — пароль для подключения.

Создаем скрипт с настройкой ipsec политик:

spdadd 0.0.0.0/0[l2tp] 0.0.0.0/0 any -P out ipsec esp/transport//require;
spdadd 0.0.0.0/0 0.0.0.0/0[l2tp] any -P in ipsec esp/transport//require;

chmod 755 /etc/rc.d/init.d/racoon.init

Добавляем скрипт на автозапуск:

Разрешаем запуск сервиса racoon и стартуем его:

L2TP

Устанавливаем пакет xl2tpd:

Открываем конфигурационный файл:

[global]
ipsec saref = yes
force userspace = yes

В секции [lns default] изменяем диапазон IP-адресов:

[lns default]
ip range = 176.16.10.10-176.16.10.200
local ip = 176.16.10.1

Разрешаем автозапуск сервиса и стартуем его:

PPP

Вносим небольшие изменения в DNS:

Открываем файл с пользователями:

* где dmosk — логин; первая звездочка — любой сервер; password — пароль, который должен вводить пользователь dmosk; вторая звездочка — подключение с любого IP-адреса.

Настройка клиента

Пример настройки клиента Windows:

Пример настройки клиента VPN на Windows

На устройстве с Андроидом настраиваем выбираем в качестве VPN-сервера IPSEC-L2TP PSK и вводим данные из файла psk.txt (например, identifier1 и key-password1). Пример подключения на Android:

Пример настройки клиента VPN на Android

VPN-сервер как шлюз

Для этого настраиваем только CentOS.

Источник

Оцените статью
Adblock
detector