- Вы хотите установить OpenVPN на Linux в качестве клиента и направлять определенные маршруты через VPN или через обычный маршрут?
- Предпосылки
- установка OpenVPN
- Базовая настройка (ручное выполнение)
- Управление маршрутизацией по умолчанию: поведение сервера по умолчанию
- Метод 1 — Передача через VPN только некоторых IP-адресов (разделенный туннель)
- Метод 2 — Весь трафик проходит через VPN, но несколько конкретных IP-адресов проходят обычным путем (обходной путь).
- Метод 3 — Маршрутизация на основе политик
- Подключение к systemd (автозапуск)
- Проблемы с DNS и разрешением имен.
- Полный пример файла client.ovpn (образец)
- Советы по безопасности и эксплуатации
- Исправление распространенных ошибок
- Сравнение приложений и советы для разных типов пользователей.
- Резюме и заключение
Вы хотите установить OpenVPN на Linux в качестве клиента и направлять определенные маршруты через VPN или через обычный маршрут?
В этом практическом и техническом пошаговом руководстве мы расскажем, как настроить OpenVPN в качестве клиента на популярных дистрибутивах Linux. Цель — предоставить примеры файлов, скрипты для управления маршрутами (вкл/выкл), методы раздельного туннелирования и обхода IP-адресов, а также советы по аутентификации по имени пользователя и паролю.
Предпосылки
Прежде чем начать, убедитесь, что у вас есть следующее:
- Система Linux (Ubuntu/Debian/CentOS/Fedora/Alma)
- Закрыто OpenVPN Установлено
- Файл конфигурации сервера или файл .ovpn От VPN-провайдера
- Имя пользователя/пароль в случае комбинированной аутентификации (пользователь/пароль + сертификат)
установка OpenVPN
Команды установки для распространенных дистрибутивов:
sudo apt update && sudo apt install openvpn
sudo dnf install openvpn
Базовая настройка (ручное выполнение)
Если файл client.ovpn Если у вас он есть, используйте эту команду для немедленного запуска:
sudo openvpn --config client.ovpnЕсли сервер использует имя пользователя/пароль, и вы не хотите вводить их каждый раз, создайте файл с учетными данными:
sudo tee /etc/openvpn/credentials <<'EOF'
myuser
mypassword
EOF
sudo chmod 600 /etc/openvpn/credentialsВ файле .ovpn Следующая строка должна существовать или быть добавлена:
auth-user-pass /etc/openvpn/credentialsСовет по безопасности: От auth-nocache Используйте эту опцию, чтобы предотвратить кэширование пароля OpenVPN в памяти:
auth-nocachechmod 600 Для повышения уровня безопасности используйте аутентификацию на основе сертификатов (клиентский сертификат) и tls-crypt/tls-auth.
Управление маршрутизацией по умолчанию: поведение сервера по умолчанию
Поведение маршрутов по умолчанию часто определяется сервером:
- Если сервер
redirect-gateway def1Если вы нажмете кнопку, весь ваш трафик будет проходить через VPN (полный туннель). - Чтобы предотвратить принятие сервером маршрута по умолчанию, можно использовать
route-nopullИспользуйте команду, а затем вручную добавьте необходимые маршруты.
Метод 1 — Передача через VPN только некоторых IP-адресов (разделенный туннель)
Если вы хотите, чтобы через VPN передавались только определенные адреса, используйте route-nopull В файле client.ovpn Используйте и добавьте необходимые маршруты.
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0Объяснение: С route-nopull Сервер не принимает маршруты, и вам придётся довольствоваться существующими линиями связи. маршрут Вы перенаправляете трафик на определенные адреса через VPN.
Метод 2 — Весь трафик проходит через VPN, но несколько конкретных IP-адресов проходят обычным путем (обходной путь).
Когда сервер redirect-gateway def1 Если вы хотите, чтобы определенные адреса проходили через маршрут по умолчанию (Интернет), вам необходимо сохранить шлюз по умолчанию и переписать маршруты обхода.
A) Сохраните исходный шлюз перед подключением.
Примеры команд для получения шлюза по умолчанию и устройства перед подключением:
GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')После подъема тун0Добавьте заново IP-адреса, которые вы хотите обойти через шлюз:
sudo ip route add 203.0.113.0/24 via $GW dev $DEV
sudo ip route add 8.8.8.8/32 via $GW dev $DEVб) Автоматизация с помощью скрипта "вверх/вниз"
В client.ovpn Добавьте следующие строки для запуска скриптов:
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.shПример /etc/openvpn/client-up.sh:
#!/bin/bash
echo "$(ip route show default | awk '/default/ {print $3, $5}')" > /var/run/openvpn.origgw
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route add 8.8.8.8/32 via $GW dev $DEV
ip route add 203.0.113.45/32 via $GW dev $DEV
exit 0Пример /etc/openvpn/client-down.sh:
#!/bin/bash
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route del 8.8.8.8/32 via $GW dev $DEV || true
ip route del 203.0.113.45/32 via $GW dev $DEV || true
rm -f /var/run/openvpn.origgw
exit 0Не забудьте запустить скрипты:
sudo chmod +x /etc/openvpn/client-up.sh /etc/openvpn/client-down.sh
Метод 3 — Маршрутизация на основе политик
Вы можете использовать маршрутизацию на основе политик для направления трафика, специфичного для конкретного источника, через VPN.
echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.5/32 lookup vpnroute
sudo ip route add default dev tun0 table vpnrouteЧтобы найти информацию тун0 И виртуальный шлюз:
ip -4 addr show dev tun0
ip route show dev tun0
Подключение к systemd (автозапуск)
Для файлов конфигурации, находящихся по указанному пути. /etc/openvpn/client/ Вы можете запустить модуль systemd:
sudo systemctl start openvpn-client@client
sudo systemctl enable openvpn-client@client
sudo journalctl -u openvpn-client@client -f
Проблемы с DNS и разрешением имен.
Если DNS-запросы передаются сервером, для некоторых дистрибутивов требуется скрипт. update-resolv-conf или координация с systemd-resolved У вас есть.
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-confВ системах, которые systemd-resolved Возможно, потребуется дополнительная настройка.
Полный пример файла client.ovpn (образец)
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
auth-user-pass /etc/openvpn/credentials
auth-nocache
route-nopull
route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0
script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh
Советы по безопасности и эксплуатации
- Создайте файл учетных данных с помощью
chmod 600Защищать. - Из клиентского сертификата и
tls-auth/tls-cryptИспользуется для предотвращения простых DoS-атак. - От auth-nocache Используйте эту функцию, чтобы избежать кэширования пароля в памяти.
- Поддерживайте OpenVPN в актуальном состоянии и используйте современные алгоритмы шифрования/хеширования, такие как...
AES-256-GCMИлиCHACHA20Использовать. - Отслеживайте журналы и используйте systemd с logrotate для ротации журналов.
Для сред, требующих минимальной задержки (торговцы/геймеры), используйте близко расположенные точки или раздельное туннелирование, чтобы направлять только необходимые сервисы для поддержания пинга и стабильности.
Исправление распространенных ошибок
- Соединение не установлено: проверьте порт и протокол в брандмауэре (ufw/iptables/security group).
- DNS не работает: из
update-resolv-confИли ручная регулировка/etc/resolv.confИспользовать. - Маршруты не добавлены: Убедитесь
скрипт-безопасность 2Она включена, и скрипты являются исполняемыми. - После обрыва интернет-соединения: Вероятно, сервер передал маршрут по умолчанию; используйте методы обхода или route-nopull.
Сравнение приложений и советы для разных типов пользователей.
- Трейдеры: Необходимо обеспечить стабильное соединение и высокий пинг; используйте близко расположенные точки и, по возможности, используйте только раздельное туннелирование для подключения к торговому серверу.
- Геймеры: Игровой трафик обычно должен следовать по кратчайшему маршруту; полное туннелирование может увеличить пинг, поэтому направляйте трафик только на игровой сервер или используйте ближайший сервер.
- Администраторы сайта/DevOps: Рекомендуется запускать клиент OpenVPN на серверах с systemd и использовать маршрутизацию на основе политик для конкретных служб.
- Искусственный интеллект/Рендеринг: Для передачи больших объемов данных больше подходят серверы с полнотуннельным режимом работы и высокой пропускной способностью.
Резюме и заключение
Для запуска клиента OpenVPN в Linux обычно требуется соответствующий файл. .ovpn Кроме того auth-user-pass И при необходимости route-nopull Этого достаточно для режима разделенного туннелирования. Чтобы обойти некоторые IP-адреса в режиме полного туннелирования, сохраните предыдущий шлюз и добавьте соответствующие маршруты. Для более сложных сценариев используйте маршрутизацию на основе политик.









