虚拟专用网络搭建

  • 我们是**主义接班人,继承**先辈的光荣传统,爱德先生,爱赛先生.
  • 没有什么能够阻挡,你对**的向往;天马行空的生涯,你的心了无牵挂.
  • 对头,作为一名新时代农名工,你少不了谷歌.
  • 你的求知欲,集中体现在对谷歌的访问上.

为什么要使用vpn

正如前面所说,这是空气,我们的本能.

前前后后买了不少vpn ,蓝灯Lantern买了三年,断断续续可用,很不稳定,iphone几乎连不上。 期间买了个其他的忘了叫啥,几百大洋,用一下就没了。 只有一个邮件的联系方式,申诉如泥牛入海,也没地方给你伸冤.自己动手丰衣足食.

  • 第一次尝试,用的是shadowsocks服务,能用
  • 一个月后端口被封了,可以改端口
  • 于是第二次尝试,使用了v2ray
  • 配合使用bbr效果更好

服务器环境准备

你需要一台海外得服务器,并安装好基本得网络环境. 可以参考个人服务器搭建 只需要在选择地域时选择海外.

好了后,可以先在终端命令行里爽一把

[root@VM-0-5-centos ~]# ping www.google.com
PING www.google.com (142.250.199.68) 56(84) bytes of data.
64 bytes from hkg07s37-in-f4.1e100.net (142.250.199.68): icmp_seq=1 ttl=118 time=1.88 ms
64 bytes from hkg07s37-in-f4.1e100.net (142.250.199.68): icmp_seq=2 ttl=118 time=1.88 ms
64 bytes from hkg07s37-in-f4.1e100.net (142.250.199.68): icmp_seq=3 ttl=118 time=1.88 ms
64 bytes from hkg07s37-in-f4.1e100.net (142.250.199.68): icmp_seq=4 ttl=118 time=1.88 ms

Shadowsocks代理

服务安装

因Shadowsocks作者不再维护pip中的Shadowsocks(定格在了2.8.2)我们使用下面的命令来安装最新版的Shadowsocks:

pip install https://github.com/shadowsocks/shadowsocks/archive/master.zip
ssserver --version

服务配置

创建配置文件/etc/shadowsocks.json

{
"server":"你的IP地址",
"local_address": "127.0.0.1",
"local_port":1080,
"port_password": {
"8388": "password1",
"8389": "password2",
"8390": "password3",
"8391": "password4"
},
"timeout":300,
"method":"aes-256-gcm",
"fast_open": true
}
NAME 说明
LOCAL_ADDRESS 本地地址
LOCAL_PORT 本地端口,一般1080,可任意
SERVER 服务器地址,填IP或域名
SERVER_PORT 服务器对外开的端口
PASSWORD 密码,可以每个服务器端口设置不同密码
PORT_PASSWORD SERVER_PORT + PASSWORD ,服务器端口加密码的组合
TIMEOUT 超时重连
METHOD 默认: “AES-256-CFB”,见 ENCRYPTION
FAST_OPEN 开启或关闭 TCP_FASTOPEN, 填TRUE / FALSE,需要服务端支持
mode: 选填,默认 "tcp_only"。服务器所要监听的协议,可填 "tcp_only", "udp_only" 和 "tcp_and_udp"。填入 "tcp_and_udp" 相当于命令行上提供 -u 参数 ;填入 "udp_only" 相当于命令行上提供 -U 参数。 如果你是要用来玩国外游戏的,最好是用tcp_and_udp,因为很多游戏都是用的upd协议

server 为你的服务器ip地址(如果是阿里云/腾讯云(等分内网和外网IP的)服务器,上方请填写你的内网IP) port_password多用户配置,端口相当于账号,password为密码

后端启动:ssserver -c /etc/shadowsocks.json -d start 别忘了在服务器安全组里打开相应端口(shadowsocks对外开的端口).如果你使用了宝塔客户端,相应地要去宝塔打开对应端口

系统Service

编辑/etc/systemd/system/shadowsocks.service文件如下

[Unit]
Description=Shadowsocks
After=network.target

[Service]
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json
Restart=on-abort

