gjf
@gjf

Как сделать ShadowSocks+V2Ray, WebDav и редиректа на базе Apache2?

Всем привет.

Итак, дано:
- VPS с поднятым Apache2 и ShadowSocks, ключи https от Letsncrypt с автоматическим обновлением через certbot
- На Апаче: при прямом доступе - идёт редирект на пустую страницу, по ключу /webdav висит небольшая файловая помойка по WebDav
- Certbot настроен на регулярное обновление, поэтому для него зарезервирован порт 80, апач бегает на 8080 и 443.
- Система защищена от DDOS через ddos-guard.net.
Конфиги Апача:
000-default.conf

ServerName My.Server.Name

ServerAdmin privet@omlet.ru
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

default-ssl.conf


ServerAdmin privet@omlet.ru

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLEngine on

SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder On
SSLOpenSSLConfCmd DHParameters "/etc/ssl/dhparams.pem"
SSLCompression Off

SSLCertificateFile /etc/letsencrypt/live/My.Server.Name/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/My.Server.Name/privkey.pem

SSLCertificateChainFile /etc/letsencrypt/live/My.Server.Name/chain.pem


SSLOptions +StdEnvVars


SSLOptions +StdEnvVars





webdav.conf
Alias /webdav /home/webdav

DAV On
SSLRequireSSL
Options None
AuthType Basic
AuthName WebDAV
AuthUserFile /etc/apache2/.htpasswd

Require method GET POST OPTIONS
Require valid-user



Конфиг Shadowsocks:
config.json
{
"server": ["::0", "0.0.0.0"],
"server_port": 8000,
"password": "********",
"timeout": 300,
"method": "xchacha20-ietf-poly1305",
"no_delay": true,
"fast_open": true,
"reuse_port": true,
"workers": 1,
"nameserver": "127.0.0.1",
"mode": "tcp_and_udp"
}


Всё работает, всё супер.

Задача:
Подключить V2Ray через проксю апача по ключу /v2qq. Точнее:
- Доступ на https://My.Server.Name проксируется на гугл для скрытия настоящего функционала
- Доступ на https://My.Server.Name/webdav делает доступ к Webdav
- Доступ на https://My.Server.Name/v2qq открывает shadowsocks через v2ray


Что я делаю:
1. Добавляю конфиг к Апачу и включаю его:
shadowsocks-v2ray.conf

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:8008/$1 [P,L]

SSLProxyEngine On

ProxyPass https://www.google.com
ProxyPassReverse https://www.google.com



ProxyPass https://127.0.0.1:443
ProxyPassReverse https://127.0.0.1:443



Proxypass 127.0.0.1:8008
ProxyPassReverse 127.0.0.1:8008



2. Изменяю конфиг Shadowsocks (естественно, модуль v2ray-plugin скачан, сидит в /usr/local/bin и shadowsocks его видит и нормально запускает)
config.json
{
"server": ["::1", "127.0.0.1"],
"server_port": 8008,
"password": "*********",
"timeout": 300,
"method": "xchacha20-ietf-poly1305",
"no_delay": true,
"fast_open": true,
"reuse_port": true,
"workers": 1,
"plugin": "v2ray-plugin",
"nameserver": "1.1.1.1",
"plugin_opts": "server;tls;fast-open;path=/v2qq;host=My.Server.Name;cert=/etc/letsencrypt/live/My.Server.Name/cert.pem;
key=/etc/letsencrypt/live/My.Server.Name/privkey.pem;loglevel=none",
"mode": "tcp_only"
}


Итого: ни фига не работает, кроме редиректа на гугл. WebDav, Shadowsocks - в пролёте.

Вопрос: что я делаю не так и как исправить?
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
gjf
@gjf Автор вопроса
Итак, заменил в апаче конфиг:
shadowsocks-v2ray.conf

RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://127.0.0.1:8008/$1" [P,L]
SSLProxyEngine On
ProxyPass /webdav !
ProxyPass / https://www.google.com/
ProxyPassReverse / https://www.google.com/
Proxypass /v2qq 127.0.0.1:8008
ProxyPassReverse /v2qq 127.0.0.1:8008


Итого: проксирование на гугул заработало, WebDav - тоже, но shadowsocks так и не хочет нормально работать.
Проверяю сервак: да открыты там порты на 8008, можно телнетом постучать - всё ок.

ОК, проверяем сам Shadowsocks. Запускаю с таким конфигом:
config.json
{
"server": ["::0", "0.0.0.0"],
"server_port": 8000,
"password": "********",
"timeout": 300,
"method": "xchacha20-ietf-poly1305",
"no_delay": true,
"fast_open": true,
"reuse_port": true,
"workers": 1,
"nameserver": "127.0.0.1",
"plugin": "v2ray-plugin",
"plugin_opts": "server",
"mode": "tcp_and_udp"
}

(понятно, что в клиенте тоже меняю параметры)
Всё отлично, всё бегает!

Из чего понимаю, что проблема - в проксировании сокета с апача на V2Ray.
Понять - понимаю, но решить не получается...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы