Установка и настройка VPN сервера OpenVPN: различия между версиями
Admin (обсуждение | вклад) Нет описания правки |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 85: | Строка 85: | ||
2. Добавьте базовую конфигурацию: | 2. Добавьте базовую конфигурацию: | ||
<pre> | <pre># Порт и протокол | ||
port 1194 | port 1194 | ||
proto udp | proto udp | ||
# Директории сертификатов | |||
ca ca.crt | ca ca.crt | ||
cert server.crt | cert server.crt | ||
| Строка 95: | Строка 95: | ||
dh dh.pem | dh dh.pem | ||
# Сеть для VPN клиентов | |||
server 10.8.0.0 255.255.255.0 | server 10.8.0.0 255.255.255.0 | ||
# Маршруты для клиентов | |||
push "redirect-gateway def1 bypass-dhcp" | push "redirect-gateway def1 bypass-dhcp" | ||
push "dhcp-option DNS 8.8.8.8" | push "dhcp-option DNS 8.8.8.8" | ||
push "dhcp-option DNS 8.8.4.4" | push "dhcp-option DNS 8.8.4.4" | ||
# Настройки безопасности | |||
tls-auth ta.key 0 | tls-auth ta.key 0 | ||
cipher AES-256-GCM | cipher AES-256-GCM | ||
auth SHA256 | auth SHA256 | ||
# Настройки клиентов | |||
client-to-client | client-to-client | ||
keepalive 10 120 | keepalive 10 120 | ||
comp-lzo | comp-lzo | ||
# Логирование | |||
log-append /var/log/openvpn.log | log-append /var/log/openvpn.log | ||
verb 3 | verb 3 | ||
# Управление клиентами | |||
client-config-dir /etc/openvpn/ccd | client-config-dir /etc/openvpn/ccd | ||
status /var/log/openvpn-status.log | status /var/log/openvpn-status.log | ||
| Строка 125: | Строка 125: | ||
1. Для более продвинутой настройки добавьте: | 1. Для более продвинутой настройки добавьте: | ||
<pre> | <pre># Дополнительные настройки безопасности | ||
tls-version-min 1.2 | tls-version-min 1.2 | ||
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 | tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 | ||
# Настройки производительности | |||
sndbuf 393216 | sndbuf 393216 | ||
rcvbuf 393216 | rcvbuf 393216 | ||
# Настройки сжатия | |||
comp-lzo adaptive | comp-lzo adaptive | ||
# Настройки подключения | |||
max-clients 100 | max-clients 100 | ||
duplicate-cn | duplicate-cn | ||
# Настройки логирования | |||
mute 20 | mute 20 | ||
</pre> | </pre> | ||
| Строка 163: | Строка 163: | ||
2. Добавьте правила: | 2. Добавьте правила: | ||
<pre> | <pre>#!/bin/bash | ||
# Разрешение трафика через VPN | |||
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||
iptables -A FORWARD -i tun+ -j ACCEPT | iptables -A FORWARD -i tun+ -j ACCEPT | ||
| Строка 180: | Строка 171: | ||
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT | iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
# Разрешение OpenVPN порта | |||
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT | iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT | ||
# Сохранение правил | |||
iptables-save > /etc/iptables/rules.v4 | iptables-save > /etc/iptables/rules.v4 | ||
</pre> | </pre> | ||
'''Внимание:''' скрипт только добавляет правила для VPN. Не вставляйте в него <code>iptables -F</code> и <code>iptables -P … ACCEPT</code>: эти команды стирают действующие правила файрвола (в том числе правила UFW и fail2ban) и открывают сервер. Запускайте скрипт один раз: при повторном запуске правила задвоятся. | |||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
| Строка 247: | Строка 240: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
if [ -z "$1" ]; then | if [ -z "$1" ]; then | ||
| Строка 257: | Строка 250: | ||
cd /etc/openvpn/easy-rsa | cd /etc/openvpn/easy-rsa | ||
# Создание клиентского сертификата | |||
./easyrsa gen-req $CLIENT_NAME nopass | ./easyrsa gen-req $CLIENT_NAME nopass | ||
./easyrsa sign-req client $CLIENT_NAME | ./easyrsa sign-req client $CLIENT_NAME | ||
# Создание .ovpn файла | |||
cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF | cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF | ||
client | client | ||
| Строка 452: | Строка 445: | ||
1. '''Ограничение доступа по IP''': | 1. '''Ограничение доступа по IP''': | ||
<pre> | <pre># В server.conf добавьте: | ||
client-config-dir /etc/openvpn/ccd | client-config-dir /etc/openvpn/ccd | ||
</pre> | </pre> | ||
| Строка 470: | Строка 463: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
# Проверка статуса OpenVPN | |||
if ! systemctl is-active --quiet openvpn@server; then | if ! systemctl is-active --quiet openvpn@server; then | ||
echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com | echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com | ||
fi | fi | ||
# Проверка количества подключений | |||
CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST") | CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST") | ||
if [ $CONNECTIONS -gt 50 ]; then | if [ $CONNECTIONS -gt 50 ]; then | ||
| Строка 524: | Строка 517: | ||
OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа. | OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа. | ||
'''Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для критически важных VPN серверов | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних проектов | ||
Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений! | Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений! | ||
Текущая версия от 08:11, 14 ноября 2026
Установка и настройка VPN сервера (OpenVPN)
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
2. Установка OpenVPN
Обновление системы
1. Обновите систему:
sudo apt update
2. Установите необходимые пакеты:
sudo apt install -y openvpn easy-rsa
3. Проверьте версию OpenVPN:
openvpn --version
Создание директорий
1. Создайте директорию для OpenVPN:
sudo mkdir -p /etc/openvpn
2. Создайте директорию для сертификатов:
sudo mkdir -p /etc/openvpn/easy-rsa
3. Скопируйте easy-rsa:
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
4. Установите права доступа:
sudo chown -R root:root /etc/openvpn/easy-rsa
sudo chmod -R 755 /etc/openvpn/easy-rsa
3. Настройка PKI (Public Key Infrastructure)
Инициализация PKI
1. Перейдите в директорию easy-rsa:
cd /etc/openvpn/easy-rsa
2. Инициализируйте PKI:
sudo ./easyrsa init-pki
3. Создайте CA (Certificate Authority):
sudo ./easyrsa build-ca nopass
4. Создайте серверный сертификат:
sudo ./easyrsa gen-req server nopass
sudo ./easyrsa sign-req server server
5. Создайте клиентский сертификат:
sudo ./easyrsa gen-req client1 nopass
sudo ./easyrsa sign-req client client1
6. Создайте Diffie-Hellman параметры:
sudo ./easyrsa gen-dh
7. Создайте TLS ключ:
sudo openvpn --genkey --secret ta.key
Копирование сертификатов
1. Скопируйте сертификаты в директорию OpenVPN:
sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/
sudo cp ta.key /etc/openvpn/
2. Установите права доступа:
sudo chmod 600 /etc/openvpn/server.key
sudo chmod 600 /etc/openvpn/ta.key
sudo chmod 644 /etc/openvpn/ca.crt
sudo chmod 644 /etc/openvpn/server.crt
sudo chmod 644 /etc/openvpn/dh.pem
4. Создание конфигурации сервера
Основная конфигурация
1. Создайте конфигурационный файл сервера:
sudo nano /etc/openvpn/server.conf
2. Добавьте базовую конфигурацию:
# Порт и протокол port 1194 proto udp # Директории сертификатов ca ca.crt cert server.crt key server.key dh dh.pem # Сеть для VPN клиентов server 10.8.0.0 255.255.255.0 # Маршруты для клиентов 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 cipher AES-256-GCM auth SHA256 # Настройки клиентов client-to-client keepalive 10 120 comp-lzo # Логирование log-append /var/log/openvpn.log verb 3 # Управление клиентами client-config-dir /etc/openvpn/ccd status /var/log/openvpn-status.log
Расширенная конфигурация
1. Для более продвинутой настройки добавьте:
# Дополнительные настройки безопасности tls-version-min 1.2 tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 # Настройки производительности sndbuf 393216 rcvbuf 393216 # Настройки сжатия comp-lzo adaptive # Настройки подключения max-clients 100 duplicate-cn # Настройки логирования mute 20
5. Настройка маршрутизации
Включение IP forwarding
1. Включите IP forwarding:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
2. Примените изменения:
sudo sysctl -p
3. Проверьте настройку:
cat /proc/sys/net/ipv4/ip_forward
Настройка iptables
1. Создайте скрипт для настройки iptables:
sudo nano /etc/openvpn/iptables-rules.sh
2. Добавьте правила:
#!/bin/bash # Разрешение трафика через VPN iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT # Разрешение OpenVPN порта iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT # Сохранение правил iptables-save > /etc/iptables/rules.v4
Внимание: скрипт только добавляет правила для VPN. Не вставляйте в него iptables -F и iptables -P … ACCEPT: эти команды стирают действующие правила файрвола (в том числе правила UFW и fail2ban) и открывают сервер. Запускайте скрипт один раз: при повторном запуске правила задвоятся.
3. Сделайте скрипт исполняемым:
sudo chmod +x /etc/openvpn/iptables-rules.sh
4. Запустите скрипт:
sudo /etc/openvpn/iptables-rules.sh
6. Настройка клиентских конфигураций
Создание клиентских конфигураций
1. Создайте директорию для клиентских конфигураций:
sudo mkdir -p /etc/openvpn/clients
2. Создайте базовую клиентскую конфигурацию:
sudo nano /etc/openvpn/clients/client1.ovpn
3. Добавьте содержимое:
client dev tun proto udp remote YOUR_SERVER_IP 1194 resolv-retry infinite nobind persist-key persist-tun cipher AES-256-GCM auth SHA256 verb 3 <ca> -----BEGIN CERTIFICATE----- [Содержимое ca.crt] -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- [Содержимое client1.crt] -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- [Содержимое client1.key] -----END PRIVATE KEY----- </key> <tls-auth> -----BEGIN OpenVPN Static key V1----- [Содержимое ta.key] -----END OpenVPN Static key V1----- </tls-auth>
Создание скрипта для генерации клиентов
1. Создайте скрипт для автоматического создания клиентов:
sudo nano /etc/openvpn/create-client.sh
2. Добавьте содержимое:
#!/bin/bash
if [ -z "$1" ]; then
echo "Usage: $0 <client-name>"
exit 1
fi
CLIENT_NAME=$1
cd /etc/openvpn/easy-rsa
# Создание клиентского сертификата
./easyrsa gen-req $CLIENT_NAME nopass
./easyrsa sign-req client $CLIENT_NAME
# Создание .ovpn файла
cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF
client
dev tun
proto udp
remote $(curl -s ifconfig.me) 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
auth SHA256
verb 3
<ca>
$(cat pki/ca.crt)
</ca>
<cert>
$(cat pki/issued/$CLIENT_NAME.crt)
</cert>
<key>
$(cat pki/private/$CLIENT_NAME.key)
</key>
<tls-auth>
$(cat ta.key)
</tls-auth>
EOF
echo "Client configuration created: /etc/openvpn/clients/$CLIENT_NAME.ovpn"
3. Сделайте скрипт исполняемым:
sudo chmod +x /etc/openvpn/create-client.sh
4. Создайте клиента:
sudo /etc/openvpn/create-client.sh client2
7. Запуск и управление OpenVPN
Запуск OpenVPN
1. Запустите OpenVPN сервер:
sudo systemctl start openvpn@server
2. Включите автозапуск:
sudo systemctl enable openvpn@server
3. Проверьте статус:
sudo systemctl status openvpn@server
Управление сервисом
1. Запуск сервера:
sudo systemctl start openvpn@server
2. Остановка сервера:
sudo systemctl stop openvpn@server
3. Перезапуск сервера:
sudo systemctl restart openvpn@server
4. Проверка статуса:
sudo systemctl status openvpn@server
5. Просмотр логов:
sudo journalctl -u openvpn@server -f
8. Настройка файрвола
Настройка UFW
1. Разрешите OpenVPN порт:
sudo ufw allow 1194/udp
2. Разрешите SSH (если еще не разрешен):
sudo ufw allow ssh
3. Включите UFW:
sudo ufw enable
4. Проверьте статус:
sudo ufw status
Настройка iptables (альтернатива)
1. Создайте правила для OpenVPN:
sudo iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
2. Настройте NAT для VPN трафика:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
3. Сохраните правила:
sudo iptables-save > /etc/iptables/rules.v4
9. Мониторинг и управление
Просмотр подключенных клиентов
1. Просмотр статуса подключений:
sudo cat /var/log/openvpn-status.log
2. Просмотр активных подключений:
sudo netstat -tulnp | grep :1194
3. Просмотр туннельных интерфейсов:
ip addr show tun0
Управление клиентами
1. Отключение клиента:
echo "kill CLIENT_NAME" | sudo nc -U /var/run/openvpn.server.sock
2. Перезапуск сервера:
sudo systemctl restart openvpn@server
3. Просмотр логов в реальном времени:
sudo tail -f /var/log/openvpn.log
10. Настройка клиентских устройств
Windows клиент
1. Скачайте OpenVPN клиент с официального сайта 2. Установите клиент 3. Скопируйте .ovpn файл в папку config 4. Запустите OpenVPN и подключитесь
Linux клиент
1. Установите OpenVPN:
sudo apt install openvpn
2. Скопируйте .ovpn файл:
sudo cp client1.ovpn /etc/openvpn/
3. Подключитесь:
sudo openvpn --config /etc/openvpn/client1.ovpn
Android/iOS клиент
1. Установите OpenVPN Connect из магазина приложений 2. Импортируйте .ovpn файл 3. Подключитесь к VPN
11. Дополнительные настройки
Настройка DNS
1. Установите и настройте DNS сервер:
sudo apt install -y dnsmasq
2. Настройте dnsmasq:
sudo nano /etc/dnsmasq.conf
3. Добавьте настройки:
interface=tun0 dhcp-range=10.8.0.2,10.8.0.10,255.255.255.0,12h
4. Запустите dnsmasq:
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
Настройка логирования
1. Настройте ротацию логов:
sudo nano /etc/logrotate.d/openvpn
2. Добавьте конфигурацию:
/var/log/openvpn.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 644 root root
postrotate
systemctl reload openvpn@server
endscript
}
12. Безопасность
Дополнительные меры безопасности
1. Ограничение доступа по IP:
# В server.conf добавьте: client-config-dir /etc/openvpn/ccd
2. Создание файла конфигурации клиента:
sudo nano /etc/openvpn/ccd/client1
3. Добавьте ограничения:
ifconfig-push 10.8.0.10 10.8.0.9 iroute 192.168.1.0 255.255.255.0
Мониторинг безопасности
1. Создайте скрипт мониторинга:
sudo nano /usr/local/bin/vpn-monitor.sh
2. Добавьте содержимое:
#!/bin/bash
# Проверка статуса OpenVPN
if ! systemctl is-active --quiet openvpn@server; then
echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com
fi
# Проверка количества подключений
CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST")
if [ $CONNECTIONS -gt 50 ]; then
echo "Too many VPN connections: $CONNECTIONS" | mail -s "VPN Alert" admin@example.com
fi
3. Добавьте в crontab:
*/5 * * * * /usr/local/bin/vpn-monitor.sh
13. Устранение неполадок
Частые проблемы
1. OpenVPN не запускается:
- Проверьте конфигурацию:
sudo openvpn --config /etc/openvpn/server.conf --test-crypto
- Проверьте права доступа к сертификатам
- Проверьте логи:
sudo journalctl -u openvpn@server
2. Клиенты не могут подключиться:
- Проверьте файрвол
- Проверьте сетевые настройки
- Проверьте сертификаты клиентов
3. Проблемы с маршрутизацией:
- Проверьте IP forwarding:
cat /proc/sys/net/ipv4/ip_forward
- Проверьте iptables правила
- Проверьте сетевые интерфейсы
Диагностика
1. Проверка статуса:
sudo systemctl status openvpn@server
2. Проверка портов:
sudo netstat -tulnp | grep :1194
3. Проверка туннеля:
ip addr show tun0
4. Проверка маршрутов:
ip route show
Заключение
OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа.
Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:
- Выделенные серверы - для критически важных VPN серверов
- VPS/VDS серверы - для небольших и средних проектов
Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений!