ublog

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

other [14]linux [12]

Вітаю!

буває що у деяких країнах провайдери блокують деякі сайти
і зараз ми навчимось обходити ці блокування :)
нам потрібно орендувати 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

upd. доповнення https://blog.clever-games.win/post/36
:)