春節來了,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
這里面的東西我每一個都用過,而且都是成功了,你們自己最好看看。
