Тема: Open VPN debian
Установка сервера OpenVPN
Для работы OpenVPN необходима поддержка TUN/TAP интерфейса на сервере. Как правило, с этим не должно возникнуть проблем при использовании физической машины или виртуализации KVM.
А вот в случае использования OpenVZ, необходимо активировать поддержку TUN/TAP в настройках контейнера. Чтобы проверить, что система поддерживает TUN-интерфейс, необходимо выполнить команду:
# ls -l /dev/net/tun
crw-rw-rw- 1 root root 10, 200 Nov 19 23:02 /dev/net/tun
Установим OpenVPN на сервере:
apt-get install openvpn
В качестве способа авторизации клиента на сервере мы будем использовать аутентификацию по ключу. Для этого создаём директорию в которую будут скопированы сгенерированные ключи:
# mkdir /etc/openvpn/easy-rsa/
Копируем в нее утилиты и конфиги для работы с ключами:
# cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
Переходим в директорию:
# cd /etc/openvpn/easy-rsa/
При необходимости, в файле vars можно настроить параметры ключей и сертификатов. Данный пункт не обязательный и при желании его можно смело пропустить.
# nano vars
Меняем следующие строки на свои значения:
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
После правки vars необходимо инициировать переменные:
в консоли:
. varns
rm -rf on /etc/openvpn/easy-rsa/keys
./clean-all
Создаем корневой сертификат:
# ./build-ca
В квадратных скобках указаны значения по умолчанию, которые были заданы в файле vars. Если вы хотите оставить значения без изменений, нужно просто нажимать клавишу «Ввод».
Далее генерируем сертификаты сервера и клиента:
# ./build-key-server server
# ./build-key client1
# ./build-key client2
Для каждого клиента нужно сгенерировать отдельные ключи.
Генерируем ключ Диффи — Хеллмана:
# ./build-dh
Cоздаем ключ для tls-аутификации:
# openvpn --genkey --secret keys/ta.key
Все сгенерированные сертификаты и ключи находятся в директории:
/etc/openvpn/easy-rsa/keys/
Копируем сертификаты и ключи сервера в директорию OpenVPN:
# cd keys
# cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/
Для настройки клиента OpenVPN, необходимо скопировать ключи и сертификаты из списка ниже:
client1.crt
client1.key
ca.crt
ta.key
На этом этапе установка OpenVPN закончена. Теперь выполним настройку сервера OpenVPN.
В зависимости от наших потребностей, изменяем настройки сервера OpenVPN:
nano /etc/openvpn/server.conf
local 185.5.248.64 # Внешний ip сервера, указываем если на машине несколько адресов.
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
tls-auth ta.key 0
port 1194
proto udp
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
verb 3
Включаем NAT на OpenVPN сервере
Чтобы использовать OpenVPN для выхода в интернет, на сервере необходимо задать правило для маршрутизации трафика из сети OpenVPN в локальную сеть или сеть интернет-провайдера.
Включаем поддержку IP forwarding, открываем в файл:
# nano /etc/sysctl.conf
В котором необходимо раскомментировать строку:
#net.ipv4.ip_forward=1
Загрузим переменные ядра:
# sysctl -p
Прописываем правила iptables. Нужно разрешить клиентам из подсети 10.8.0.0/24 доступ в интернет, разрешить принимать пакеты из интернета и пропустить трафик клиентов через NAT.
правила IPTABLES
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE