前言
之前介绍过v2ray利用CDN(cloudflare)的方法,本次介绍的方法和上次有不少的相似之处,本次介绍一下将V2RAY隐藏到正常的网站背后,这样访问域名的时候看到的时候正常的网页,但是使用v2ray链接的话则可以实现梯子的功能。当然如果要实现访问域名出现一个正常网站的功能,你需要一个网站,然而自己建立一个网站也太麻烦了,我们可以反代一下别人的网站,这样访问你域名的时候则可以显示别人网站的页面,并且可以在微型小鸡上实现这样的功能。
准备
本次以debian/ubuntu系统为例,当然centos系统的配置差不了太多。
一个域名:可以申请免费域名,freenom.com,将域名A记录指向服务器。
一台服务器:64M内存就可以用了。服务器购买:Vultr,最低2.5刀一月,注册送10刀,支持支付宝。
一个欲反代的网站:选择一个简单点的网站,因为很多大网站会有安全措施,反代起来有点麻烦。
一个域名:可以申请免费域名,freenom.com,将域名A记录指向服务器。
一台服务器:64M内存就可以用了。服务器购买:Vultr,最低2.5刀一月,注册送10刀,支持支付宝。
一个欲反代的网站:选择一个简单点的网站,因为很多大网站会有安全措施,反代起来有点麻烦。
配置nginx
卸载apache。部分服务商提供的系统模版里面自带了apche,但是我们不需要它,并且它会影响到NGINX的使用,所以这里卸载它。
- service apache2 stop
- apt-get remove apche* -y
安装nginx
debian/ubuntu
debian/ubuntu
- apt-get install nginx -y
创建dhparam.pem文件
- mkdir -p/etc/nginx/ssl
- openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
设置nginx配置文件,
vi /etc/nginx/sites-enabled/你的域名.conf
- server
- {
- listen 80;
- #listen [::]:80;
- server_name 你的域名 ;
- #将http重定向到https
- return 301 https://你的域名$request_uri;
- }
- server
- {
- listen 443 ssl http2;
- #listen [::]:443 ssl http2;
- server_name 你的域名 ;
- ssl on;
- ssl_certificate /etc/nginx/ssl/你的域名/fullchain.cer;
- ssl_certificate_key /etc/nginx/ssl/你的域名/privkey.key;
- ssl_session_timeout 5m;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_prefer_server_ciphers on;
- ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
- ssl_session_cache builtin:1000 shared:SSL:10m;
- # openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
- ssl_dhparam /etc/nginx/ssl/dhparam.pem;
- access_log off;
- location / {
- #向后端传递访客IP
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- #设定需要反代的域名,可以加端口号
- proxy_pass http://148.251.3.246:22900/;
- #替换网站内容
- sub_filter '你反代的对象' '你的域名';
- # websocket设定,V2ray使用,这里的设置要和v2ray的设置一致。
- location /phpmyadmin/ {
- proxy_redirect off;
- #proxy_pass http://127.0.0.1:10000;
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_set_header Host $http_host;
- proxy_intercept_errors on;
- if ($http_upgrade = "websocket" ){
- proxy_pass http://127.0.0.1:10000;
- }
- }
- }
- }
上面设定中的
proxy_pass http://148.251.3.246:22900/;就是设定想要反代的域名的地方,148.251.3.246:22900是我挂的一个探针页面,以作测试用,当然你也可以改成其他的网站,比如https://github.com/,如果你反代的https://github.com那么sub_filter '你反代的对象' '你的域名';就是sub_filter 'github.com' 'yourdomain.com';申请证书
安装acme.sh,一个自动化的Let’s Encrypt证书申请程序。
- apt-get install socat -y
- curl https://get.acme.sh | sh
以下命令都要在
.acme.sh的目录内执行,root用户的在/root/.acme.sh
之前我介绍过用API申请LET’S证书的方法,但是相对来说比较复杂,这里用一种简单的方法,使用nginx方法来申请证书,使用nginx方法申请证书的话,需要先保证有关于这个域名的nginx配置在本例当中,就是上面那个配置文件。
申请证书
申请证书
- acme.sh --issue --nginx -d 你的域名 -d 你的域名
acme.sh脚本可以一次申请多个域名证书,只需要多家-d参数。
创建目录存放证书。
创建目录存放证书。
- mkdir -p /etc/nginx/ssl/你的域名
将证书安装到nginx。不建议直接在nginx中使用
~/.acme.sh/你的域名里面的证书,这个目录仅供内部使用,将来可能会改变结构。
- acme.sh --install-cert -d 你的域名 \
- --key-file /etc/nginx/ssl/你的域名/privkey.key \
- --fullchain-file /etc/nginx/ssl/你的域名/fullchain.cer \
- --reloadcmd "service nginx force-reload"
这个时候访问你的域名,你应该就能看到被你反代的网站了。
配置v2ray
安装v2ray
使用官方的安装脚本
使用官方的安装脚本
- bash <(curl -L -s https://install.direct/go.sh)
如果提示:
-bash: curl: command not found那么安装curl
- apt-get install curl -y
清空
/etc/v2ray/config.json的内容,然后粘贴以下内容进去,vi /etc/v2ray/config.json
- {
- "log": {
- "access": "/var/log/v2ray/access.log",
- "error": "/var/log/v2ray/error.log",
- "loglevel": "info"
- },
- "inbound": {
- "port": 10000,
- "listen": "127.0.0.1",
- "protocol": "vmess",
- "allocate": {
- "strategy": "always"
- },
- "settings": {
- "clients": [{
- "id": "6d8a82b9-94d6-442e-a340-2b9cd5752c77",
- "level": 1,
- "alterId": 64,
- "security": "chacha20-poly1305"
- }]
- },
- "streamSettings": {
- "network": "ws",
- "wsSettings": {
- "connectionReuse": false,
- "path": "/phpmyadmin/"
- }
- }
- },
- "outbound": {
- "protocol": "freedom",
- "settings": {}
- },
- "outboundDetour": [{
- "protocol": "blackhole",
- "settings": {},
- "tag": "blocked"
- }],
- "routing": {
- "strategy": "rules",
- "settings": {
- "rules": [{
- "type": "field",
- "ip": ["0.0.0.0/8", "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.2.0/24", "192.168.0.0/16", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "::1/128", "fc00::/7", "fe80::/10"],
- "outboundTag": "blocked"
- }]
- }
- }
- }
上面
"id": "6d8a82b9-94d6-442e-a340-2b9cd5752c77",里面的ID可以通过https://www.uuidgenerator.net/这里自助生成,强烈建议修改该值。客户端的使用
在https://github.com/v2ray/v2ray-core/releases查看并下载适合于自己系统的程序。
(注:V2RAY客户端和服务端一体,只是配置方式的不同,因此此处服务端和客户端在同一个地方下载,但是服务端和客户端的系统可能不同,因此应下载不同版本的程序。windows系统应下载:v2ray-windows-32.zip或者v2ray-windows-64.zip)
修改 config.json 配置为以下内容,注意 address (第25行)填写网站域名。
(注:V2RAY客户端和服务端一体,只是配置方式的不同,因此此处服务端和客户端在同一个地方下载,但是服务端和客户端的系统可能不同,因此应下载不同版本的程序。windows系统应下载:v2ray-windows-32.zip或者v2ray-windows-64.zip)
修改 config.json 配置为以下内容,注意 address (第25行)填写网站域名。
- {
- "log": {
- "access": "",
- "error": "",
- "loglevel": ""
- },
- "inbound": {
- "port": 1085,
- "listen": "0.0.0.0",
- "protocol": "socks",
- "settings": {
- "auth": "noauth",
- "udp": true,
- "ip": "127.0.0.1",
- "clients": null
- },
- "streamSettings": null
- },
- "outbound": {
- "tag": "agentout",
- "protocol": "vmess",
- "settings": {
- "vnext": [
- {
- "address": "网站域名",
- "port": 443,
- "users": [
- {
- "id": "6d8a82b9-94d6-442e-a340-2b9cd5752c77",
- "alterId": 64,
- "security": "chacha20-poly1305"
- }
- ]
- }
- ]
- },
- "streamSettings": {
- "network": "ws",
- "security": "tls",
- "tcpSettings": null,
- "kcpSettings": null,
- "wsSettings": {
- "connectionReuse": true,
- "path": "/phpmyadmin/",
- "headers": null
- }
- },
- "mux": {
- "enabled": true
- }
- },
- "inboundDetour": null,
- "outboundDetour": [
- {
- "protocol": "freedom",
- "settings": {
- "response": null
- },
- "tag": "direct"
- },
- {
- "protocol": "blackhole",
- "settings": {
- "response": {
- "type": "http"
- }
- },
- "tag": "blockout"
- }
- ],
- "dns": {
- "servers": [
- "8.8.8.8",
- "8.8.4.4",
- "localhost"
- ]
- },
- "routing": {
- "strategy": "rules",
- "settings": {
- "domainStrategy": "IPIfNonMatch",
- "rules": [
- {
- "type": "field",
- "port": null,
- "outboundTag": "direct",
- "ip": [
- "0.0.0.0/8",
- "10.0.0.0/8",
- "100.64.0.0/10",
- "127.0.0.0/8",
- "169.254.0.0/16",
- "172.16.0.0/12",
- "192.0.0.0/24",
- "192.0.2.0/24",
- "192.168.0.0/16",
- "198.18.0.0/15",
- "198.51.100.0/24",
- "203.0.113.0/24",
- "::1/128",
- "fc00::/7",
- "fe80::/10"
- ],
- "domain": null
- },
- {
- "type": "field",
- "port": null,
- "outboundTag": "direct",
- "ip": null,
- "domain": [
- "geosite:cn"
- ]
- },
- {
- "type": "field",
- "port": null,
- "outboundTag": "direct",
- "ip": [
- "geoip:cn"
- ],
- "domain": null
- }
- ]
- }
- }
- }
此时启用你的客户端,应该就可以实现利用CDN中转了。
客户端运行 v2ray 或 v2ray.exe,直接运行即可
客户端运行 v2ray 或 v2ray.exe,直接运行即可
本地 socks 代理为 127.0.0.1:1085
第三方客户端配置 address(网站域名)、port(443)、id(很长那串)、alterId(64)、security(chacha20-poly1305)、network(ws)、path(/v2ray/)、底层传输安全(tls)
参考链接:
https://github.com/iMeiji/shadowsocks_install/wiki/Project-V-%E9%85%8D%E7%BD%AE-WebSocket-TLS-Web-CDN
参考链接:
https://github.com/iMeiji/shadowsocks_install/wiki/Project-V-%E9%85%8D%E7%BD%AE-WebSocket-TLS-Web-CDN