Довольно популярная задача — установить OpenVPN на Linux-сервере. Зачем это нужно? Например, когда вы находитесь в публичной сети (например, подключены к гостевой Wi-Fi ресторана), и не хотите, чтобы вас проснифали. Например, когда не хотите палить свой действительный IP-адрес посещаемым сайтам. Еще вариант — когда сетевое оборудование блокирует некоторые порты, а нужно, чтобы все работало. Давайте сэкономим время и без лишней головной боли поставим OpenVPN на примере CentOS 5.6.
Начнем с установки необходимого пакета.
yum install openvpn
Приступим к конфигурированию. Необходимо создать определенную файловую структуру, чтобы OpenVPN смог нормально работать. Тут же создаем копию набора скриптов под названием easy-rsa, с их помощью мы будем создавать ключи и подписывать их. Копию easy-rsa необходимо создавать затем, чтобы при обновлении пакета OpenVPN не затерлись изменения в наших настройках и ключах.
touch /etc/openvpn/openvpn.conf mkdir /etc/openvpn/ccd mkdir /etc/openvpn/keys cp -r /usr/share/openvpn-2.0.9/easy-rsa/ /etc/openvpn/ cp /usr/share/openvpn-2.0.9/easy-rsa/openssl.cnf /etc/openvpn cd /etc/openvpn/easy-rsa chmod +x clean-all chmod +x build*
Редактируем /etc/openvpn/easy-rsa/vars, вводим свои данные:
export KEY_COUNTRY=RU export KEY_PROVINCE=MSK export KEY_CITY=MOSCOW export KEY_ORG="OpenVPN-TEST-INSTALLATION" export KEY_EMAIL="[email protected]"
Собственно, создаем ключи:
cd /etc/openvpn/easy-rsa . ./vars ./clean-all ./build-ca ./build-key-server vpnserver ./build-dh
Копируем созданные ключи в рабочий каталог OpenVPN:
cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ cp /etc/openvpn/easy-rsa/keys/vpnserver.crt /etc/openvpn/keys/ cp /etc/openvpn/easy-rsa/keys/vpnserver.key /etc/openvpn/keys/ cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/
Пришло время заполнить основной конфигурационный файл /etc/openvpn/openvpn.conf
port 1194 proto tcp dev tun tls-server server 1.1.1.0 255.255.255.0 keepalive 10 120 persist-key persist-tun status openvpn-status.log client-config-dir /etc/openvpn/ccd push "route 1.1.1.0 255.255.255.0" duplicate-cn ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/vpnserver.crt key /etc/openvpn/keys/vpnserver.key dh /etc/openvpn/keys/dh1024.pem
Обратите внимание на то, что мы задаем подсеть 1.1.1.0/24 в качестве подсети VPN, IP-адрес сервера в данном случае будет 1.1.1.1. Также нужно правильно указать путь до ключа и сертификатов. Работаем по протоколу TCP по порту 1194. Шифрование включено (tls-server).
Теперь создаем ключ для клиента:
cd /etc/openvpn/easy-rsa ./build-key client01
Допустим, что на клиенте установлена Windows. Тогда для работы OpenVPN клиента нужно будет положить получившиеся файлы ca.crt, client01.crt, client01.key и server.ovpn в каталог C:\Program Files\OpenVPN\config. Содержимое server.ovpn примерно следующее:
client tls-client verb 3 dev tun proto tcp remote vpn-server-name.ru 1194 nobind persist-key persist-tun ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\client01.crt" key "C:\\Program Files\\OpenVPN\\config\\client01.key"
Чтобы весь трафик при подключении к VPN шел через VPN-сервер (это заставляет клиента изменить шлюз по умолчанию на vpn-сервер), нужно добавить следующую строчку в основной конфиг openvpn.conf:
push "redirect-gateway def1"