春节来了,18年已经再也回不去了,之前走过的弯路,走过的坑,现在把记下来并且分享给大家。
作为一名年轻的程序员,我们搜索问题大部分还是百度吧,有些厉害一点的都是用的谷歌,但是现在随着国家政策的一些变化,很多时候所谓的L2TP,所谓的SS,所谓的SSR,所谓的其他类型的VPN,说不定哪天就GG了。在这里我不教大家搭建VPN,因为那是违法的,我在这里重点教大家搭建谷歌的镜像网站(反向代理),并且如何配置CDN,如何进行优化,如何配置负载均衡。至于VPN的不深入教大家,但是只要是程序员,看到我的文章肯定会操作,如果不是程序员,是小白,那么自己百度或者用必应搜索下教程吧,这里不扫盲。
第一部分:建立自己的私有的虚拟专用网络(VPN)
首先啊,使用环境要先确立:公司内部使用、国内使用,服务器地区不限接着往下看,外贸、G-mail邮箱、谷歌等海外使用需要海外服务器(如不是请不要往下看了)
然后系统的要求,因为系统不对的话很多问题,你也不想解决,我也不想解决。系统支持需要CentOS6+,Debian7+,Ubuntu12+,内存小于128M的小小小型服务器就不要往下看了,这是为了你好。另外 OpenVZl 架构的也不要看了(因为需要开启TUN/TAP才能正常使用、还需要系统内核支持 IPSec 才行一般不建议在 OpenVZ 的 VPS 上安装。至于原因是因为我用那样的失败了,如果你不想走弯路就别在我的失败上继续失败,如果你时间多,就当我没说吧)
接着还要检测是否支持TUN模块执行命令:(如果返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明正常),命令是 cat /dev/net/tun,直接复制运行就行了,注意首尾不要空格!
再接着检测是否支持ppp模块执行命令:(如果返回信息为:cat: /dev/ppp: No such device or address 说明正常),命令是 cat /dev/ppp,直接复制运行就行了,注意首尾不要空格!
如果你是centos,请切换到 root 下运行(下面的所有操作都应该在 root 下运行,不然会有错误,不要问我为什么),centos 切换到 root 的命令是 sudo -i,其他的 linux 的方法自己百度,因为我是 centos,我任性。
如果上面的条件全部满足(一般99%的都能满足,除非是超级垃圾的,没人要的,坑人的,无法用语言形容的服务器)就可以继续往下看了,如果有其中一点不满足那么就到此为止吧,因为没必要,就算成功也会非常麻烦。
接下来是安装的方法:
一、使用 root 帐户登陆SSH;推荐工具:(Putty、Bitvise SSH Client、MobaXterm、DameWare SSH、SmarTTY、Cygwin、Xshell)等等都可以。看你喜欢用什么样子的,网页直接连接也行。我用的是 Xshell6。
二、分别执行下面的命令:
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/across/master/l2tp.sh
chmod +x l2tp.sh
./l2tp.sh
注:别那么懒,请一条一条执行,执行的过程中如果有选项请输入 y,如果没有就当我没说。
三、当你遇到和服务器之间的交互的时候,你应该这样操作。
1、Please input IP-Range:(Default Range: 192.168.18):这里直接按回车键(输入本地IP段范围(本地电脑连接到VPS后给分配的一个本地IP地址),直接回车意味着输入默认值192.168.18);【一般直接回车】
2、Please input PSK:(Default PSK: teddysun.com):这里输入密钥如 01、02、123 等看你喜欢连接时会用到记下来(PSK意为预共享密钥,即指定一个密钥将来在连接时需要用到,直接回车意味着输入默认值 teddysun.com);【一般输入你喜欢的字母,别给忘了,忘了的话基本 GG 到时候自己重新执行上面的所有内容】
3、Please input Username:(Default Username: teddysun):这里输入用户名如 01、02、123 等看你喜欢连接时会用到记下来(Username意为用户名,即第一个默认用户。直接回车意味着输入默认值 teddysun);【用户名是啥不用我重复吧】
4、Please input teddysun’s password:(Default Password: Q4SKhu2EXQ):这里输入密码如 01、02、123 等看你喜欢连接时会用到记下来(输入用户的密码,默认会随机生成一个10位包含大小写字母和数字的密码,当然你也可以指定密码。);【密码是啥不用我重复吧,最好不要用随机的,相信我,你记不住】
然后等待安装完成,我用了5秒中,安装完成后是这样子的:
If there are no [FAILED] above, then you can connect to your L2TP VPN Server with the default Username/Password is below: ServerIP:your_server_IP PSK:your PSK Username:your usename Password:your password If you want to modify user settings, please use command(s): l2tp -a (Add a user) l2tp -d (Delete a user) l2tp -l (List all users) l2tp -m (Modify a user password) Welcome to visit https://teddysun.com/448.html Enjoy it!
这个时候就可以用了,IP是你的服务器公网IP,手机或者电脑创建 L2TP/IPSec 预共享密匙 的连接。其中密匙是你自己刚写的,用户名和密码也是你填写的。【怎么创建 L2TP/IPSec 的连接请自行百度,一般在手机的设置里面,更多连接方式,VPN,添加就可以了,记得设置保存密码,如果你喜欢每次都输密码,当我没说】
注: 手机和电脑怎么连接,别问我,别问我,自己百度。作为程序员,应该会的。不会的话你就用局域网好了,就别用国际互联网了。
操作命令如下:
- l2tp -a 新增用户
- l2tp -d 删除用户
- l2tp -m 修改现有的用户的密码
- l2tp -l 列出所有用户名和密码
- l2tp -h 列出帮助信息
第二部分:建立谷歌的镜像(反向代理)
首先啊,我先说一下,如果第一部分看不懂或者无法理解,就不用看第二部分了,因为你看了也没有用,这个设计的技术含量比第一部分高一些。
不扯没用的,接下来正式开始教学。
第一步:自己准备好有 linux 或者 windows 系统的服务器,个人电脑也可以,推荐使用 centos 和 win10。为什么推荐 win10,那是因为大家用的电脑大部分都是,而且 win10 的环境和 windows server 的比较接近,最起码我是这么认为的。
第二步:装上 nginx,因为鄙人用的是 nginx 和 tomcat,tomcat 的教程将会在以后有时间了教大家,现在就不用了、
第三步:在 nginx 中创建反向代理,具体的百度,这里仅仅给大家提供一部分的参考:
1、首先你的网站要配置 https 吧,不想配置的,当我没说。
1.1、这样配置顶部的东西
listen 80; listen 443 ssl http2; listen [::]:80; listen [::]:443 ssl http2; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
意义是:监听 80 和 443 端口,同时使用 http2,并且兼容 ipv6
1.2、SSL的配置,对我来说最安全的一种配置(大家可以参考):
ssl_protocols TLSv1.2 TLSv1.3; ssl_ecdh_curve X25519:P-256:P-384:P-224:P-521; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri;
有些人会问我为什么这样配置,因为这个是参考最新的 google 安全的标准配置的,不能说是最安全,应该比你们大多数人配置的好些。
1.3、防盗链配置(大家直接复制就可以用---前提是你必须知道这是干啥的)
location ~ .*\.(jpg|jpeg|gif|png|js|css)$ { expires 30d; access_log /dev/null; valid_referers none blocked ipv6.google-api.ac.cn; if ($invalid_referer){ return 404; } }
1.4、禁止访问的文件或目录(自己认真设置这个--------最好百度下)
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; }
重点来了,反向代理 google.com ,下面的配置代码(代码该放到哪儿,不用我多说吧?各位?)
location / { location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$ { proxy_set_header Host www.google.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_pass https://www.google.com; } proxy_pass https://www.google.com; proxy_set_header Host www.google.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; #持久化连接相关配置 #proxy_connect_timeout 30s; #proxy_read_timeout 86400s; #proxy_send_timeout 30s; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection "upgrade"; add_header X-Cache $upstream_cache_status; proxy_cache cache_one; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid 200 304 301 302 1m; expires 12h; }
基本大功告成。
阶段总结:只要你按照这个完成配置,并且你的网站的服务器不是中国大陆的,那么恭喜你,你可以翻墙出去玩了。。。如果你不想设置 vpn 刚才那个反向代理,只要用你的域名解析服务器的 IP,然后访问你自己的域名,就等同于你没有翻墙,但是在访问谷歌。我一边写教程一边自己搭建,刚建立的网站是 https://ipv6.google-api.ac.cn 我反向代理的是 https://google.com 的资源,搜索的东西和谷歌本来就是一样的。
第三部分:配置反向代理的负载均衡
很多人不理解,反向代理都配置好了为什么还要配置负载均衡呢?这就不得不说GFW(自己百度这是啥东西)的厉害之处了。据我所知,我们只能使用大的局域网,因为世界很精彩,就是不给你看。而且还喜欢关窗子,烧梯子。
我这样给大家说吧,不会翻墙的程序员不是好的程序员,好的程序员还要掌握一些不是那么技术很白的技术,因为说不到哪一天你用的上,比如因为家庭原因要发布一些社会不良影响的消息,现在的 WJ,技术不咋地,删帖是真的快,美名曰和谐号。具体的我不多说,这是社会发展的必然,是历史的进步。
我所使用的云主机是谷歌云。那个注册谷歌云啊,想要用他免费赠送300美元干自己想做的事,你需要一张信用卡,并且是 visa 的,不能是银联,因为国外不承认。当然你使用阿里云,腾讯云也行。这里不推荐百度云,不是我对百度云有偏见,是因为我当初在百度云买了域名,他们自己家的 CDN 不支持解析这样的域名,我也真是醉了,自此以后就再也不相信百度云了。但是百度搜索虽然广告多点吧,用着还行啊。
下面给大家详细的介绍下谷歌云的方向代理用到的负载均衡的配置,首先,你百度如何使用谷歌云创建VM,多看几篇文章。然后我告诉你啊,左侧列表有一个叫做负载平衡的,据我所知这个就是负载均衡。因为我就是用的它,打开负载均衡,有一个创建负载均衡,创建 TCP 的负载均衡,怎么创建,自己百度,百度上有。然后端口直接填写 1-65535 这样就行了。然后在左侧的列表中有一个 VPC 网络啥的。打开它,里面会有两个 IP,一个是当前 VM 实例的 IP ,一个是负载均衡的 IP。
拿到负载均衡的 IP 呢,你这样做。使用阿里云或者其他各种云的 CDN 里面,添加 CDN,不是有主 IP 吗?下面有个备用的,把负载均衡的 IP 丢到备用的里面去就可以了。记得选择全球加速啊,上面有介绍,看不懂那我也没办法。然后就可以了。记得:如果想要特别稳定,就去多创建几个负载均衡吧,在谷歌云上最好不要超过10个负载均衡,不要问什么,如果你想要用180天以上的话,听我的,没错。当然,有钱人另算。
总结:(关于总结,我希望你们能看下,这个不是废话啊)
1.阿里云,腾讯云,华为云,百度云,天翼云,其他云:
阿里云用的人比较多,但是:使用阿里云的 CDN 需要备案的域名(除了其他中的其他云不需要备案,都需要,包括没有列出来的我现在在用的 UCloud 和 上海云盾)。
腾讯云的客服服务态度最好,解决问题很快,客服不和你多 BB。
华为云的服务器有陷阱,自己买的时候要看清楚 IP 到底是本地的还是公网的,如果是本地的,那么恭喜你,不可能升级成公网。你就等死吧。
百度云用着舒服,支持300M宽带呢,而且网站的话据说百度云会加快收录和搜索显示,我没试过,反正我用的谷歌云,百度云现在还有三个月没有用,4核8G 按量付费的。
天翼云大家能不用就不用,名字倒好,而且是中国电信的,你的域名不在他那里备案的话是不能用80端口的,非常坑非常坑。
UCloud的是我用过最便宜的,速度也还行,客服的态度也还好,就是回复比较慢,而且是最认真的!我觉得是小姐姐。
推荐大家服务器:阿里云 > UCloud > 腾讯云 > 百度云 > 谷歌云 > 华为云 > 其他云 > 天翼云 (我把谷歌云放中间是因为有技术的人才能用,普通的人看看就好了,里面的一些东西你玩不过来,真的,你可以试试就知道了)
2.关于网站的备案的一些东西:
要使用国内主机必须备案,不备案的话你可以举报。因为这是硬条件,没得好说的。而且备案的话,百度云的最快,阿里云的慢一点,腾讯云的等一个月吧。其他的没试过,不知道。
3.关于网站的 CDN
我建议大家用大的服务商的,别听信贴吧说的什么什么不好的,因为这个世界上黑粉真的特别特别多。要记得,海纳百川有容乃大,而且你谅解别人,别人才会好好的服务你,不是别的,这是尊重!一个程序员最起码的素养,你可以技术不好,但是你要给别人尊重,别人也知道你很着急。
CDN 的话,要看是不是支持 https 的 CDN,别买错了,有的服务商心真的黑。
好了,到此为止,我要说的也说完了,上面说的话,如果你不懂的可以参照下面的链接看看,保证你十有八九掌握。
https://www.wn789.com/15161.html
https://blog.csdn.net/autista/article/details/71512537
https://flyzyblog.com/install-ss-ssr-bbr-in-one-command/
https://gitee.com/Sjz_sjz/goprxy_shell
http://www.foresthouse.cn/archives/5732.html
https://blog.csdn.net/mickeymouse1928/article/details/70578627
https://www.jianshu.com/p/a821a874fbfc
https://blog.csdn.net/wesoner/article/details/79095071
这里面的东西我每一个都用过,而且都是成功了,你们自己最好看看。