freedom_threand

ss+v2ray with tls behind nginx over cf

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