Dragon
主机之家测评主机之家测评  2019-08-20 11:43 主机之家测评 隐藏边栏 |   抢沙发  1,167 
文章评分 0 次,平均分 0.0

本文介绍转发 CloudflareCDN 服务的两种方式,也可用于其他反代

写在教程前:为什么要反向代理 cloudflare?答:缩短路由,加快 cloudflare 节点到大陆用户的速度,用过 cloudflare 的用户应该知道,这家 CDN 的速度在除了大陆以外的地方访问都非常快,因此本文为解决 Cloudflare 访问缓慢的第二篇方法介绍

之前的 SNIproxy 方式发现有一个问题,虽然 SNI 方式代理 cloudflare 节点本身支持 TLS1.3,但是问题就在于似乎当使用 SNIproxy 的时候,即使浏览器本身不支持 TLS1.3(国产浏览器),仍会向用户浏览器传输 1.3 协议,导致有时候会出现浏览器报协议不支持的情况,而无法访问

关于为什么不使用 Nginx 或 apache 来反代?原因就很多,你自己试试用两天就明白了不想回忆那么蛋疼的事情

而这段时间我了解到 GOST 这个 GO 语言开发的程序,可以通过转发流量来代理网站,因此将其尝试来反代 Cloudflare,遂成功

该操作适用环境:

①不想暴露源站(如果让搜索引擎解析源站,会被查 DNS 获得源站 IP),但是国内搜索引擎对 cf 节点抓取速度慢,需要一台服务器做反代来让蜘蛛抓取,但是为了保持真实访问和蜘蛛抓取一致,需要代理 cloudflare 的节点

②在站点没被攻击前使用自建反代加快访问,由解析服务提供商设定,当此反代挂掉之后后迅速切换为 cf 官方节点拉起,最低成本下的速度和防御并存(国内服务商 dnspod 与 XNSdns)

③没有使用 NS 接入而是 CNAME 接入 Cloudflare,关于如何 CNAME 接入,你需要一家拥有 Cloudflare 合作伙伴权限的平台,比如百度可以搜索到的“笨牛网”

④有一台对国内访问快且访问 Cloudflare 也很快的服务器,请勿使用国内服务器和阿里香港轻量,其他 CN2 之类的都很不错

一、Gost 转发

开始安装 Gost 程序:

centos 安装:直接使用编译好的二进制文件

二进制文件下载地址:https://github.com/ginuerzh/gost/releases

 

1
2
3
wget https://github.com/ginuerzh/gost/releases/download/v2.7.2/gost_2.7.2_linux_amd64.tar.gz
tar  -zxvf gost_2*
cd gost_2*

然后直接./gost 就能用,具体命令在下面给出,把下面的 snap run gost 换成./gost 就行了,命令是一样的

ubuntu 就很舒服,直接就能 snap 安装

 

1
sudo snap install gost

然后 snap 安装的程序需要用 snap 来启动,而且需要把 gost 通过 Screen 挂在后台

 

1
2
Screen -S 80  #创建一个叫做 80 的 screen 窗口
snap run gost -L=tcp://:80/1.0.0.5:80    #将本地 80 端口的请求转发到 1.0.0.5 的 80 端口

 

然后在 shell 中 Ctrl+A+D 一起按来退出 Screen 窗口,它会自己挂在后台工作,想回到这个叫做“80”的窗口,就输入 screen -r 80 回车

 

1
2
Screen -S 443  #创建一个叫做 443 的 screen 窗口
snap run gost -L=tcp://:443/1.0.0.5:443    #将本地 443 端口的请求转发到 1.0.0.5 的 443 端口

 

然后在 shell 中 Ctrl+A+D 一起按来退出 Screen 窗口,它会自己挂在后台工作,想回到这个叫做“443”的窗口,就输入 screen -r 443 回车

这个 1.0.0.5 是 cloudflare 官方的一个节点,你可以选择其他的,不过都一样

然后别忘了你需要用 Iptables 来放行 80 和 443 端口

 

1
2
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT

二、Iptables 转发

IPtables 转发方式:

第一步:开启系统的转发功能
首先,先确认服务器是否已开启转发,输入:

 

1
sysctl net.ipv4.ip_forward

如果已经启动则显示
net.ipv4.ip_forward = 1
如果没有启动则显示(请按照下面步骤进行开启)
net.ipv4.ip_forward = 0

CentOS 6/Debian/Ubuntu 开启方式:

 

1
2
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

CentOS 7 开启方式:

 

1
2
echo "net.ipv4.ip_forward = 1" >> /usr/lib/sysctl.d/default.conf
sysctl -p

设置转发规则:

 

1
2
3
4
5
6
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 1.0.0.2
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 1.0.0.2
iptables -t nat -A POSTROUTING -p tcp -d 1.0.0.2 --dport 80 -j SNAT --to-source 自己服务器 IP
iptables -t nat -A POSTROUTING -p tcp -d 1.0.0.2 --dport 443 -j SNAT --to-source 自己服务器 IP

 

需要注意的是,部分 VPS 商,比如 AWS,虽然有公网 IP 但是并不能转发到公网,直接转发公网是无效的
需要输入 ifconfig -a 来查看并使用 eth0 网卡的本地内网 IP,而其他廉价的 NAT 无公网机器同理(我相信你不会用 NAT 辣鸡 VPS 的)

Ubuntu 保存并重启 iptables:

 

1
2
iptables-save > /etc/iptables.up.rules
iptables-restore < /etc/iptables.up.rules

CentOS 保存并重启 iptables:

 

1
2
service iptables save
service iptables restart

查看当前正在使用的 NAT 规则

 

1
iptables -t nat -nL

 

如果你不想用了可以清除转发规则(这个不是部署过程):

 

1
2
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING

 

三、查看效果与测试

这个时候你输入你反代服务器的 IP:80 或者是 IP:443 应该就能看到如下图的页面,这样就是成功了

80 效果:

反向代理 Cloudflare 加速网站(Gost/iptables 转发)

433 效果

反向代理 Cloudflare 加速网站(Gost/iptables 转发)

如何测试实际工作效果?本地修改 HOST 文件,windows 端打开 C:WindowsSystem32driversetchosts 文件,加上一行

 

1
2
你的反代服务器 IP 你的域名,如:
6.6.6.6 cangshui.net

 

成功反代的效果:

反向代理 Cloudflare 加速网站(Gost/iptables 转发)

利用 Gost/iptables 反代 cloudflare 反代节点是百分之百完美的,用起来和真的 Cloudflare 官方节点一模一样,缺点就是如果别人发现了你这个 IP,也能够蹭你的反代,如果有解决办法的话我会在后续更新。

原文:https://cangshui.net/?p=4030

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享