Установка, настройка и использование OpenVPN сервера Centos 6.6

Четверг, 05 марта 2015 15:06

Существует множество причин для использования VPN сервера для работы в интернете. Это и скрытие вашего расположения, и доступ к ресурсам, недоступным из вашей страны, и анонимность, и доступ к заблокированным сайтам, но главная причина - это безопасность.

При использовании VPN создается шифрованный туннель от вашего компьютера до нашего VPN-сервера и обратно. Это позволяет защитить любые передаваемые данные от перехвата на любых ключевых узлах, будь то публичный Wi-Fi роутер или провайдер вашего интернета.

Проще всего организовать собственный VPN сервер, используя OpenVPN. Его установку, настройку и использование мы рассмотрим ниже.

Установка производится на виртуальный сервер с Centos 6.6, виртуализация OpenVZ.

OpenVPN есть в репозитории EPEL. Если он у вас не подключён, первоначально нужно его установить:

 

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6*.rpm

Устанавливаем OpenVPN:

yum -y install openvpn easy-rsa

Переходим в папку /etc/openvpn и создаём там файл конфигурации server.conf, со следующим содержанием, можно ничего не менять:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
max-clients 100
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log
verb 3

Теперь необходимо создать сертификаты сервера. 

mkdir -p /etc/openvpn/easy-rsa/keys
cp -r /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
./build-dh

Всё можно оставлять по умолчанию, на вопросы [y/n] отвечаем y.

Далее создаём сертификаты клиентов:

./build-key client1

Всё аналогично. Если необходимо несколько клиентов, то операцию повторяем несколько раз, меняя client1 на client2, client3 и так далее.

Копируем ключи:

cd keys/
cp dh2048.pem ca.crt server.crt server.key /etc/openvpn

Настраиваем IP Forwarding. В файле etc/sysctl.conf

net.ipv4.ip_forward = 0

меняем на 

net.ipv4.ip_forward = 1

Загружаем настройки:

sysctl -p

Настраиваем Iptables, SERVER-IP меняем на реальный IP адрес нашего сервера.

iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to SERVER-IP
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT

Выше были настройки для VPS на OpenVZ, для выделенного сервера немного иначе:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Сохраняем настройки и перезапускаем iptables: 

service iptables save
service iptables restart

Запускаем сервер OpenVPN и помещаем его в автозагрузку: 

service openvpn start
chkconfig openvpn on

На этом установка сервера завершена, можно приступать к настройкам клиента на вашем компьютере.

Скачиваем и устанавливаем клиента с официального сайта, затем в папку C:\Program Files\OpenVPN\config копируем файл ca.crt из папки /etc/openvpn на сервере и ключи клиента из папки /etc/openvpn/keys - client1.crt и client1.key.

В этой же папке создаём файл client.ovpn со следующим содержанием, SERVER-IP меняем на IP адрес вашего сервера. 

client
dev tun
proto udp
remote SERVER-IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
sndbuf 0
rcvbuf 0

Запускаем программу и подключаемся к вашему серверу. С этого момента IP адрес вашего компьютера - это IP вашего сервера, и весь ваш трафик шифруется и проходит по защищённому каналу.

Если вам необходима помощь в настройке OpenVPN, можно обратиться в нашу службу поддержки. Также мы можем предоставить в аренду виртуальные сервера с уже настроенным OpenVPN по цене 5$ в месяц.


Спасибо, сделал всё по инструкции - сразу всё заработало!
Я теперь в Германии :)

Анатолий Анатолий | Пятница, 06 марта 2015 22:14


Скажите пожалуйста, а если на сервере несколько ip адресов, то как сделать, чтобы использовался какой то определённый адрес, а не основной?
Заранее спасибо.

Андрей Андрей | Суббота, 25 апреля 2015 12:49


Андрей, можно вот так:

iptables -t nat -A POSTROUTING -o eth+ -s 10.8.0.0/24 -j SNAT --to SERVER-IP

WebPatron WebPatron | Суббота, 25 апреля 2015 12:55


Добрый день.

Не подскажете следующее?

Застрял на этапе "service openvpn start".
При попытке запустить эту команду выдается ошибка:
Starting openvpn: [FAILED]

