Настройка OpenVPN через http/https прокси

Часто бывает нужен доступ к своему рабочему компьютеру который, как правило, находится за корпоративным NAT и доступ есть только через корпоративный proxy. Ко всему прочему, proxy доставлял другие неудобства связанные с программами, которые сами не умели работать через него.
В один прекрасный день меня это достало, и побудило организовать себе удалённый доступ посредством OpenVPN сервера, и тем самым я "убил двух зайцев": организовал удалённый доступ к рабочему компьютеру, и нормальный интернет на нём.

И на сервере и на клиенте нам нужен исключительно openvpn:

sudo apt-get install openvpn

Конфигурация сервера

В первую очередь необходимо включить форвардинг. Открываем /etc/sysctl.conf, меняем строчку или добавляем если нет:

net.ipv4.ip_forward=1

После чего применим изменения:

sysctl -p /etc/sysctl.conf

Создадим конфигурационный файл сервера - /etc/openvpn/server.conf:

mode server
port 1194
server 192.168.20.0 255.255.255.0
proto tcp-server
tls-server
dev tun

ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/server.crt
key easy-rsa/keys/server.key
dh easy-rsa/keys/dh1024.pem

ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Для удобства создания сертификатов в поставке с OpenVPN есть скрипты easy-rsa облегчающие их создание. Скопируем их в более удобное и доступное место:

cd /etc/openvpn/
mkdir easy-rsa
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/

Теперь в директории /etc/openvpn/easy-rsa откроем файл vars, и изменим директивы по своему вкусу/усмотрению:

export KEY_COUNTRY="RU" # Страна
export KEY_PROVINCE="XX" # Штат
export KEY_CITY="MyCity" # Город
export KEY_ORG="Organisation Name" # Название организации
export KEY_EMAIL="admin@localhost.localdomain" # E-Mail
export KEY_CN=CertificateName # Название сертификата
export KEY_NAME=Name # Имя

Генерируем ключи:

source ./vars
./clean-all
./build-ca
./build-dh
./build-key-server server
./build-key client01

Т.к. мы заранее в файле vars изменили все нужные нам данные, то почти все вопросы можно пропустить нажатием Enter. Сертификаты оставляем там, где они есть (в директории /etc/openvpn/easy-rsa/keys). Там им на мой взгляд самое место.

Включим NAT для сети которую используем для OpenVPN, иначе доступа в интернет нам не видать:

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

Перезапустим OpenVPN и добавим его в автозагрузку:

service openvpn restart
update-rc.d openvpn defaults

Конфигурация клиента

На клиенте для подключения необходимы файлы: ca.crt, client01.crt, client01.key. Они находятся на сервере в директории /etc/openvpn/easy-rsa/keys/. Для удобства, на клиентском компьютере, поместим их в директорию /etc/openvpn/client/.

Создадим файл конфигурации клиента - /etc/openvpn/connection-to-homeserver.conf:

client
dev tun
proto tcp
http-proxy homeserver.com 3128 client/auth.txt basic
http-proxy-retry
remote homeserver 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca client/ca.crt
cert client/client01.crt
key client/client01.key
comp-lzo

Осталось создать файл с логином и паролем для авторизации на proxy сервере. Как видно из конфига выше - это /etc/openvpn/client/auth.txt:

login
password

Перезапустим OpenVPN и добавим его в автозагрузку:

service openvpn restart
update-rc.d openvpn defaults


Понравилась статья? Поделись с друзьями!




Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.