Встановлення OpenVPN в Ubuntu та Debian

буває що у деяких країнах провайдери блокують деякі сайти
і зараз ми навчимось обходити ці блокування :)
нам потрібно орендувати VPS-сервер у країні,
де потрібний нам сайт не заблокований

і також встановити та налаштувати деяке програмне забезпечення,
що ми зараз і зробимо :)

налаштовуємо OpenVPN-сервер, Debian

sudo apt-get install openvpn
sudo apt-get install openssl

mkdir /etc/openvpn/easy-rsa/
sudo apt-get install easy-rsa
cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

cd /etc/openvpn/easy-rsa/
sudo vim vars

змінюємо наступні значення - це значення по-замовчуванню
(натискаємо i для початку редагування)

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

зберігаємо і виходимо

Esc
:w!
:q!

далі

source ./vars
mkdir /etc/openvpn/easy-rsa/keys/
./clean-all
./build-ca
./build-key-server server

тут можемо задати пароль коли запитує

  A challenge password []:

далі

./build-key user

тут ви також можете задати пароль при аналогічному вище запиті,

також зверніть увагу що значення Common Name
для сервера та клієнта повинні бути різними

далі

./build-dh
openvpn --genkey --secret keys/ta.key

після цього в директорії /etc/openvpn/easy-rsa/keys/
у нас є певна кількість файлів,
частина з яких потрібна серверу, частина - клієнту

копіюємо серверні ключі в директорію /etc/openvpn

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

клієнту ж потрібні наступні ключі

  user.crt
  user.key
  ca.crt
  ta.key

ta.key потрібен для tls-аутентифікації, яку ми налаштовуватимемо трішки пізніше

Базовий конфігураційний файл OpenVPN-сервера можна отримати наступним шляхом

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn/
gzip -d server.conf.gz
vim server.conf

задаємо наступні параметри

  port 1194
  proto tcp
  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
  keepalive 10 120
  comp-lzo
  persist-key
  persist-tun
  status openvpn-status.log
  log /var/log/openvpn.log
  log-append /var/log/openvpn.log
  verb 3

для перевірки запустимо сервер:

openvpn /etc/openvpn/server.conf

якщо демон уже запущений - зупиняємо

/etc/init.d/openvpn stop

для старту - замініть в команді вище stop на start

Ubuntu

sudo apt-get install openvpn
sudo openvpn --config config.ovpn

завантажемо створені вище ключі для клієнта, помістимо їх в директорію
/etc/openvpn/

sudo cp ca.crt ta.key user.csr user.key /etc/openvpn/

створюємо файл конфігурації, редагуємо значення

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
cd /etc/openvpn/
sudo vim client.conf
  client
  dev tun
  proto tcp
  remote 100.100.100.100 1194
  resolv-retry infinite
  nobind
  persist-key
  persist-tun
  ca ca.crt
  cert user.crt
  key user.key
  ;ns-cert-type server
  remote-cert-tls server
  comp-lzo
  log /var/log/openvpn.log
  verb 3

де замість 100.100.100.100 - IP вашого VPS

перевіряємо

sudo openvpn client.conf

при цьому в консолі не повинно нічого бути,
натомість в логах клієнта та сервера
/var/log/openvpn.log
буде інформація про хендшейк

також ви можете відкрити на клієнті ще одну консоль та спробувати

ping 10.8.0.1

пінг повинен проходити

далі додаємо tls-шифрування на сервері в /etc/openvpn/server.conf

  tls-auth ta.key 0
  cipher DES-EDE3-CBC

на клієнті в /etc/openvpn/client.conf

  tls-auth ta.key 1
  cipher DES-EDE3-CBC

знову запускаємо-з'єднуємось,
пробуємо пінг - проходить - все ок
всі три команди - з різних консолей (сервер, клієнт, клієнт)

sudo openvpn /etc/openvpn/server.conf
sudo openvpn /etc/openvpn/client.conf
ping 10.8.0.1

пускаємо трафік на VPN-сервер
редагуємо файл конфігурації на сервері

  push "redirect-gateway def1 bypass-dhcp"
  ;push "dhcp-option DNS 8.8.8.8"

також нам потрібно на сервері створити правило для маршрутизації

vim /etc/sysctl.conf
  net.ipv4.ip_forward=1

.

vim openvpn.conf
  push "redirect-gateway def1"

.

vim /etc/rc.local

перед строчкою exit додамо

  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

перезапустимо сервер

shutdown -r now

у моєму випадку в браузері сайти не відкривались,
тому додатково довелось на клієнті

sudo vim /etc/resolvconf/resolv.conf.d/head

додати

  nameserver 8.8.8.8

та задіяти зміни

sudo systemctl restart resolvconf

тепер можна включати OpenVPN на сервері та на клієнті

/etc/init.d/openvpn start

або

sudo service openvpn start

Продовження - доповнення

Посилання

https://openvpn.net/