Centos 6.6 Final 64 bit.

Не могу найти причину, уже столько инфы перечитал.

При команде service openvpn status выдается:

openvpn: service not started


но запускаться не хочет. Что нужно сделать дополнительно?

Алексей Алексей | Пятница, 19 Июня 2015 11:29


Здравствуйте. Все настроил по статье, однако есть проблема. Не ходят пакеты между клиентами. Клиенты сервер пингуют, адруг друга - нет.
net.ipv4.ip_forward = 1 проверил неоднократно и правила взял для "выделенного сервера"

Алексей Алексей | Суббота, 20 Июня 2015 07:01


Алексей, если не запускается, нужно смотреть логи:
status /var/log/openvpn-status.log
log-append /var/log/openvpn.log

Чтобы пакеты ходили между клиентами, необходимо в конфиг добавить:
client-to-client
и перезапустить openvpn.
Правда не всегда этого достаточно, но сейчас к сожалению протестировать негде.

WebPatron WebPatron | Понедельник, 22 Июня 2015 16:21


Спасибо за ответ.

Дело оказалось в том, что в server.conf указал сразу другую подсеть в строчке server=...
Т.е. вместо 10.8.0.0 255.255.255.0 указал подсеть 172.х.х.х

Странно то, что сервис openvpn ни в какую не хотел стартовать, пока не прописал указанную в вашей статье подсеть 10.8.0.0 255.255.255.0.

Затем после смены с 10.8.0.0 255.255.255.0 опять на 172.х.х.х сервис поднялся также!

Алексей Алексей | Пятница, 26 Июня 2015 11:11


Просьба дать совет в чем может быть дело.

При отключенном iptables туннель создается нормально. Но как включаю сервис iptables с вашими правилами,коннекта нет.

Выдается такая ошибка:

Fri Jun 26 17:54:20 2015 OpenVPN 2.3.7 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun 8 2015
Fri Jun 26 17:54:20 2015 library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
Fri Jun 26 17:54:20 2015 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340
Fri Jun 26 17:54:20 2015 Need hold release from management interface, waiting...
Fri Jun 26 17:54:20 2015 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340
Fri Jun 26 17:54:21 2015 MANAGEMENT: CMD 'state on'
Fri Jun 26 17:54:21 2015 MANAGEMENT: CMD 'log all on'
Fri Jun 26 17:54:21 2015 MANAGEMENT: CMD 'hold off'
Fri Jun 26 17:54:21 2015 MANAGEMENT: CMD 'hold release'
Fri Jun 26 17:54:21 2015 Socket Buffers: R=[8192->8192] S=[8192->8192]
Fri Jun 26 17:54:21 2015 UDPv4 link local: [undef]
Fri Jun 26 17:54:21 2015 UDPv4 link remote: [AF_INET]х.х.х.х:1194
Fri Jun 26 17:54:21 2015 MANAGEMENT: >STATE:1435319661,WAIT,,,


х.х.х.х - это внешний IP сервера OpenVPN

На что обратить нужно внимание?

Алексей Алексей | Пятница, 26 Июня 2015 12:08


Алексей, фаервол (iptables) надо смотреть. Попробуй его остановить и проверить еще раз.
Приобщусь к это пробеме
"Здравствуйте. Все настроил по статье, однако есть проблема. Не ходят пакеты между клиентами. Клиенты сервер пингуют, адруг друга - нет.
net.ipv4.ip_forward = 1 проверил неоднократно и правила взял для "выделенного сервера"
Может кто подсказать как это реализовать?

Alex Alex | Суббота, 27 Июня 2015 10:00


Подключается, но в интернет не выходит, в чем может быть проблема?

Дмитрий Дмитрий | Пятница, 16 октября 2015 22:18


Оставить комментарий

  • Способы
    Оплаты:
  • visa
  • mastercard
  • qiwi
  • webmoney
  • yandex money
  • sberbank
  • mts bank
  • zpayment
  • liqpay
  • alfabank white
  • paxum e1411320249623
Copyright © 2012 - 2018 WebPatron Ltd. All rights reserved.