Как настроить прокси-сервер V2Ray на Ubuntu 22.04/20.04

Эта статья покажет вам, как настроить прокси-сервер V2Ray на Ubuntu 22.04/20.04. V2Ray — это легкий, быстрый и безопасный прокси-сервер Socks5, предназначенный для обхода цензуры в Интернете. Мы узнаем, как настроить серверную часть и как настроить клиентскую часть на Ubuntu/Windows.

Особенности V2Ray

  • Легкий и быстрый. На моем тесте я могу смотреть видео 4K на YouTube с использованием V2Ray. YouTube заблокирован в моей стране (Китай).
  • Работает на серверах Linux и большинстве серверов BSD.
  • Есть официальное программное обеспечение клиента V2Ray для Linux, macOS, Windows и BSD. Для Android и iOS также доступны сторонние приложения.
  • Прост в настройке для системных администраторов
  • V2Ray можно настроить на работу на TCP-порту 443 и использовать стандартный протокол TLS для шифрования сетевого трафика. Это выглядит как стандартный протокол HTTPS, что делает его сложным для блокировки.
  • Поддерживает транспортный протокол KCP, который полезен в сетевых средах с высокой потерей пакетов.
  • Поддержка маршрутизации. Вы можете настроить его так, чтобы маршрутизировать трафик только для веб-сайтов/доменов, заблокированных в вашей стране или регионе.
  • Можно запустить его защищенным от Cloudflare CDN.
  • V2Ray — это не просто инструмент для прокси. Это разработано как платформа, которую разработчики могут использовать для создания новых протоколов и инструментов.

Требования

Для выполнения этого учебника вам понадобится VPS (виртуальный частный сервер), который может свободно получать доступ к заблокированным веб-сайтам (за пределами вашей страны или системы фильтрации Интернета). Я рекомендую VPS от Kamatera, которая предлагает:

  • 30-дневную бесплатную пробную версию.
  • Начинается с $4/месяц (1 ГБ ОЗУ)
  • Высокопроизводительный VPS на основе KVM
  • 9 центров обработки данных по всему миру, включая Соединенные Штаты, Канаду, Великобританию, Германию, Нидерланды, Гонконг и Израиль.

Следуйте по ссылке ниже, чтобы создать свой VPS-сервер Linux на Kamatera.

Как только у вас будет работающий VPS на Ubuntu 22.04/20.04, следуйте инструкциям ниже.

Шаг 1: Установка V2Ray на сервере Ubuntu 22.04/20.04

Подключитесь к удаленному серверу Ubuntu по SSH. Если у вас установлена Ubuntu 22.04/20.04, то я рекомендую установить V2Ray вручную, потому что пакет v2ray в репозитории имеет проблему при запуске. Запустите следующую команду для установки зависимостей.

Читайте также:  Выдать колличество символов в Linux

sudo apt install curl unzip

Загрузите официальный установочный скрипт V2Ray. (Обычно я не рекомендую устанавливать программное обеспечение с помощью сторонних скриптов, но это установочный скрипт, предоставленный официальными разработчиками V2Ray, поэтому я его использую.)

curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh

Запустите установочный скрипт.

sudo bash install-release.sh

install v2fly ubuntu

sudo systemctl status v2ray

sudo systemctl status v2ray

Если V2Ray не запущен, перезапустите его.

sudo systemctl restart v2ray

Включите автозапуск при загрузке системы.

sudo systemctl enable v2ray

Шаг 2: Настройка синхронизации времени по NTP

Очень важно, чтобы время на вашем сервере было точным, иначе V2Ray может сбоить. Это необходимо для обеспечения наилучшей безопасности для пользователей. Проверьте время на вашем сервере.

timedatectl

Как видите, время системных часов на моем сервере синхронизировано. Если это не так на вашем сервере, выполните учебник, ссылка на который указана ниже, чтобы настроить синхронизацию времени по NTP.

Шаг 3: Настройка V2Ray на сервере

Отредактируйте файл конфигурации V2Ray с помощью текстового редактора командной строки, такого как Nano.

sudo nano /usr/local/etc/v2ray/config.json

Удалите все из этого файла, затем добавьте следующие строки. Замените id случайными символами в формате UUID. Вы можете использовать онлайн-генератор UUID.

{"log":{"loglevel":"warning","access":"/var/log/v2ray/access.log","error":"/var/log/v2ray/error.log"},"inbounds":[{"port":10000,"listen":"127.0.0.1","protocol":"vmess","settings":{"clients":[{"id":"b831381d-6324-4d53-ad4f-8cda48b30811","alterId":64}]},"streamSettings":{"network":"ws","wsSettings":{"path":"/ray"}}}],"outbounds":[{"protocol":"freedom","settings":{}}]}

Сохраните и закройте файл. Сервер V2Ray будет слушать порт 10000. Затем перезапустите V2Ray, чтобы изменения вступили в силу.

sudo systemctl restart v2ray

Проверьте прослушиваемые порты.

