SHARE
TWEET

ss+v2ray with tls behind nginx over cf

freedom_threand Mar 23rd, 2019 (edited) 533 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Пердолинг shadowsocks с v2ray плагином через cloudflare в tls режиме с nginx перед ss для Ubuntu. (бонусом установка shadowsocks последней версии)
  2.  
  3. 0. Подготовка:
  4. Получаем фриномовский домен и привязываем его к клауде, см инструкцию по ss over cf в шапке (https://telegra.ph/shadowsocks-over-cloudflare-05-17)
  5. Скачиваем и устанавливаем PuTTY - https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
  6. Скачиваем и устанавливаем WinSCP - https://winscp.net/eng/download.php
  7. Hostname - адрес сервера, port - 22, пароль настраивается у провайдера vps
  8. Скачиваем и распаковываем странички нашего сайта https://anonfile.com/T8W6u1T4m8
  9.  
  10. 1. Устанавливаем nginx на своей впсочке:
  11. Коннектимся через PuTTY к серверу, в консоли вводим:
  12. sudo apt update
  13. sudo apt install nginx
  14. sudo systemctl status nginx - если инактив, значит 80 порт чем то занят.
  15.  
  16. 2. Перекидываем стрейзенд странички из шапки на сервак:
  17. Коннектимся через WinSCP к своей впсочке
  18. Идем по пути /usr/share/nginx/html, правой кнопкой - New - Directory, даем папке имя своего фриномовского домена
  19. Перетаскиваем 3 файла из ss-web архива, который мы скачали выше, в созданную папку.
  20.  
  21. 3. Настраиваем nginx чтобы показывал нашу страничку (<домен> заменить на свой домен):
  22. sudo nano /etc/nginx/sites-available/default  удаляем все что там есть и вставляем следующее
  23. server {
  24.     listen 80;
  25.     #listen [::]:80;
  26.     server_name <домен>;
  27.     root /usr/share/nginx/html/<домен>;
  28.     index index.html;
  29. }
  30. Сохраняем ctrl + o, закрываем ctrl + x
  31. sudo systemctl restart nginx
  32. Открываем свой сайт в браузере и убеждаемся в том, что все работает.
  33.  
  34. 4. Получаем lets encrypt сертификат (<домен> заменить на свой домен):
  35. sudo apt-get update
  36. sudo apt-get install software-properties-common
  37. sudo add-apt-repository universe
  38. sudo add-apt-repository ppa:certbot/certbot
  39. sudo apt-get update
  40. sudo apt-get install certbot python-certbot-nginx
  41. sudo letsencrypt certonly -a webroot --webroot-path=/usr/share/nginx/html/<домен> -d <домен>
  42. После этого в консолечке должно быть поздравление о том, что все прошло успешно, и путь до сертификата.
  43.  
  44. 4.5 Делаем обновление сертификата автоматическим:
  45. Lets encrypt сертификаты протухают через 3 месяца, чтобы этого не произошло делаем следующее
  46. sudo crontab -e
  47. Выбираем nano
  48. Спускаемся в конец файла и вставляем это
  49. 00 12 * * * sudo certbot renew -q
  50. Теперь наш сертификат будет проходить проверку на обновление каждый день в 12:00, и если до протухания осталось меньше 30 дней, он
  51. сам обновится.
  52.  
  53. 5. Ставим носки последней версии и v2ray плагин к ним (если носки с плагином уже стоят, можно не заморачиваться, а просто поправить конфиг v2ray плагина и клиента):
  54. wget --no-check-certificate -O shadowsocks-libev-debian.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev-debian.sh
  55. chmod +x shadowsocks-libev-debian.sh
  56. ./shadowsocks-libev-debian.sh 2>&1 | tee shadowsocks-libev-debian.log
  57. Установщик попросит назначить параметры для носков, т.к. у нас соединение будет через v2ray, что вводить сюда неважно ( если нужен еще и чистый сс сервер, можно настроить его сейчас, но нужно учитывать, что 80 и 443 порты заняты энжинксом)
  58. Выключаем сервис чистых носков (или нет, если он нужен)
  59. sudo systemctl disable shadowsocks
  60. Ставим v2ray по инструкции из шапки (https://ghostbin.com/paste/qgspo), с некоторыми оговорками в пунктах 2.4, 2.5 и 3.3(<домен> заменить на свой домен, вместо <пароль> придумать пароль):
  61. -"2.4) nano /etc/shadowsocks-libev/v2ray.json - вставляем следующее:"
  62. Вставляем вот это:
  63.  
  64. {
  65. "server":"localhost",
  66. "server_port":8008,
  67. "password":"<пароль>",
  68. "timeout":300,
  69. "method":"xchacha20-ietf-poly1305",
  70. "fast_open":true,
  71. "plugin":"/etc/shadowsocks-libev/v2ray-plugin",
  72. "plugin_opts":"server;loglevel=none;path=/v2ray",
  73. "nameserver":"1.1.1.1",
  74. "reuse_port": true,
  75. "mode": "tcp_only"
  76. }
  77.  
  78. -"2.5) nano /etc/systemd/system/ss-v2ray.service - вставляем следующее:"
  79. Вставляем вот это:
  80.  
  81. [Unit]
  82. Description=Shadowsocks-libev with V2RAY-websocket obfuscation
  83. Documentation=man:shadowsocks-libev(8)
  84. After=network.target
  85.  
  86. [Service]
  87. Type=simple
  88. User=nobody
  89. Group=nogroup
  90. LimitNOFILE=51200
  91. ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/v2ray.json
  92.  
  93. [Install]
  94. WantedBy=multi-user.target
  95.  
  96. -"3.3) в конфиге клиента ставим"
  97. server addr - <домен> (или любой айпишник клауды https://www.cloudflare.com/ips  (на самом деле не любой, у меня работали только ip из этой 104.16.0.0/12 подсети))
  98. server port - 443
  99. password - <пароль>
  100. encryption - xchacha20-ietf-poly1305
  101. plugin program - v2ray
  102. plugin options - tls;host=<домен>;path=/v2ray
  103. proxy port - локальный порт куда будем направлять браузер (по дефолту 1080, можно не трогать)
  104.  
  105. 6. Настраиваем nginx на работу с tls:
  106. sudo nano /etc/nginx/sites-available/default удаляем все что там есть и вставляем это (<домен> заменить на свой домен):
  107. server {
  108.     listen 80;
  109.     #listen [::]:80;
  110.     server_name <домен>;
  111.     return 301 https://$host$request_uri;
  112.     root /usr/share/nginx/html/<домен>;
  113.     index index.html;
  114. }
  115.  
  116. server {
  117.         listen       443 ssl http2;
  118.         #listen       [::]:443 ssl http2;
  119.         server_name  <домен>;
  120.         root         /usr/share/nginx/html/<домен>;
  121.         index index.html;
  122.         ssl_certificate /etc/letsencrypt/live/<домен>/fullchain.pem;
  123.         ssl_certificate_key /etc/letsencrypt/live/<домен>/privkey.pem;
  124.         ssl_session_cache shared:SSL:1m;
  125.         ssl_session_timeout  10m;
  126.         ssl_ciphers HIGH:!aNULL:!MD5;
  127.         ssl_prefer_server_ciphers on;
  128.         location /v2ray {
  129.             proxy_redirect off;
  130.             proxy_http_version 1.1;
  131.             proxy_pass http://localhost:8008;
  132.             proxy_set_header Host $http_host;
  133.             proxy_set_header Upgrade $http_upgrade;
  134.             proxy_set_header Connection "upgrade";
  135.         }
  136. }
  137. Сохраняем ctrl + o, закрываем ctrl + x
  138. sudo systemctl restart nginx - рестартим энжинкс
  139. sudo systemctl restart ss-v2ray - рестартим v2ray
  140.  
  141. 7. Настраиваем клауду:
  142. В настройках своего домена на cloudflare, в разделе Crypto ставим Full(strict).
  143. Переходим на свой сайт, убеждаемся, что все работает.
  144.  
  145. Ставим прокси расширение для браузера (например Proxy SwitchyOmega, протокол - socks5, сервер - 127.0.0.1, порт - 1080)
  146. Все! Если перейти на свой сайт, он должен открыться через https. Теперь провайдер видит как от вас к серверам клауды идет настоящий https, при этом если фрином решит просканировать наш домен, он найдет нашу страничку и пройдет мимо (фрином может отобрать домен, если ничего не найдет).
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top