daily pastebin goal
12%
SHARE
TWEET

ss+v2ray with tls behind nginx over cf

freedom_threand Mar 23rd, 2019 (edited) 293 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Пердолинг shadowsocks с v2ray плагином через cloudflare в tls режиме с nginx перед ss для Ubuntu 18.04. (бонусом установка 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), с некоторыми оговорками(<имя сайта> заменить на свой домен, вместо <пароль> придумать пароль):
  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=/<имя сайта>",
  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. EnvironmentFile=/etc/init.d/shadowsocks
  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. -3.3) в конфиге клиента ставим
  98. server addr - <имя сайта> (или любой айпишник клауды)
  99. server port - 443
  100. password - <пароль>
  101. encryption - xchacha20-ietf-poly1305
  102. plugin program - v2ray
  103. plugin options - tls;host=<имя сайта>;path=/<имя сайта>
  104. proxy port - локальный порт куда будем направлять браузер (по дефолту 1080, можно не трогать)
  105.  
  106. 6. Настраиваем nginx на работу с tls:
  107. sudo nano /etc/nginx/sites-available/default удаляем все что там есть и вставляем это (<имя сайта> заменить на свой домен):
  108. server {
  109.     listen 80;
  110.     listen [::]:80;
  111.     server_name <имя сайта>;
  112.     return 301 https://$host$request_uri;
  113.     root /usr/share/nginx/html/<имя сайта>;
  114.     index index.html;
  115. }
  116.  
  117. server {
  118.         listen       443 ssl http2;
  119.         listen       [::]:443 ssl http2;
  120.         server_name  <имя сайта>;     # Your domain.
  121.         root         /usr/share/nginx/html/<имя сайта>;
  122.         index index.html;
  123.         ssl_certificate /etc/letsencrypt/live/<имя сайта>/fullchain.pem;     # Path to certificate
  124.         ssl_certificate_key /etc/letsencrypt/live/<имя сайта>/privkey.pem;     # Path to private key
  125.         ssl_session_cache shared:SSL:1m;
  126.         ssl_session_timeout  10m;
  127.         ssl_ciphers HIGH:!aNULL:!MD5;
  128.         ssl_prefer_server_ciphers on;
  129.         location /<имя сайта> {
  130.             proxy_redirect off;
  131.             proxy_http_version 1.1;
  132.             proxy_pass http://localhost:8008;     # Port of v2ray-plugin
  133.             proxy_set_header Host $http_host;
  134.             proxy_set_header Upgrade $http_upgrade;
  135.             proxy_set_header Connection "upgrade";
  136.         }
  137. }
  138. Сохраняем ctrl + o, закрываем ctrl + x
  139. sudo systemctl restart nginx - рестартим энжинкс
  140. sudo systemctl restart ss-v2ray - рестартим v2ray
  141.  
  142. 7. Настраиваем клауду:
  143. В настройках своего домена на cloudflare, в разделе Crypto ставим Full(strict).
  144. Переходим на свой сайт, убеждаемся, что все работает.
  145.  
  146. Ставим прокси расширение для браузера (например Proxy SwitchyOmega, протокол - socks5, сервер - 127.0.0.1, порт - 1080)
  147. Все! Если перейти на свой сайт, он должен открыться через 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