Gentoo: OpenVPN — подключаемся к серверу
В последнее время мне часто приходится работать вдали от дома и своего сервера, но при этом нужно иметь доступ к ресурсам, которые не расшарены во внешний мир (например samba шары), по этому было решено поднять vpn сервер, подключаясь к которому работать по привычной схеме «как дома» имея такой же удобный доступ ко всему необходимому. В качестве vpn сервера был выбран OpenVPN, как одно из лучших решений на данный момент. О его настройке и пойдёт речь.
Устанавливаем OpenVPN
korp # emerge openvpn easy-rsa
Добавляем в автозагрузку
korp # rc-update add openvpn default
Переопределяем переменные, для генерации ключей
korp# nano /usr/share/openvpn/easy-rsa/vars
export EASY_RSA="`pwd`" export KEY_CONFIG="$EASY_RSA/whichopensslcnf $EASY_RSA" export KEY_DIR="/etc/openvpn/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export KEY_SIZE=1024 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="RU" export KEY_PROVINCE="XX" export KEY_CITY="MyTown" export KEY_ORG="MyOrganization" export KEY_EMAIL="my@mail.jp"
korp# source ./vars
!если вы получаете ошибку вида openssl.cnf: line 5: HOME: command not found
…
обратите внимание на параметр export KEY_CONFIG=»». Раньше его значение было $EASY_RSA/openssl.cnf, а теперь стало $EASY_RSA/whichopensslcnf $EASY_RSA. Будьте внимательны, если у вас файл с переменными остался от старой версии.
korp# touch /etc/openvpn/keys/index.txt
korp# echo 01 > /etc/openvpn/keys/serial
Генерируем ключи
korp# cd /etc/openvpn/keys
korp# openvpn --genkey --secret ta.key
korp# ./build-ca
korp# ./build-dh
korp# ./build-key-server server
korp# ./build-key client1
Всем клиентам предоставляются ключи
ta.key
ca.crt
dh1024.pem
Для каждого клиента необходимо отдельно генерировать собственный ключ
client1.crt
client1.csr
client1.key
Конфигурируем сервер
korp# nano /etc/openvpn/openvpn.conf
################################################# # OpenVPN 2.0 config file # ################################################# #Лог log /var/log/openvpn/openvpn.log #Лог состояния status /var/log/openvpn/status.log #Порт port 1194 #Протокол proto tcp-server #Тип интерфейса dev tap0 #Режим работы сервера mode server #Режим TLS tls-server #TLS-ключ tls-auth /etc/openvpn/keys/ta.key 0 #Говорим серверу пинговать клиентов раз в 10 секунд и в случае отсутствия ответа в течении 120 секунд - разрывать соединение keepalive 10 120 #Серверу назначается первый адрес из первой подсети ifconfig 10.8.0.1 255.255.255.0 #Клиентам ifconfig-pool 10.8.0.10 10.8.0.100 #Системе объявляется маршрут на всю OpenVPN-сеть route 10.8.0.0 255.255.255.0 #Передаётся маршрут на всю OpenVPN-сеть клиентам push "route 192.168.0.0 255.255.255.0" #Шлюз длы вышеуказанных маршрутов push "route-gateway 10.8.0.1" #Расположение сертификатов ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh1024.pem #включаем сжатие comp-lzo
Думаю конфиг понятен из камментов, уточню по поводу ip адресов:
192.168.0.0/24 это физическая домашняя сеть
10.8.0.0/24 vpn сеть
10.8.0.1 ip виртуальной сетевой карты сервера
10.8.0.10-10.8.0.100 диапазон адресов, отдающихся клиентам
Запускам OpenVPN
korp# etc/init.d/openvpn start
После этого необходимо на клиентскую машину установить клиент OpenVPN, которому нужно подсунуть сгенерированные ключи и конфиг:
################################################# # OpenVPN 2.0 config file # ################################################# #Режим работы client #Тип интерфейса dev tap #Протокол proto tcp #Адресс сервера и порт remote your_server 1194 #Разрешение определения имени хоста OpenVPN сервера resolv-retry infinite #Не привязываемся к конкретному локальному порту nobind #Не перечитывать ключ при сбросе соединения persist-key persist-tun #Сертификаты ca ca.crt cert client.crt key client.key tls-auth ta.key 1 #принимать команды push от сервера.то есть позволять переконфигурировать клиента pull #Включить сжатие comp-lzo
После этого пробуем подключиться и следим за логами на клиенте и сервере.