Настройка 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