freedom_threand

ss+v2ray with tls behind nginx over cf

Mar 23rd, 2019 (edited)
2,409
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Пердолинг shadowsocks с v2ray плагином через cloudflare в tls режиме с nginx перед ss для Ubuntu.
  2.  
  3. 0. Подготовка:
  4. Получаем фриномовский домен и привязываем его к клауде, см 1 и 2 части инструкции ss over cf в шапке (https://telegra.ph/shadowsocks-over-cloudflare-05-17)
  5. Скачиваем и устанавливаем Shadowsocks клиент и плагин к нему - виндусятники берут по ссылкам https://github.com/shadowsocks/shadowsocks-windows/releases/latest и https://github.com/shadowsocks/v2ray-plugin/releases/latest (разархивируем в папку с клиентом и переименовываем в v2ray.exe), жмупинусники роются в своих репах/компилят/ищут бинарники в сети
  6. Скачиваем и распаковываем странички нашего сайта https://anonfile.com/T8W6u1T4m8 (если очень хочется, можно использовать свои хтмлки)
  7.  
  8. 1. Устанавливаем nginx на своей впсочке:
  9. Коннектимся к серверу, в консоли на своей пеке вводим:
  10. ssh root@<ip впски> - попросит пароль от рута
  11. sudo apt update && sudo apt upgrade
  12. sudo apt install nginx
  13.  
  14. 2. Перекидываем стрейзенд странички из шапки на сервак(<домен> заменить на свой домен):
  15. В консоли своей впски вводим:
  16. sudo mkdir /usr/share/nginx/html/<домен>
  17. exit - закрываем ssh соединение
  18. В консоли на своей пеке вводим:
  19. scp <путь/к/папке/с/распакованными/хтмльками>/* root@<ip впски>:/usr/share/nginx/html/<домен>/
  20.  
  21. 3. Настраиваем nginx чтобы показывал нашу страничку (<домен> заменить на свой домен):
  22. ssh root@<ip впски> - снова подключаемся к нашей впс по ssh
  23. sudo rm /etc/nginx/sites-available/default && sudo rm /etc/nginx/sites-enabled/default - удаляем дефолтный конфиг
  24. sudo nano /etc/nginx/sites-available/<домен> - вставляем следующее
  25. server {
  26.     listen 80;
  27.     #listen [::]:80;
  28.     server_name <домен>;
  29.     root /usr/share/nginx/html/<домен>;
  30.     index index.html;
  31. }
  32. Сохраняем ctrl + o, закрываем ctrl + x
  33. sudo ln -s /etc/nginx/sites-available/<домен> /etc/nginx/sites-enabled/ - линкуем конфиг
  34. sudo systemctl restart nginx - рестартим энжиникс
  35. Открываем свой сайт в браузере и убеждаемся в том, что все работает.
  36.  
  37. 4. Получаем lets encrypt сертификат:
  38. sudo snap install --classic certbot
  39. sudo certbot --nginx
  40. После этого в консолечке должно быть поздравление о том, что все прошло успешно, и путь до сертификата.
  41.  
  42. 4.5 Делаем обновление сертификата автоматическим:
  43. Lets encrypt сертификаты протухают через 3 месяца, чтобы этого не произошло делаем следующее
  44. sudo crontab -e
  45. Выбираем nano
  46. Спускаемся в конец файла и вставляем это
  47. 00 12 * * * certbot renew -q
  48. Теперь наш сертификат будет проходить проверку на обновление каждый день в 12:00, и если до протухания осталось меньше 30 дней, он сам обновится.
  49.  
  50. 5. Ставим носки последней версии:
  51. sudo wget --no-check-certificate -O shadowsocks-libev-debian.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev-debian.sh
  52. sudo chmod +x shadowsocks-libev-debian.sh
  53. sudo ./shadowsocks-libev-debian.sh 2>&1 | tee shadowsocks-libev-debian.log
  54. Установщик попросит назначить параметры для носков, т.к. у нас соединение будет через v2ray, что вводить сюда неважно ( если нужен еще и чистый сс сервер, можно настроить его сейчас, но нужно учитывать, что 80 и 443 порты заняты энжинксом)
  55. Выключаем сервис чистых носков (или нет, если он нужен)
  56. sudo systemctl disable shadowsocks
  57.  
  58. 5.5 v2ray плагин к носкам:
  59. sudo wget https://github.com/shadowsocks/v2ray-plugin/releases/download/v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz - скачиваем плагин (тут вместо "v1.3.1/v2ray-plugin-linux-amd64-v1.3.1.tar.gz" может быть что-то другое, последняя версия лежит тут https://github.com/shadowsocks/v2ray-plugin/releases/latest)
  60. sudo tar -xf v2ray-plugin-linux-amd64-v1.3.1.tar.gz - разархивируем сам плагин, тут опять же может быть другой файл в зависимости от скачиваемой версии.
  61. sudo mv v2ray-plugin_linux_amd64 /etc/shadowsocks-libev/v2ray-plugin - переносим и переименовывем плагин.
  62. sudo setcap 'cap_net_bind_service=+eip' /etc/shadowsocks-libev/v2ray-plugin - даем возможность v2ray-плагину биндиться к привилегированным портам.
  63. sudo nano /etc/shadowsocks-libev/v2ray.json - вставляем следующее (вместо <пароль> нужно придумать пароль):
  64.  
  65. {
  66. "server":"localhost",
  67. "server_port":8008,
  68. "password":"<пароль>",
  69. "timeout":300,
  70. "method":"xchacha20-ietf-poly1305",
  71. "fast_open":true,
  72. "plugin":"/etc/shadowsocks-libev/v2ray-plugin",
  73. "plugin_opts":"server;loglevel=none;path=/anime",
  74. "nameserver":"1.1.1.1",
  75. "reuse_port": true,
  76. "mode": "tcp_only"
  77. }
  78.  
  79. Сохраняем ctrl + o, закрываем ctrl + x
  80. sudo nano /etc/systemd/system/ss-v2ray.service - вставляем следующее:
  81.  
  82. [Unit]
  83. Description=Shadowsocks-libev with V2RAY-websocket obfuscation
  84. Documentation=man:shadowsocks-libev(8)
  85. After=network.target
  86.  
  87. [Service]
  88. Type=simple
  89. User=nobody
  90. Group=nogroup
  91. LimitNOFILE=51200
  92. ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/v2ray.json
  93.  
  94. [Install]
  95. WantedBy=multi-user.target
  96.  
  97. Сохраняем ctrl + o, закрываем ctrl + x
  98. sudo systemctl enable ss-v2ray.service  - включаем сервис
  99.  
  100. 6. Настраиваем клиент:
  101.  
  102. Конфиг клиента для пользователей виндовс (<домен> заменить на свой домен, <пароль> на придуманный ранее пароль):
  103.  
  104. server addr - <домен>
  105. server port - 443
  106. password - <пароль>
  107. encryption - xchacha20-ietf-poly1305
  108. plugin program - v2ray
  109. plugin options - tls;host=<домен>;path=/anime
  110. proxy port - локальный порт куда будем направлять браузер (по дефолту 1080, можно не трогать)
  111.  
  112. Конфиг клиента для пользователей линукс (<домен> и <пароль> заменить на свои домен и пароль):
  113.  
  114. sudo nano /etc/shadowsocks-libev/v2ray.json - вставляем (путь к плагину может быть другим):
  115.  
  116. {
  117. "server":"<домен>",
  118. "server_port":443,
  119. "local_port":1080,
  120. "password":"<пароль>",
  121. "timeout":600,
  122. "method":"xchacha20-ietf-poly1305",
  123. "plugin":"/etc/shadowsocks-libev/v2ray-plugin",
  124. "plugin_opts":"tls;host=<домен>;path=/anime",
  125. "reuse_port": true,
  126. "mode": "tcp_only"
  127. }
  128.  
  129. sudo nano /etc/systemd/system/ss-v2ray.service - вставляем (путь к ss-local может быть другим):
  130.  
  131. [Unit]
  132. Description=Daemon to start Shadowsocks Client with v2ray plugin
  133. Wants=network-online.target
  134. After=network.target
  135.  
  136. [Service]
  137. Type=simple
  138. ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-libev/v2ray.json
  139.  
  140. [Install]
  141. WantedBy=multi-user.target
  142.  
  143.  
  144. sudo systemctl enable ss-v2ray.service - включаем сервис клиента
  145.  
  146. 7. Настраиваем nginx на работу с tls (<домен> заменить на свой домен):
  147. sudo nano /etc/nginx/sites-available/<домен> вставляем это:
  148.  
  149. server {
  150.     listen 80;
  151.     #listen [::]:80;
  152.     server_name <домен>;
  153.     return 301 https://$host$request_uri;
  154. }
  155.  
  156. server {
  157.         listen       443 ssl http2;
  158.         #listen       [::]:443 ssl http2;
  159.         server_name  <домен>;
  160.         root         /usr/share/nginx/html/<домен>;
  161.         index index.html;
  162.         ssl_certificate /etc/letsencrypt/live/<домен>/fullchain.pem;
  163.         ssl_certificate_key /etc/letsencrypt/live/<домен>/privkey.pem;
  164.         location /anime {
  165.             proxy_redirect off;
  166.             proxy_http_version 1.1;
  167.             proxy_pass http://localhost:8008;
  168.             proxy_set_header Host $http_host;
  169.             proxy_set_header Upgrade $http_upgrade;
  170.             proxy_set_header Connection "upgrade";
  171.         }
  172. }
  173. Сохраняем ctrl + o, закрываем ctrl + x
  174. sudo systemctl restart nginx - рестартим энжинкс
  175. sudo systemctl restart ss-v2ray - рестартим v2ray (пердольки на линуксе тыкают в своей консоли тоже самое чтобы запустить клиент)
  176.  
  177. 8. Настраиваем клауду:
  178. В настройках своего домена на cloudflare, в разделе Crypto ставим Full(strict).
  179. Переходим на свой сайт, убеждаемся, что все работает.
  180.  
  181. Ставим прокси расширение для браузера (например Proxy SwitchyOmega, протокол - socks5, сервер - 127.0.0.1, порт - 1080)
  182. Все! Если перейти на свой сайт, он должен открыться через https. Теперь провайдер видит как от вас к серверам клауды идет настоящий https, при этом если фрином решит просканировать наш домен, он найдет нашу страничку и пройдет мимо (фрином может отобрать домен, если ничего не найдет).
RAW Paste Data