Последняя версия V2ray в 2023 году использует двойной WS+TLS для создания туннеля для преодоления экранирования и помех!
2022-11-28 · 58547 · 34 min# 前言
За это время по известным причинам узел V2ray, который я построил в Tencent Cloud, необъяснимым образом начал блокировать порты. Вот моя схема топологии сети:
Вначале я также сменил порты в ответ на необъяснимую блокировку. Позже скорость блокировки становилась все быстрее и быстрее, и как только она была настроена, ее нельзя было использовать сразу, поэтому в принципе можно было определить, что схема использования V2ray через чистый протокол TCP была объявлена мертвой.
# 发现& Решить проблему
После тщательного анализа я обнаружил, что IP-адрес сервера не был занесен в черный список. Однако, пока туннель, построенный по чистому протоколу TCP V2ray, запущен, его можно использовать в обычном режиме в течение нескольких минут, но когда время истекло, его нельзя подключить.
Хотя GFW всегда блокирует мои порты, я могу бороться с этим, постоянно меняя порты, но такая частая смена портов не является элегантным решением.
Поэтому я исследовал его и попытался собрать WS + TLS, и стабильность чувствовала себя хорошо при доступе на материке, а схема топологии выглядит следующим образом:
V2ray позволяет использовать протокол TLS для оболочки трафика, так что при зондировании GFW он ведет себя как обычное соединение.
Чтобы использовать его более плавно и уменьшить задержку, я использовал двойной дизайн WS + TLS, схема топологии выглядит следующим образом:
После такой многослойной матрешки входящий трафик транзитной машины на материке уже представляет собой зашифрованный текст, зашифрованный TLS при прохождении через GFW, и расшифрованный исходящий после того, как трафик достигнет агента, с учетом как безопасности, так и скорости. Вот мой учебник по подготовке.
# 如何搭建双重WS+TLS
Здесь больше шагов, и шаги «до» и «после» должны быть связаны, поэтому я разделил его на три шага, и мне просто нужно без проблем следовать шагам. Однако помните, что информацию о конфигурации необходимо проверять несколько раз.
Нужно подготовить: ✅Терпение. ✅SSL-сертификат ✅ Зарубежные самолеты-агенты в материковом Китае ✅ Средний специальный самолет в материковом Китае
1. Получите SSL-сертификат
Этот шаг вам нужно сделать в соответствии с реальной ситуацией, я использую здесь простейший DNSPod. Как зарегистрировать аккаунт Tencent Cloud, не буду вдаваться в подробности, переходим сразу на страницу консольного SSL-сертификата (отмечена звездочкой):
Если вы не можете найти его, вы также можете нажать на ссылку: https://console.cloud.tencent.com/ssl
Нажмите «Мои сертификаты» в левой части открывшейся страницы, а затем нажмите [Подать заявку на бесплатный сертификат] (в красном поле):
Выберите «Целостность Азии» слева, нажмите «ОК», чтобы продолжить:
Правильно заполните красное поле в соответствии с вашей собственной информацией:
После того, как вы заполнили все это, нажмите «Отправить заявку». Подождав некоторое время, проверка пройдет, и если аудит не удастся, появится подробное сообщение об ошибке, которое можно изменить в соответствии с запросом.
Когда проверка пройдена, вы можете увидеть сертификат как прошедший аудит на странице [Мои сертификаты], нажмите кнопку загрузки справа:
На всплывающей странице нажмите кнопку загрузки в разделе Nginx:
После извлечения загруженного сжатого пакета найдите два файла в красном поле, которые являются файлами сертификатов **, которые нам понадобятся позже.
2. Настройка агента
После выполнения вышеуказанных шагов у нас на руках есть сертификат, а затем мы можем развернуть агент отладки. Здесь я использую корейский облегченный узел Tencent Cloud 2c2G, а гонконгский узел больше не имеет самого дешевого легкого для покупки. Что касается того, как войти на сервер, вы можете использовать любой инструмент ssh, я не буду много вводить.
2.1 Установка v2ray
Прежде всего, это нормально для установки V2ray, потому что он может напрямую получать доступ к Интернету на агенте, вы можете напрямую использовать следующий код для быстрой установки: '''HTML Установите v2ray bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
Установите geoip.dat и geosite.dat bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh)
Добавьте V2ray в системные службы и установите загрузочный запуск:
systemctl enable v2ray && systemctl start v2ray
#### 2.2 Установка Nginx
Далее нам нужно установить компонент Nginx для обработки TLS-трафика и расшифровать его в V2ray. Здесь я использую скрипт в один клик, предоставленный LNMP, но нам не нужны mysql и php, только Nginx.
Поскольку компиляция и установка занимает определенное время, в течение которого ssh-соединение может быть отключено из-за помех GFW, нам нужно использовать screen, чтобы процесс компиляции не прерывался, и использовать следующий код для включения screen:
screen -S nginx
Если вы говорите, что в вашей системе не установлен экран, установите его:
sudo apt-get install screen -y
После открытия вводим в командной строке следующую команду для установки nginx, скрипт нужно поработать некоторое время, на этот раз можно выпить чашечку кофе, или посмотреть другие статьи ☺, которые я написал
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh nginx
#### 2.3 Настройка SSL-сертификатов
Если ошибок на вышеописанных шагах нет, значит, Nginx установлен, а далее нам нужно настроить SSL-сертификат.
Сначала используйте обычное программное обеспечение sftp для импорта файла сертификата на сервер, здесь я использую termius, после импорта файла используйте команду 'ls' в каталоге, чтобы проверить, существует ли файл.
ls test.learn2.cn.key test.learn2.cn_bundle.pem
Далее добавляем сайт с помощью lnmp и настраиваем SSL-сертификат:
'''HTML
lnmp vhost add
+-------------------------------------------+
| Менеджер LNMP, автор Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Пожалуйста, введите домен (пример: www.lnmp.org): test.learn2.cn
Ваш домен: test.learn2.cn
Введите еще доменное имя (пример: lnmp.org sub.lnmp.org):
Список доменов: test.learn2.cn
Пожалуйста, введите каталог для домена: test.learn2.cn
Каталог по умолчанию: /home/wwwroot/test.learn2.cn:
Каталог виртуального хоста: /home/wwwroot/test.learn2.cn
Разрешить правило перезаписи? (да/нет)
Вы выбираете переписать: нет
Включить PHP Pathinfo? (да/нет)
Отключите pathinfo.
Разрешить доступ к журналу? (да/нет)
Отключите журнал доступа.
Включить IPv6? (да/нет)
Отключена поддержка IPv6 в текущем виртуальном хосте.
Добавить SSL-сертификат (да/нет) y
1: Используйте свой собственный SSL-сертификат и ключ
2: Используйте Let's Encrypt для создания SSL-сертификата и ключа
3: Используйте BuyPass для создания SSL-сертификата и ключа
4: Используйте ZeroSSL для создания SSL-сертификата и ключа
Введите 1, 2, 3 или 4: 1
Пожалуйста, введите полный путь к файлу SSL-сертификата:
Пожалуйста, введите полный путь к файлу ключа SSL-сертификата:
Доменное имя вводится в соответствии с фактическим вводом, за которым следует возврат каретки, заполните Y в конце «Добавить SSL-сертификат», следующие две входные части полностью заполняют путь к файлу сертификата, первая - это файл pem, вторая - файл ключа, а затем вы можете ввести напрямую. Он автоматически настроит его для вас.
2.4 Изменение конфигурационного файла веб-сайта
В настоящее время, несмотря на то, что SSL-сертификат настроен, невозможно использовать httpss://+ip, потому что мы не настроили разрешение доменных имен. Здесь, в зависимости от поставщика услуг доменных имен, который вы используете, метод работы отличается, вам нужно только добавить запись, то есть разрешить доменное имя в IP-адрес прокси-сервера.
Наконец, нам нужно изменить конфигурационный файл веб-сайта, чтобы расшифровать полученные пакеты и переслать их в V2ray.
Откройте файл конфигурации веб-сайта с помощью обычного текстового редактора, и я использую «nano» для своей демонстрации здесь:
nano /usr/local/nginx/conf/vhost/ ваш домен.conf
После открытия с помощью редактора nano нажмите клавиши со стрелками, чтобы найти строку, похожую на следующее поле.
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
Найдя, вставьте код под ним.
'''HTML location /ray { proxyredirect выключен; proxypass http://127.0.0.1:10000; proxyhttpversion 1.1; proxysetheader Обновление $httpupgrade; proxysetheader Подключение «апгрейд»; proxysetheader Хозяин $host; # Показать реальный IP в доступе v2ray.log proxysetheader X-Real-IP $remoteaddr; proxysetheader X-Forwarded-For $proxyaddxforwardedfor; }
Наконец, измените порт SSL с 443 на 10001:
сервер { прослушивать 10001 SSL http2;
Некоторые новички могут его не понять, поэтому вы можете вставить код в соответствии со следующей картинкой:
![](https://pic.saltyleo.com/i/171082811661.webp)
Наконец, после сохранения файла перезапустите Nginx с помощью команды: 'lnmp reload'.
#### 2.5 Настройка файла конфигурации входящего трафика V2ray
Далее мы настраиваем входящий конфигурационный файл для агента. Первый — получить GUID, который можно понимать как ключ при подключении к V2ray.
Существует веб-сайт, который можно создать напрямую: [Инструмент генерации GUID] (https://www.iamwawa.cn/guid.html)
Затем откройте конфигурационный файл с помощью обычного редактора, и я продолжу использовать nano в качестве демонстрации здесь:
nano /usr/local/etc/v2ray/config.json
Скопируйте и вставьте следующий код в файл config.json и введите идентификатор GUID, созданный ранее в идентификаторе.
{ "входящие": [ { "порт": 10000, "listen":"127.0.0.1", "протокол": "vmess", "settings": { "клиенты": [ { "id": "Введите сгенерированный GUID здесь", "alterId": 64 } ] }, "streamSettings": { "сеть": "ws", "wsSettings": { "path": "/ray" } } } ], "исходящие": [ { «протокол»: «свобода», "settings": {} } ] }
Сохраните файл и перезапустите V2ray:
Перезапуск службы V2ray
После перезапуска V2ray используйте команду «service v2ray status», чтобы проверить состояние V2ray:
![](https://pic.saltyleo.com/i/171082852088.webp)
Пока активная панель не сообщает об ошибке, это означает, что V2ray запускается нормально.
#### 2.6 тест
Прежде всего, нам нужно подтвердить следующие моменты, и после подтверждения мы можем использовать такой инструмент, как V2rayN, для проверки соединения.
** Завершено ли разрешение доменных имен? **
** Конфигурационный файл Nginx сохраняется и перезапускается? **
** Сохраняется ли и перезапускается ли конфигурационный файл V2ray? **
Если все подтвердится, можно переходить к сеансу тестирования.
Сначала проверьте, работает ли Nginx, используйте браузер для доступа к «https:// вашего домена» Если все в порядке, это должно быть изображение ниже:
![](https://pic.saltyleo.com/i/171082898654.webp)
Затем, чтобы проверить, работает ли V2ray, используйте браузер для доступа к «https:// вашего домена/луча». Если все в порядке, все должно быть так, как показано на следующем изображении:
![](https://pic.saltyleo.com/i/171082904730.webp)
Если все в порядке, скопируйте следующий код:
vmess: ew0KICAidiI6ICIyIiwNCiAgInBzIjogIuS7o+eQhuacuua1i+ivlSIsDQogICJhZGQiOiAi5L2g55qE5Z+ f5ZCNIiwNCiAgInBvcnQiOiAiNDQzIiwNCiAgImlkIjogIuS9oOeahEdVSUQiLA0KICAiYWlkIjogIjAiLA0KICAic2N5IjogImF1dG8iLA0KICAibmV0IjogIndzIiwNCiAgInR5cGUiOiAibm9uZSIsDQogICJob3N0IjogIuS9oOeahOWfn +WQjSIsDQogICJwYXRoIjogIi9yYXkiLA0KICAidGxzIjogInRscyIsDQogICJzbmkiOiAiIg0KfQ==
Откройте V2rayN 》 Нажмите Импорт сервера из буфера обмена, чтобы импортировать файл конфигурации.
![](https://pic.saltyleo.com/i/171082802890.webp)
Дважды щелкните тест агента, измените параметры во всплывающем окне на параметры, а затем сохраните.
![](https://pic.saltyleo.com/i/171082777824.webp)
Наконец, откройте YouTube и проверьте, можете ли вы уже использовать одноуровневый TLS.
### 3. Конфигурация транзита
Внутренние транзитные машины не могут получить доступ к GitHub, поэтому его метод установки v2ray отличается, сначала перейдите на GitHub, чтобы загрузить автономный установочный пакет v2ray:
v2ray-core: [https://github.com/v2fly/v2ray-core/releases](https://github.com/v2fly/v2ray-core/releases)
Найдите файл «v2ray-linux-64.zip», загрузите его и сохраните для передачи.
#### 3.1 Установка v2ray
На предыдущем шаге пакет автономной установки был сохранен на транзитном компьютере, но вам по-прежнему нужен сценарий установки, используйте следующую команду, чтобы загрузить сценарий установки:
wget https://s.learn2.cn/file/install-release.sh
Установите v2ray в автономном режиме с помощью следующей команды:
bash install-release.sh --local ./v2ray-linux-64.zip
Добавьте V2ray в системные службы и установите загрузочный запуск:
systemctl enable v2ray && systemctl start v2ray
#### 3.2 Установка nginx
Те же шаги, что и прокси-машину, я приклею ее:
Используйте следующий код, чтобы включить экран:
screen -S nginx
Если вы говорите, что в вашей системе не установлен экран, установите его:
sudo apt-get install screen -y
После открытия вводим следующую команду в командной строке для установки nginx, скрипт нужно поработать некоторое время, на этот раз вы можете выпить чашечку кофе или посмотреть другие статьи, которые я написал ~
wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz -cO lnmp1.9.tar.gz && tar zxf lnmp1.9.tar.gz && cd lnmp1.9 && ./install.sh nginx
#### 3.3 Настройка SSL-сертификатов
Этот шаг по-прежнему такой же, как и у прокси-машины.
Используйте свое обычное программное обеспечение sftp для импорта файла сертификата на сервер, здесь я использую termius, после импорта файла используйте команду 'ls' в каталоге, чтобы проверить, существует ли файл.
ls test.learn2.cn.key test.learn2.cn_bundle.pem
Далее добавляем сайт с помощью lnmp и настраиваем SSL-сертификат:
'''HTML
lnmp vhost add
+-------------------------------------------+
| Менеджер LNMP, автор Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Пожалуйста, введите домен (пример: www.lnmp.org): test.learn2.cn
Ваш домен: test.learn2.cn
Введите еще доменное имя (пример: lnmp.org sub.lnmp.org):
Список доменов: test.learn2.cn
Пожалуйста, введите каталог для домена: test.learn2.cn
Каталог по умолчанию: /home/wwwroot/test.learn2.cn:
Каталог виртуального хоста: /home/wwwroot/test.learn2.cn
Разрешить правило перезаписи? (да/нет)
Вы выбираете переписать: нет
Включить PHP Pathinfo? (да/нет)
Отключите pathinfo.
Разрешить доступ к журналу? (да/нет)
Отключите журнал доступа.
Включить IPv6? (да/нет)
Отключена поддержка IPv6 в текущем виртуальном хосте.
Добавить SSL-сертификат (да/нет) y
1: Используйте свой собственный SSL-сертификат и ключ
2: Используйте Let's Encrypt для создания SSL-сертификата и ключа
3: Используйте BuyPass для создания SSL-сертификата и ключа
4: Используйте ZeroSSL для создания SSL-сертификата и ключа
Введите 1, 2, 3 или 4: 1
Пожалуйста, введите полный путь к файлу SSL-сертификата:
Пожалуйста, введите полный путь к файлу ключа SSL-сертификата:
Доменное имя вводится в соответствии с фактическим вводом, за которым следует возврат каретки, заполните Y в конце «Добавить SSL-сертификат», следующие две входные части полностью заполняют путь к файлу сертификата, первая - это файл pem, вторая - файл ключа, а затем вы можете ввести напрямую. Он автоматически настроит его для вас.
3.4 Изменение конфигурационного файла веб-сайта
Этот шаг сильно отличается от прокси-машины, потому что здесь мы используем один и тот же SSL-сертификат, но доменное имя не может разрешать два IP-адреса одновременно, поэтому нашу внутреннюю транзитную машину не нужно разрешать. Используйте IP-адрес при заполнении параметров подключения и пропустите проверку сертификата Выберите True.
Откройте файл конфигурации веб-сайта с помощью обычного текстового редактора, и я использую «nano» для своей демонстрации здесь:
nano /usr/local/nginx/conf/vhost/ ваш домен.conf
После открытия с помощью редактора nano нажмите клавиши со стрелками, чтобы найти строку, похожую на следующее поле.
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
Найдя, вставьте код под ним.
location /ray {
proxy_redirect выключен;
proxy_pass http://127.0.0.1:10000;
proxy_http_version 1.1;
proxy_set_header Обновление $http_upgrade;
proxy_set_header Подключение «апгрейд»;
proxy_set_header Хозяин $host;
# Показать реальный IP в доступе v2ray.log
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Наконец, измените порт SSL с 443 на 10001:
сервер
{
прослушивать 10001 SSL http2;
Некоторые новички могут его не понять, поэтому вы можете вставить код в соответствии со следующей картинкой:
Наконец, после сохранения файла перезапустите Nginx с помощью команды: 'lnmp reload'.
3.5 Настройка входящих и исходящих конфигурационных файлов V2ray
Чтобы упростить задачу, я сохранил GUID в соответствии с агентом на этом шаге, и вы также можете использовать новый GUID.
Откройте конфигурационный файл с помощью обычного редактора, и я продолжу использовать nano в качестве демонстрации здесь:
nano /usr/local/etc/v2ray/config.json
Скопируйте и вставьте следующий код в файл config.json и введите идентификатор GUID, созданный ранее в идентификаторе.
{
"входящие": [
{
"порт": 10000,
"listen":"127.0.0.1",
"протокол": "vmess",
"settings": {
"клиенты": [
{
"id": "Введите сгенерированный GUID здесь",
"alterId": 64
}
]
},
"streamSettings": {
"сеть": "ws",
"wsSettings": {
"path": "/ray"
}
}
}
],
"исходящие": [ {
"tag": "proxy",
"протокол": "vmess",
"settings": {
"vnext": [
{
"address": "доменное имя агента",
"порт": 10001,
"пользователи": [
{
"id": "Введите сгенерированный GUID здесь",
"alterId": 0,
"Безопасность": "Авто"
}
]
}
]
},
"streamSettings": {
"сеть": "ws",
"Безопасность": "TLS",
"tlsSettings": {
"allowInsecure": true,
"serverName": "Доменное имя агента"
},
"wsSettings": {
"path": "/ray",
"headers": {
"Host": "Доменное имя агента"
}
}
}
},
{
«протокол»: «свобода»,
"settings": {}
}
]
}
Сохраните файл и перезапустите V2ray:
Перезапуск службы V2ray
После перезапуска V2ray используйте команду «service v2ray status», чтобы проверить состояние V2ray:
Пока активная панель не сообщает об ошибке, это означает, что V2ray запускается нормально.
3.6 Тест
Опять же, как и раньше, если все в порядке, можно приступать к тестированию.
Скопируйте следующий код:
vmess: ew0KICAidiI6ICIyIiwNCiAgInBzIjogIuS7o+eQhuacuua1i+ivlSIsDQogICJhZGQiOiAi5L2g55qE5Z+ f5ZCNIiwNCiAgInBvcnQiOiAiNDQzIiwNCiAgImlkIjogIuS9oOeahEdVSUQiLA0KICAiYWlkIjogIjAiLA0KICAic2N5IjogImF1dG8iLA0KICAibmV0IjogIndzIiwNCiAgInR5cGUiOiAibm9uZSIsDQogICJob3N0IjogIuS9oOeahOWfn +WQjSIsDQogICJwYXRoIjogIi9yYXkiLA0KICAidGxzIjogInRscyIsDQogICJzbmkiOiAiIg0KfQ==
Откройте V2rayN 》 Нажмите Импорт сервера из буфера обмена, чтобы импортировать файл конфигурации.
Дважды щелкните тест агента, измените параметры во всплывающем окне на параметры, а затем сохраните.
Наконец, откройте YouTube, чтобы проверить скорость вашего интернета.
# Постскриптум
На этом этапе вы уже должны иметь возможность использовать двойной прокси-сервер TLS + WS, и вы можете работать в Интернете практически без помех. Но таким образом, ваша общая скорость интернета - это самая высокая скорость загрузки отечественной прокси-машины, я здесь 30M, хотя это не очень много, но нормального использования все же достаточно.
Уведомление об авторском праве :
Эта статья написана SaltyLeo. Если в содержимом есть неточности, пожалуйста, оставьте комментарий. При цитировании или публикации этой статьи, пожалуйста, придерживайтесь условий лицензии CC BY-NC-SA: указание авторства, некоммерческое использование и совместное распространение в том же виде!Комментарий :
Читать далее :
Несколько советов по использованию Hyper-V.
Основное содержание этой статьи — исправление ошибок веб-сайта, оптимизация загрузки системы и настройка стратегии кэширования.
Пиковая фактическая скорость загрузки широкополосного доступа 1M составляет 128 КБ/с.
Мысли о публичном облаке и частном облаке, а также руководство по быстрому развертыванию Cloudreve.
Полезные советы по iptables
Популярные теги
Другие языки
Информация о сайте
Теги: 164
Просмотры страниц: 12,888,652
загрузка занимает время: 62.26 ms
Ver : 3.0.1