Начнем установку и настройку openvpn с обновления системы
sudo apt-get update
Установим основные компоненты
sudo apt-get install openvpn easy-rsa
Создадим папку для генерации ключей
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
source vars
./clean-all
Генерируем ключи для сервера
./build-ca
./build-key-server serverv1
На вопросы можно отвечать рандомно
Сгенерируем ключи для пользователя
./build-key user1
Отвечаем как угодно
Создаем ключ Хельмана, создаётся долго (от 3 до 20 минут)
./build-dh
Теперь ключ tls auth
openvpn --genkey --secret keys/ta.key
Перейдем в папку с ключами и перенесем серверные ключи
cd ~/openvpn-ca/keys sudo cp ca.crt serverv1.crt serverv1.key ta.key dh2048.pem /etc/openvpn
Создадим папку для пользователя и добавим ключи пользователя
sudo mkdir /etc/openvpn/ccd cp ca.crt ca.key ta.key user1.crt user1.csr user1.key /etc/openvpn/ccd
Теперь конфигурационный файл для сервера
nano server.conf
port 1194 proto udp duplicate-cn dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/serverv1.crt key /etc/openvpn/serverv1.key dh /etc/openvpn/dh2048.pem tls-auth /etc/openvpn/ta.key 0 cipher AES-128-CBC server 10.0.0.0 255.255.255.0 comp-lzo keepalive 10 120 persist-key persist-tun client-config-dir /etc/openvpn/ccd sndbuf 0 rcvbuf 0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8"
Тестовый запуск
openvpn --config server.conf
Теперь нужно перенаправить траффик через vpn
Раскомментировать строку net.ipv4.ip_forward=1 в файле /etc/sysctl.conf
nano /etc/sysctl.conf Раскомментировать net.ipv4.ip_forward=1
Чтобы изменения вступили в силу без перезагрузки
echo 1 >> /proc/sys/net/ipv4/conf/all/forwarding
Укажем серверу куда перенаправлять трафик
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o venet0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o venet0:0 -j MASQUERADE
-venet0 это устройство сетевая карта
Поместим в автозагрузку сервера эти правила
nano /etc/rc.local
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o venet0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o venet0:0 -j MASQUERADE openvpn --config /etc/openvpn/server.conf
После перезагрузки сервера у нас заработает наш конфиг сервера
Проверка перенаправления
iptables -L -t nat
Создаем конфиг для юзера
nano ~/openvpn-ca/keys/user1.conf
client dev tun proto udp remote 88.88.88.88 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert user1.crt key user1.key tls-auth ta.key 1 cipher AES-128-CBC ns-cert-type server comp-lzo rcvbuf 0
Копируем ключи для клиента
cp ~/openvpn-ca/keys/ca.key ta.key user1.conf user1.crt user1.csr user1.key ca.crt /etc/ccd/
Забираем папку клиента себе на устройство. Для открытия openvpn под windows или Android необходимо переименовать файл user1.conf в в user1.ovpn. Для полноценной работы все ключи и конфиг должны быть в одной папке