sudo ss -lnpt | grep v2ray
LISTEN 0 4096 127.0.0.1:10000 *:* users:(("v2ray",pid=701205,fd=3))

Шаг 4: Настройка обратного прокси

Установите веб-сервер Nginx.

sudo apt install nginx

Создайте виртуальный хост для V2Ray.

sudo nano /etc/nginx/conf.d/v2ray.conf

Добавьте следующие строки в этот файл. Замените example.com на свое собственное доменное имя. Можно также использовать поддомен.

server { listen 80; server_name example.com; index index.html; root /usr/share/nginx/html/; access_log /var/log/nginx/v2ray.access; error_log /var/log/nginx/v2ray.error; location /ray { # Согласуется с путем конфигурации V2Ray if ($http_upgrade != "websocket") { # Вернуть ошибку 404, если не удалось согласование обновления WebSocket return 404; } proxy_redirect off; proxy_pass http://127.0.0.1:10000; # Предполагается, что WebSocket слушает на localhost на порту 10000 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; # Показывать реальный IP в v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

Сохраните и закройте файл. Затем протестируйте конфигурацию Nginx.

sudo nginx -t

Если тест прошел успешно, перезагрузите Nginx.

sudo systemctl reload nginx

Шаг 5: Включение HTTPS

Включим HTTPS, чтобы ваша брандмауэр не знал, что вы используете прокси.

Установите последнюю версию клиента Let’s Encrypt certbot из Snap store.

sudo apt install snapd sudo snap install certbot --classic

Затем выполните следующую команду для получения бесплатного сертификата Let’s Encrypt.

Читайте также:  Установка расширений PHP на FreeBSD

sudo /snap/bin/certbot --webroot -i nginx --agree-tos --hsts --staple-ocsp -d example.com -e [email protected] -w /usr/share/nginx/html/

Как только он будет получен, он автоматически установится для вашего веб-сервера Nginx.

Шаг 6: Настройка брандмауэра

Если вы используете брандмауэр iptables на вашем сервере, выполните следующую команду, чтобы разрешить трафик на TCP-порт 443.

sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT

Если вы используете брандмауэр UFW, выполните следующие команды:

sudo ufw allow 443/tcp

Шаг 7: Установка и настройка V2Ray на клиентском компьютере

Linux Desktop

Пожалуйста, выполните ту же процедуру, что и в шаге 1, чтобы установить V2Ray на Linux-рабочем столе. После этого отредактируйте файл конфигурации.

sudo nano /usr/local/etc/v2ray/config.json

Удалите все из этого файла, затем добавьте следующие строки.

{"inbounds":[{"port":1090,"listen":"127.0.0.1","protocol":"socks","sniffing":{"enabled":true,"destOverride":["http","tls"]},"settings":{"auth":"noauth","udp":false}}],"outbounds":[{"protocol":"vmess","settings":{"vnext":[{"address":"example.com","port":443,"users":[{"id":"b831381d-6324-4d53-ad4f-8cda48b30811","alterId":0}]}}],"streamSettings":{"network":"ws","security":"tls","wsSettings":{"path":"/ray"}}}

Параметр id на клиенте V2Ray должен совпадать с параметром id на сервере V2Ray. Это как предварительно согласованный пароль. Параметр alterId должен быть установлен в 0, чтобы клиент V2Ray включил алгоритм шифрования AEAD.

Сохраните и закройте файл. Затем перезапустите V2Ray, чтобы изменения вступили в силу.

sudo systemctl restart v2ray

Проверьте прослушиваемые порты.

sudo ss -lnpt | grep v2ray
LISTEN 0 4096 127.0.0.1:1090 0.0.0.0:* users:(("v2ray",pid=495211,fd=3))

Клиент V2Ray слушает порт 1090 (для веб-браузеров) и будет перенаправлять запросы на сервер V2Ray, который слушает порт 10086.

Windows

Пользователи Windows могут загрузить клиент V2Ray со страницы его релизов на GitHub. Щелкните ссылку Show all assets, затем вы найдете ZIP-файл V2Ray для Windows.

Распакуйте файл. Вы найдете файл config.json. Используйте NotePad или ваш редактор текста по умолчанию для открытия этого файла. Удалите все из этого файла, затем добавьте следующие строки.

{"inbounds":[{"port":1090,"listen":"127.0.0.1","protocol":"socks","sniffing":{"enabled":true,"destOverride":["http","tls"]},"settings":{"auth":"noauth","udp":false}}],"outbounds":[{"protocol":"vmess","settings":{"vnext":[{"address":"example.com","port":443,"users":[{"id":"b831381d-6324-4d53-ad4f-8cda48b30811","alterId":0}]}}],"streamSettings":{"network":"ws","security":"tls","wsSettings":{"path":"/ray"}}}

Замените server_ip_address на ваш реальный IP-адрес сервера. Параметр id на клиенте V2Ray должен совпадать с параметром id на сервере V2Ray. Это как предварительно согласованный пароль.

Сохраните и закройте файл. Затем откройте PowerShell и выполните следующую команду для запуска v2ray, предполагая, что папка v2ray-windows-64 извлечена в ваш рабочий стол.

.\\Desktop\\v2ray-windows-64\\v2ray run

Шаг 8: Настройка веб-браузера для использования прокси V2Ray

Для того чтобы ваша программа использовала прокси V2Ray, программа должна поддерживать SOCKS-прокси. Программы, такие как Firefox, Google Chrome и Dropbox, позволяют пользователям использовать прокси. Я покажу вам, как настроить Firefox и Google Chrome.

Firefox

В Firefox перейдите в Edit > Preferences > General (или Tools -> Options -> General). Затем прокрутите вниз до конца и нажмите Settings в Network Setting.

Читайте также:  Поднимаем FTP-сервер в Linux

В окне Connection Settings выберите manual proxy configuration. Затем выберите SOCKS v5, потому что V2Ray — это SOCKS5-прокси. Введите 127.0.0.1 в поле SOCKS Host и 1090 в поле порта. Убедитесь, что включена опция Proxy DNS when using SOCKS v5. Нажмите OK, чтобы применить эти изменения.

Firefox v2ray proxy settings

Google Chrome

Рекомендую установить расширение Proxy SwitchyOmega для управления прокси в Google Chrome.

google chrome Proxy SwitchyOmega

После установки расширения в Google Chrome, настройте прокси-сервер следующим образом:

  • Выберите протокол SOCKS5.
  • Установите адрес сервера как 127.0.0.1.
  • Установите номер порта как 1090.

google chrome v2ray proxy settings

Примените изменения. Затем щелкните значок расширений в правом верхнем углу и выберите Proxy SwitchyOmega.

proxy swithy omega shadowsocks-libev

По умолчанию SwithyOmega использует настройки прокси операционной системы. Нам нужно изменить это с системного прокси на прокси.

switchyomega default proxy

Теперь ваш прокси должен работать.

Шаг 9: Тест DNS утечки

Перейдите на dnsleaktest. com. Вы увидите IP-адрес вашего сервера V2Ray, что указывает на то, что ваш прокси V2Ray работает.

v2ray dns leak test

Щелкните «Стандартный тест». Убедитесь, что ваш провайдер интернет-услуг не отображается в результатах теста.

Шаг 10: Включение TCP BBR

TCP BBR — это алгоритм управления перегрузкой TCP, который может существенно улучшить скорость соединения. Запустите следующие две команды для включения алгоритма TCP BBR.

echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.d/60-custom.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.d/60-custom.conf

Затем примените изменения с помощью следующей команды. Опция -p загрузит настройки sysctl из файла /etc/sysctl.d/60-custom.conf. Эта команда сохранит наши изменения после перезагрузок системы.

sudo sysctl -p /etc/sysctl.d/60-custom.conf

Устранение неполадок

Если V2Ray не работает, проверьте журналы в каталоге /var/log/v2ray/ (access.log и error.log).

Если вы видите следующую ошибку, вероятно, потому что время клиента неверное. Пожалуйста, настройте синхронизацию времени.

rejected proxy/vmess/encoding: failed to read request header > websocket: close 1000 (normal)

Если вы столкнулись с следующей ошибкой, установите alterId в 0 в файле конфигурации клиента V2Ray, чтобы включить AEAD.

invalid user: VMessAEAD is enforced and a non VMessAEAD connection is received.

Клиент iOS

OneClick — бесплатный клиент V2Ray для пользователей iOS.

После установки OneClick откройте приложение, выберите add configuration -> VMESS, затем используйте следующие параметры.

  • Remarks: Введите что угодно в это текстовое поле.
  • Address/IP: Введите ваш домен, как указано в файле конфигурации Nginx. (example.com)
  • Port: 443
  • ID/UUID: Введите UUID, как указано в файле конфигурации сервера V2Ray.
  • Alert ID: 0
  • Включите Enable TLS.
  • Выберите ws в настройках потока.
  • Host: Введите ваш домен, как указано в файле конфигурации Nginx. (example.com)
  • Path: /ray
  • Оставьте другие поля пустыми.

Примечание: Похоже, что OneClick не поддерживает VMESS-AEAD. Вам нужно отключить его на сервере V2Ray.

sudo systemctl edit v2ray.service

Введите следующие строки.

[Service] Environment=V2RAY_VMESS_AEAD_FORCED=false

Сохраните и закройте файл. Затем перезапустите V2Ray.

sudo systemctl restart v2ray

Глобальный режим на Linux Desktop

Если вы используете Desktop Linux, вы можете использовать прокси V2Ray для всего вашего интернет-трафика (не только для трафика веб-браузера). Перейдите в System settings -> Network -> Network Proxy.

desktop linux network proxy

Затем выберите Manual -> Sock Host (127.0.0.1: 1090). Он автоматически определит протокол SOCK (SOCKS4 или SOCKS5).

linux desktop v2ray proxy

Как обновить V2Ray

Просто выполните скрипт установки снова.

sudo bash install-release.sh