[Install]
WantedBy=multi-user.target

开启shadowsocks服务

vi /etc/systemd/system/shadowsocks.service
systemctl start shadowsocks
systemctl enable shadowsocks
ps -aux | grep shadowsocks

如果运行成功会看到ssserver进程

root       18991  3.2  1.2 117812 22672 ?        Ss   03:05   0:00 /usr/bin/python3.6 /usr/local/bin/ssserver -c /etc/shadowsocks.json
root 19044 0.0 0.0 12136 1156 pts/3 R+ 03:05 0:00 grep --color=auto shadowsocks

查看端口状态 netstat -lntp正常情况下,应该找到一个python进程监听ssserver指定的端口

客户端安装

windows系统下载 Shadowsocks

20220508200346

iphone下就各显神通了,反正大陆appstore里是搜不到Shadowsocks地。你得去淘宝花上几块钱买一个美区苹果账号,登录你的app store,推荐下载ShadowLink这个版本,免费的,基本功能都有。Shadowsocks这个是收费的,没用过

如果客户端有连接的话,服务端执行命令journalctl -u shadowsocks应该能看到连接日志

结果你就偷着乐了 20220508200438

Shadowsocks出问题了

我的小火煎连不上去了!!!难道是服务器坏了?登录服务器,ping谷歌正常 那么问题来了,我们和代理服务器之间的连接,被一股神秘势力拦截了!拦截了!

遭遇端口封锁

https://gfw.report/blog/gfw_shadowsocks/zh.html

这篇报告是对(GFW)是如何检测和封锁Shadowsocks及其衍生翻墙软件的初步调查结果。 通过网络测量实验,发现GFW会被动的监视网络流量从而识别出疑似Shadowsocks的网络流量; 然后对对应的Shadowscoks服务器进行主动探测已验证其怀疑的正确与否。 Shadowscoks的封锁程度可能受人为因素在政治敏感时期的控制。

所以怎么办?凉拌。国家机器别想了。那么,我就换一个端口吧。封一个,换一个.到时候警局见.不怕死的话,接着往下看

怕死不做探路党

很明确的告诉大家,SSR/SS的协议已经被识别的.自己搭建梯子一天内就能检测出来.有的倒霉的甚至一个小时就被检测出来了. 不要试图换端口,否则IP被封是一定的.只是封你端口说明墙还吃不准你是不是有翻墙行为,你换端口墙就肯定你是翻墙了.

一般被封的IP在3-6个月会被解封,但是解封后也不要立刻做梯子.至少要换一种后端程序做.立刻又来做梯子会死得很快.

还有就是被封了不要时不时自己又去试一下解封没有.你去试一下,你的国外机器ip又会给墙发送数据,告诉墙这个ip还被这个翻墙的人持有.会延长封禁时间

解决办法概述

  1. 使用V2ray.或者Trojan这种伪装成https的协议.可以通过:https://ssrvps.org/archives/3942 来查看服务器怎么装V2ray,或者在我的月下博客搜v2ray ,有好几篇怎么安装的文章(必须要用https来伪装成tls加密,否则单纯的vmess协议已经被识别了),你伪装成https 就没事.因为网络上的https流量太多了.墙目前还没有学会如何识别https中谁是翻墙的流量

  2. 使用国内中转服务器 .客户端->国内中转服务器->隧道->国外落地服务器 这种方法由于实际过墙是通过隧道,ssr链接到国内服务器是不经过墙的.所以可以用.但是目前国内各大云服务器商家都禁止搭建梯子.所以你得自己想办法绕开服务器商家的检测.他们有流量识别模型 例如 梯子服务器 上行流量和下行流量大致差不多.

  3. 如果不幸ip被封,那么你无法直接连接到你的机器来科学上网.但是可以曲线救国,可以通过cdn来解决这个问题.使用cloudflare (免费的). 原理是:你本机->CDN->国外机器. CDN的话墙是没办法轻易封锁的.因为很多网站都在CDN上, 墙的目的不是让大家都无法上网,但是其实如果你的梯子没被封的话,不要挂cloudflare,因为直接连接你的机器大部分情况下总是快过经过CDN中转

