Встановлення 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