具体看文章:https://ssrvps.org/archives/3803 这篇告诉你如何不花钱拯救被墙的ip

v2ray它来了

虽然官方有详细的安装教程,这里并不使用官方的教程,毕竟是菜鸟。所以直接使用大佬提供的一键安装脚本。此脚本是开源的,感兴趣的可以看下,代码在此,所以并不会隐藏挖矿脚本。关于被当肉机挖矿,就很难受了😣。

简易安装

使用 root 用户输入下面命令安装或卸载bash <(curl -s -L https://git.io/v2ray.sh)

友情提示:此脚本里面有一句 yun update -y.所以,在执行之情,我们先手动升级一下系统吧,免得出问题.安装过程可以默认一路enter就好。如果需要修改端口就不要默认了.

安装完成自动打印出配置信息 20220508203312

按照提示,输入v2ray url,生成配置码,在客户端导入此配置即可

mac客户端下载

目前大部分都为收费的客户端,这里推荐一个免费的 V2rayU

方式一: 使用homebrew命令安装 brew install --cask v2rayu

方式二: 下载最新版安装 https://github.com/yanue/V2rayU/releases

支持协议方式也很多,这里推荐vmess://

Window10客户端

window环境下的客户端倒是有一些,这里推荐 v2rayN

20220508203736

和上面一样,使用 vmess://

默认是socks协议,端口为10808.使用switchomega的小伙伴可以按照此参数配置 20220508203818 右键导入的配置,设置为活动链接,即可愉快地上网了

问题又来了

如果你连不上,它的提示是这样的

服务端v2ray log看一下,出现提示VMessAEAD is enforced and a non VMessAEAD connection is received. You can still disable this security feature with environment variable v2ray.vmess.aead.forced = false

官方给出了解决方案

VMessAEAD 协议已经经过同行评议并已经整合了相应的修改。 VMess MD5 认证信息 的淘汰机制已经启动。 自 2022 年 1 月 1 日起,服务器端将默认禁用对于 MD5 认证信息 的兼容。 任何使用 MD5 认证信息的客户端将无法连接到禁用 VMess MD5 认证信息的服务器端。 在服务器端可以通过设置环境变量 v2ray.vmess.aead.forced = true 以关闭对于 MD5 认证信息的兼容。 或者 v2ray.vmess.aead.forced = false 以强制开启对于 MD5 认证信息 认证机制的兼容 (不受到 2022 年自动禁用机制的影响) 。 (v4.35.0+)

于是我们按照建议给出修改方案(ps:最新版本已经自动解决了)

systemctl status v2ray找到启动配置文件v2ray.service 编辑此文件,加入一行 Environment=V2RAY_VMESS_AEAD_FORCED=false systemctl daemon-reload systemctl restart v2ray 重启客户端,重新连接,over

关于BBR加速

传说中的BBR

我相信,你在搜索各种科学上网技术的时候,肯定不止一次的听过bbr这个东西,在各种博客添油加醋之下,让人觉得它神乎其神。更有bbrplus, bbr2, 魔改bbr 等一大堆衍生品。仿佛神油一般,用了就能野鸡线路变专线。

那么,这东西究竟是什么?它有没有用?又该用哪一个版本呢?

实际的BBR

BBR = Bottleneck Bandwidth and Round-trip propagation time,是一种TCP的拥塞控制算法。简单粗暴的理解就是数据流量的交通管理:当公路不再塞车的时候,每辆车自然就能保持较快的车速了。

那么它有没有用呢?一般而言,有BBR 和 没有BBR 会有可以感知的差别(速度、稳定性、延迟方面都会有一些改善),所以 【非常建议开启 BBR】。

但开启之后,BBR 在 4.x 和 5.x 之间的差异往往比较微妙、见仁见智,造成体验差别的决定性因素仍然是线路质量。所以 【不必纠结版本、不必盲目追新、跟随你的发行版更新内核即可】

酷炫的版本是不是更好

bbrplus, bbr2, 魔改bbr 和其他各种听起来就酷炫的版本是不是更好?

一句话:不是!不要用这些!这些都为了吸引眼球乱起的名字!

BBR 的更新和发布,都是跟随Linux的内核(Kernel)进行的。换言之,只要你用的是比较新的内核,就自然会使用到新版BBR。

而这些名字看起来很酷炫的东西,说白了就是仍未正式发布的、尚在测试阶段的内核及其对应的BBR版本。这些脚本也仅仅就是通过下载预览版的内核(甚至第三方魔改内核)来率先开启而已。

内核的稳定是一台服务器稳定运行的基石。【BBR测试版带来的细微性能差异绝对不值得更换不稳定的内核。】 请选择你所在的Linux发行版所支持的最新内核,这样可以最大限度的保持服务器的长期稳定和兼容。

注意: 所谓魔改bbr的【领先】是有非常强的时效性的。比如很多 bbrplus 脚本,因为几年来都没有更新,到现在还会把你的内核换成 4.19,要知道现在稳定如 Debian 已经是 5.9 的时代了,那么这个脚本放在2018年1月也许领先了一点,到2018年10月4.19正发布时就已经失去了意义,放在现在甚至可以说是完完全全的【降级】和【劣化】

fq, fq_codel, fq_pie, cake和其他算法哪个好?

一句话:看不懂的话,请保持fq,足够、且不会劣化你的线路

锐速、Finalspeed、LotServer和其他“加速工具”

一句话:不要用这些!把他们丢进历史的垃圾桶吧!

它能解决的也只有丢包率的问题。不太准确的比喻,就是本来你用一辆车送你的货,有时候车半路就坏了(丢包),用了这些以后,你直接派出3份一样的货,让三辆车同时送,只要有一辆没坏就能送到。马路上都是你的车,自然就能把别人挤下去。但可想而知,你挤别人的时候,别人也会来挤你,而整个机房的出口道路一共就那么宽,最终势必就变成集体大堵车了。

说明: 它们的原理不是算法优化、不是提速、大多数是简单粗暴的多倍发包。对于【丢包率非常高】的差线路可能有一点作用,但【对丢包率低的好线路没有任何优化作用,反而会成倍的消耗你的流量】,进而造成服务器和你的邻居不必要的压力。

如果你的线路真的丢包率奇高,真正靠谱的解决方案是【换线路】。

一句话总结,用原版BBR。

CentOS bbr加速

选择对应的BBR即可,推荐原版。

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh
# 确认bbr是否开启,应该返回tcp_bbr
lsmod | grep bbr
# 确认fq算法是否开启,应该返回sch_fq
lsmod | grep fq

靠靠靠靠靠靠

伪装v2ray

ip被墙了,天理何在,我不过看adult片,有必要吗?魔高一尺,道高一丈,换一个v2ray

分两步,第一步安装带伪装的v2ray,第二步开启cdn分流

yum install -y curl

curl https://raw.githubusercontent.com/hijkpw/scripts/master/v2ray.sh > v2ray.sh

chmod +x v2ray

./v2ray

按回车键,屏幕上开始滚动各种看得懂看不懂的东西。紧盯着屏幕,直到屏幕出现“确认满足按y,按其他退出脚本:”,确认条件满足,按y,回车,然后输入你域名的主机名(注意是主机名,比如v2raytech.com,不建议填裸域名hijk.pw!),设置一个伪装路径(不能是/),例如/abcedf(强烈建议设置一个复杂的、别人猜不到的路径,除 “数字、字母、/、-、_” 外不能有其他特殊字符!)。

  1. 查看v2ray运行状态 / 配置:./v2ray info

  2. v2ray管理命令:启动:systemctl start v2ray,停止:systemctl stop v2ray,重启:systemctl restart v2ray;

  3. nginx管理命令:测试配置文件有无错误:nginx -t,启动:systemctl start nginx,停止:systemct stop nginx,重启:systemctl restart nginx;

  4. 更新v2ray到最新版:bash <(curl -sL https://raw.githubusercontent.com/hijkpw/scripts/master/goV2.sh)(提示“装不上daemon”不用管,systemctl restart v2ray重新启动v2ray就好了)

  5. 查看SSL证书:certbot certificates,更新证书:systemctl stop nginx; certbot renew; systemctl restart nginx

  6. 卸载: ./v2ray uninstall;

使用cloudflare中转流量

首先说明一点:除非服务器ip被墙,否则不需要上cdn!网上很多教程一开始就教你上Cloudflare的cdn,号称完美解决方案啥,本人认为完全没必要,这也是为什么迟迟不写上cdn教程的原因:大多数人用不到!

  • Cloudflare(缩写CF)在国内号称“减速云”,平时延迟250ms起步。如果用cf中转,告诉我50ms香港、150ms美西cn2 gia vps的理由是啥?
  • 国内CDN能起到加速作用,但是域名要备案,还要购买/上传证书,并且https流量都收费。此外,cdn都能解密你所有的流量,你放心用吗?
  • 通过CF中转,不会让伪装更安全,也不能防止域名被墙;
  • CF中转只对ws+tls伪装的v2ray或者trojan有用,无法用在SS/SSR上(这么说其实不对,CF有 spectrum业务 能转发tcp/udp流量,但是只对企业版开放,价格需联系CF销售 )。

上cdn/CF也有好处:1. 不会暴露你服务器的真实ip,因此能防止ip被墙;2. 能拯救被墙的ip,省去换ip的费用;3. 域名解析转移到CF,比Namesilo的DNS解析好用一万倍!

注册Cloudflare账号

  1. 打开 https://www.cloudflare.com/,点击右上角的 “Sign up”,填入你的电子邮箱,设置好账户密码(至少8位,必须包含数字和特殊字符),点击“create account”;
  2. 界面跳转到添加网站界面,输入你的域名,例如 hijk.pw,注意没有前面的 www。然后点击 “add site”;
  3. 界面进入选择套餐界面,点第一个“free”,然后点“confirm plan”;
  4. 接下来CF会扫描你域名的解析记录,扫描完成后大部分记录都给你设置好了。接着点击“continue”;
  5. 界面进入更改NS解析服务器提示页面,记住类似下图中的两行dns记录

20221030220431

这一步到此结束,请不要关闭cloudflare的网页。

更改DNS解析服务器

将域名的dns转移到cloudflare

入填写dns服务器界面,把默认的三行删了,在第一和第二栏填入cloudflare界面上出现的两个域名,例如:marek.ns.cloudflare.com 和 wanda.ns.cloudflare.com(注意:CF分配到每个人的DNS服务器都不一样,请按照你账号中出现的填写)

回到Cloudflare设置信息

  1. 回到cloudflare网页上,点击”done, check nameservers”按钮,界面进入证书选择界面,按图中选“full(strict)”
  2. 接着点页面下方的“next”,进入加速选项页面。按照图中所示把勾选上:

20221030221001

接着点页面下方的“Next”,设置就完成了。如果需要对dns进行解析,点击页面上方的”DNS“进入dns解析设置页面。例如要添加新的解析,先点击“add record”,然后选择解析类型、填写记录名、值,TTL用默认的即可(auto表示600s,比namesilo的3600强了60倍!)。如果的vps使用网页服务,可以选择过代理(即显示黄色的云),仅做dns解析则要点掉黄色的云。信息填写好后点击“save”按钮保存

设置客户端

打开手机、电脑上的客户端,在”ip/address”一栏中的ip改成伪装域名,例如“123.123.123.123”改成“test.hijk.pw”。trojan因为默认使用域名,此步一般无需操作。

经过上述设置,v2ray的web+websokcet+tls+cdn的配置就完成了!快试试能不能打开外网吧!

dns解析迁移到cloudflare,并且设置了经过cloudflare的代理(记录上有一朵黄色的云),ping伪装域名出现的是cloudflare的ip,而不是你的服务器ip; 在cf上添加新的解析记录,默认是代理/中转状态。如果你需要获取let’s encrypt证书,可以先禁用代理(点一下那朵云变成灰色),获取完证书再启用中转; Namesilo刷新记录比较慢,如果cloudflare提示DNS解析未改过来,多等一会。