『机场+VPN』——一种或许比单纯直连VPN更加安全稳定的翻墙方式(4月8日更新)

(2023年4月8日更新)

OpenVPN协议以及一些VPN的客户端支持使用前置代理连接VPN服务器。而机场,不管是SS、SSR还是什么V2ray协议,最终的本质上都是代理。因此,从理论上来说,我们可以使用机场连接OpenVPN来翻墙。这种『机场+VPN』的方式(也可以叫『VPN over proxy』、『前置代理』),具有以下优点

①比直连VPN、机场更加安全一点

②可能比直连VPN更加稳定

③在特殊时期能够大大增强你的抗风险能力

④能够让你享受更多VPN的线路

简单来说,就是机场和VPN各自发挥自己最大的优点——机场用来翻墙,VPN用来保证隐私。

同时,也具有以下缺点:

①同时要买机场和VPN,会花更多的钱(还好,一般的机场不会太贵,节假日期间打折入手更加便宜)

②速度更慢,延迟更高,推荐在VPN无法直连的情况下尝试

③对个人技术水平有一定要求

为了能够用上『机场+VPN』,我们需要先购买并配置好至少一个机场。对于机场的选择,最好选择稳定且支持UDP协议的,比如云翼网络、TAG、RelayCloud等。也可以选择支持V2ray的,比如WgetCloud、Hutao Cloud。

然后再选择一个VPN。最好选择大厂,建议ExpressVPN、PureVPN之类的。如果能够保证直连最好。

下面,我以云翼机场+ExpressVPN为例子,实现『机场+VPN』。

目录

一、配置机场                     四、获取机场中转服务器的IP地址        七、一些其他问题

二、配置VPN                     五、配置OpenVPN使得在连接VPN时不干扰机场连接

三、给OpenVPN设置代理  六、结尾

一、配置机场

虽然云翼机场有提供专门的客户端,但我是自己花了一些时间写了个配置文件,然后导入到Clash for Windows中。大致过程如下:

①在Github上下载并安装Clash for Windows(https://github.com/Fndroid/clash_for_windows_pkg/releases)。注意,这个Clash for Windows,说是for Windows,实际上支持Windows、MacOS和Linux三个系统。

②获取机场的配置文件,并导入到Clash for Windows中。

③在Profiles栏选中导入后的配置,然后在Proxies栏选择Global(全局)并任意选择一个可以连上的线路。

https://playbeasts.com/uploads/question/20230120/a36ac22bed3a80ec996cd8c027d6f9f9.png
/uploads/question/20230120/0f3de6ffa749b954f8ea3c3d83c68f64.png

④在General栏获取代理端口,也就是看Port项的值,记下端口为7890。顺带你也可以打开Allow LAN,允许局域网内其他设备使用代理。

现在,机场就已经配置好了。

二、配置VPN

VPN的手配方法,特别是ExpressVPN的OpenVPN,论坛上有一堆,官方也有教程,这里就不再重复。

三、给OpenVPN设置代理

OpenVPN的代理设置方法,有两种:

①对于OpenVPN GUI(Windows系统)、OpenVPN for Android(Android系统)之类的OpenVPN客户端,均可以在设置中方便地设置代理。由于OpenVPN UDP只能使用Socks5协议的代理,所以在设置代理时务必选择协议为Socks5。对于OpenVPN TCP,则HTTP、Socks5两者均可。

②对于Tunnelblick(MacOS)之类的OpenVPN客户端,不支持在设置中快捷设置代理,此时就需要手动修改OpenVPN配置文件。在VPN的配置文件中写入下面的内容:

socks-proxy 127.0.0.1 7890
#127.0.0.1指本机,这需要你的OpenVPN客户端和机场客户端均在同一台设备上。如果不在同一个设备上,请打开机场客户端的Allow LAN,即允许局域网内的其他设备使用代理,然后填写机场客户端所在设备的局域网IP地址即可。7890即上文获取到的socks5代理端口。
#如果需要http代理,则是:

http-proxy 127.0.0.1 7890
#Clash for Windows的Socks5代理端口默认和HTTP的代理端口合并在一起,所以都是7890。如果你的机场客户端没有这种混合起来的功能,需要注意一下HTTP代理端口的设置。
#这些『#』开头的行都是注释,你可以删掉它们。

设置完成后,现在你可以尝试连接VPN。ExpressVPN的OpenVPN手配只支持UDP,所以如果选择的机场线路支持UDP,且能正常使用,或者你使用的是V2ray协议,那么你大概率会连接成功。

但如果你是在同一台设备上连接,那么在连接成功后,你可能无法上网,而且上传带宽似乎被跑满。这是怎么一回事?(V2ray协议的机场线路似乎不会出现这种问题)

因为机场的流量走OpenVPN,OpenVPN的流量又走机场,两者互相纠缠,形成环路,自然无法上网。这时候就需要设置OpenVPN的路由,让OpenVPN放过机场的流量。

四、获取机场中转服务器的IP地址

OpenVPN的路由仅支持IP地址,所以我们需要获取到机场流量到底发向了哪里,然后将那里的IP地址排除在OpenVPN之外。Android很简单,MacOS、Windows和Linux找到这个地址的方法差不多。

在MacOS和Linux上:

打开你的浏览器,设置浏览器的代理为机场(具体方法自己查),然后打开一些不常用的网页。这一步的主要目的是方便我们找到我们想要的那个IP。

此时再打开系统的终端(Android可以安装MT管理器,里面就有带一个终端),输入并运行以下命令:

netstat -an

这条命令的大致意思是『获取所有网络连接的信息』

然后,终端就会冒出来一大堆信息:

Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.100.60253    223.119.xxx.xxx.80     LAST_ACK   
tcp4       0      0  192.168.0.100.60250    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60249        ESTABLISHED
tcp4       0      0  127.0.0.1.60249        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60248    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60247        ESTABLISHED
tcp4       0      0  127.0.0.1.60247        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60246    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60245        ESTABLISHED
tcp4       0      0  127.0.0.1.60245        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60243    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60242        ESTABLISHED
tcp4       0      0  127.0.0.1.60242        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60241    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60240        ESTABLISHED
tcp4       0      0  127.0.0.1.60240        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60239    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60238        ESTABLISHED
tcp4       0      0  127.0.0.1.60238        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60237    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4       0      0  127.0.0.1.7890         127.0.0.1.60236        ESTABLISHED
tcp4       0      0  127.0.0.1.60236        127.0.0.1.7890         ESTABLISHED
tcp4       0      0  192.168.0.100.60235    36.156.xxx.xxx.xxxxx   ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60232 ESTABLISHED tcp4 0 0 127.0.0.1.60232 127.0.0.1.7890 ESTABLISHED tcp4 0 0 127.0.0.1.7890 127.0.0.1.60231 ESTABLISHED tcp4 0 0 127.0.0.1.60231 127.0.0.1.7890 ESTABLISHED tcp4 0 0 127.0.0.1.7890 127.0.0.1.60230 ESTABLISHED tcp4 0 0 127.0.0.1.60230 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60229 36.156.xxx.xxx.xxxxx ESTABLISHED tcp4 0 0 127.0.0.1.7890 127.0.0.1.60228 ESTABLISHED tcp4 0 0 127.0.0.1.60228 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60227 36.156.xxx.xxx.xxxxx ESTABLISHED...............

其中,有一个IP经常出现,就是:36.156.xxx.xxx.xxxxx。其中,36.156.xxx.xxx是IP地址,后面的.xxxxx是端口。这个IP往往伴随着127.0.0.1:7890,也就是机场代理地址出现,这说明这个IP很有可能就是机场的国内中转服务器IP。

这里有个小技巧。机场客户端在与机场国内中转服务器通信时,由于中转服务器是不分线路的,因此为了区分你连的是哪个线路,就需要一个线路使用一个特定的端口。因此,在寻找机场国内中转服务器IP时,可以先打开机场的配置文件,找到你此时连的线路相对应的端口,比如在下面这个线路的端口就是12345。

    name: '香港 01'
type: ssr
server: hk.airportforward.top
port: 12345
protocol: auth_aes128_sha1
udp: true

然后,在查看netstat -an指令返回结果时,留意端口为12345的公网IP。如果发现,那基本上就是机场的IP了。

在Windows上:

如果你的电脑上装了火绒,那可以通过火绒的网络工具查看进程clash-win64.exe的网络连接,找到里面的外网IP,这个可能就是机场的国内中转服务器IP(注意,此方法不一定有效)。

如果没有火绒,也可以通过命令行,使用netstat -an即可,具体流程见上面的Mac OS。

在Android上:

如果你使用的是OpenVPN for Android,可以在配置中将机场的客户端排除在VPN连接之外,也就是将机场APP设置为不使用VPN连接,就可以了。

五、配置OpenVPN使得在连接VPN时不干扰机场连接

打开OpenVPN的配置文件,在配置文件中加入以下内容:

route 36.156.xxx.xxx 255.255.255.255 net_gateway

上面这个设置的意思是:对于36.156.xxx.xxx这个IP,设置其路由为本地网络的网关。用人话来说,就是直连这个IP,不通过OpenVPN的流量。

255.255.255.255为子网掩码,由于我们这边仅需要针对单个IP,所以全部为255。如果要对于一个网段,比如192.168.x.x,则是这样的:

route 192.168.0.0 255.255.0.0 net_gateway

然后再试试连接VPN。连接成功后,应该就可以正常上网了。

机场的国内中转服务器一般不止一个,所以IP会变。IP改变后,需要手动再将新的IP设置路由哦!

对了,通过这种方式,也可以让你在连接VPN时直连一些其他的服务,比如百度:

route www.baidu.com 255.255.255.255 net_gateway

在OpenVPN连接时,www.baidu.com会被解析为IP地址,具体解析成什么可以在日志中查看:

2023-xx-xx xx:xx:xx.xxxxxx /sbin/route add -net 182.61.200.7 192.168.0.1 255.255.255.255
                           add net 182.61.200.7: gateway 192.168.0.1
2023-xx-xx xx:xx:xx.xxxxxx /sbin/route add -net 182.61.200.6 192.168.0.1 255.255.255.255
                           add net 182.61.200.6: gateway 192.168.0.1

可以看到,在这边www.baidu.com被解析为182.61.200.7和182.61.200.6。这并不意味着我们在浏览器访问www.baidu.com一定是直连的,而是在访问182.61.200.7和182.61.200.6这两个IP时是直连的。为何?OpenVPN连接后,DNS服务器被换成VPN厂商提供的服务器,对于像百度这样子服务器一堆的网站,解析结果一般会改变,所以www.baidu.com解析的结果也就改变了:

[xxx@xxxxxx ~ % host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com is an alias for www.wshifen.com.
www.wshifen.com has address 104.193.88.123
www.wshifen.com has address 104.193.88.77

如果我们手动将这两个IP地址添加路由,设定为直连,或在计算机的hosts文件内将www.baidu.com的解析设置为182.61.200.7或182.61.200.6,此时访问www.baidu.com才算真正的直接连接。

六、结尾

上文的教程其实非常简略,以后有时间可以再扩充一下。

另外,机场+VPN可以保证稳定性,相信大家都可以理解。那么为何还更安全呢?

让我们来看一篇故事:

一个数据包的故事

这是一个数据包:『包』,它将在『机场+VPN』的情况下前往google.com。

————计算机内————

『包』被浏览器制造出来,随后被进行TLS加密,然后发往OpenVPN客户端。

OpenVPN客户端将『包』再次加密,然后发往机场客户端。

机场客户端将『包』进行第三次加密,然后发往国内中转服务器。

————国内————

『包』被发送到机场的国内中转服务器,进行第四次加密,然后被发送到对应的机场服务器。

————GFW————

『包』经过GFW,GFW对包进行了检测,看起来似乎没有任何问题。

————国外————

『包』来到了机场服务器,此时机场服务器将『包』进行第一次解密和第二次解密,然后检查了『包』的目标地址。确认目标地址合法后,修改了『包』的来源地址,然后发往VPN服务器。(机场看到的目标地址是VPN服务器的地址,而不是Google服务器的地址)

『包』来到了VPN服务器,此时VPN服务器将『包』进行第三次解密,并再次修改了『包』的来源地址,然后发往Google服务器。

『包』终于被Google服务器接受到,此时Google服务器将『包』进行最后的TLS解密,然后阅读了『包』的内容。随后,它制造了一个新的『包』出来,并将其发往VPN服务器......

这就是一个数据包的故事。

————不华丽的分割线————

这个故事真长,对不对?现在,请回答以下问题:

Q.1谁知道你在翻墙?

A:你自己、浏览器、OpenVPN客户端、机场客户端、机场中转服务器和机场

Q.2谁知道你在访问Google?

A:你自己、浏览器、OpenVPN客户端、VPN服务器、Google服务器

Q.3谁知道这个数据包具体的内容?

A:你自己、浏览器、Google服务器

需要注意,你访问Google是通过HTTPS加密访问。如果是访问未加密的HTTP网站,则OpenVPN客户端、VPN服务器也会知道这个数据包具体的内容。

Q.4谁能够不费吹灰之力(即不通过人肉手段)得到你的隐私信息?

A:你自己、浏览器、VPN服务器(可能)和Google服务器。机场只能知道你在翻墙,但不知道你在访问什么,更不能得到数据包的内容。VPN服务器知道你在访问什么,在HTTP连接下可以得知数据包的内容,但不知道你在翻墙。在此情况下,由于数据包还经过TLS加密,所以VPN服务器也不大可能获取到数据包具体的内容。

Q.5 GFW知道你在翻墙吗?知道你在访问什么吗?

A:完全不知道。

现在,你知道为什么『机场+VPN』比直连机场或VPN更安全了吧?只要VPN是安全的,就算机场暗中想要收集你的数据也收集不了,它最多就只能知道你的注册邮箱和支付信息,别的完全不清楚。GFW也不会知道你在翻墙,因为机场有国内中转服务器,GFW只能知道国内中转服务器和机场在通信,但不知道你在和国内中转服务器通信。

如果你还不放心,在注册机场的时候就使用一些隐私邮箱,如Tutanota。这些邮箱地址是完全独立的,机场就算知道你的邮箱地址也无法通过该地址反查到你的手机号,进而得到你的真实信息。特别是在注册一些可能不安全的机场时。

七、一些其他问题

Q.1 如果OpenVPN使用UDP连接,机场一定要支持UDP吗?

A:不一定。这主要看机场采用的协议。SS、SSR等基于socks5代理开发的翻墙协议,仅仅对数据包进行了加密以及一些混淆,所以如果OpenVPN使用UDP连接到服务器,机场与机场服务器的连接就必须要使用UDP协议,这就要看机场支不支持UDP了。但V2ray不一样,OpenVPN的数据包发到V2ray本地客户端之后,就会被打包成VMess协议的TCP数据包,然后发往下一个V2ray节点,到达最终节点后就会被解包,然后再次以UDP协议发送到OpenVPN服务器。这个过程不需要机场一定支持UDP协议,并且连接稳定性超级好。Trojan协议我还没有用过,不知道具体情况。

Q.2 使用什么机场协议来连接VPN最好?

A:目前来看是V2ray(VMess),但情况可能因人而异。相比于SS,使用V2ray连接OpenVPN有以下优点:

1.(可能)不需要配置路由,数据包不会绕来绕去。目前我还没搞清楚为何会这样。

2.连接稳定性超级好。SS协议+VPN很不稳定,有时候连上还没用一会就断,重新连接又麻烦。V2ray就没这方面问题。

3.不需要机场一定支持UDP。

所以如果真的要经常使用机场+VPN,建议入手支持V2ray协议的机场,不推荐只支持SS协议的机场。

Q.3 机场据说也有加密,如果机场本身已经不会记录日志而且确保没有问题了,为何机场还是不安全呢?

A:下面是我仅仅用上文提到的云翼机场来翻墙的测试情况:

/uploads/question/20230129/8acec73d5779a253e64267a1469f0d2a.png
/uploads/question/20230129/d8d20450ab69f97efce23a125866c567.png
/uploads/question/20230129/d2f232357b8951a9e5a76e2eeea24251.png

IP改成美国很正常,DNS泄漏没得说,我自己也默认设置了8.8.8.8和4.4.4.4(Google DNS)。但是,最后的一个WebRTC泄漏,是怎么回事?

最后这个泄漏的IP,拿去查,可以得到:

/uploads/question/20230129/4f04a5d3defb91e3084a291e91e608a2.png

这可不是美国的IP啊!

我之前有几次只用机场上Google,然后原本我的Google搜索定位是美国的XXX州,没过一会直接就精确到了中国福建省XXX市(绝对是通过WebRTC泄漏得到我的真实IP地址了),然后用回ExpressVPN后也老是变不回来,还是中国,还得我亲自修改GPS定位信息,然后手动更新位置信息才回来。

更加离谱的是,在Google探测到我的真实IP后,原本手机上很正常的GMS服务突然老是显示没有互联网连接,重启才能暂时解决问题。据我所知,这种情况我上次遇到还是前年在使用PandaVPN的时候(没错,就是那个好像已经跑了的),使用ExpressVPN后就根本没遇到这问题,然后在我手动更新位置信息后又正常了。

总之,为了隐私起见,最好不要只用机场翻墙,要用就新开一个浏览器,不要使用机场登录一些自己常用的网站。用的时候不要碰Google!搜索用DuckduckGo!

PS:最近发现Windscribe的客户端可以添加代理,然后使用代理连接VPN。通过这种方式也可以实现『机场+VPN』。Windscribe免费账户每月有10GB流量,拿来当个备用也是可以的。

已邀请:

Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道

赞同来自: Minecraft

用这个方法测了下,

stacksocial还能买到的终身产品里面:
ivacy用这个方法没反应,同理pure和ivacy本质一家,也不行;
seed4me这个由于是魔改openvpn,没有ovpn配置文件,所以也不行,而且这家现在涨价也贵了;
vpnsecure这个手配文件给的有问题,也用不了,这家服务也挺差的;
belka这家虽然可以,但厂家成立时间短,而且厂家隐私可靠性存疑,不建议选择;
keepsolid这家很差劲,手配需要去官网一个个生成,而且生成了也用不了,避坑;

其他的fastest、bullet、ipro、getflix、slick(就是配置文件得一个一个下)这五款,手配是可以使用这种方法的。另外这几款手配不用机场帮忙,直接直连的话或多或少还能用。

非终身的话:

surfshark、pia、privatevpn还有其他几个特别小众的都可以。应该只要openvpn手配正常的基本都行。但pure/ivacy似乎不行,nord我找了个号试了下也不行,而且nord在国内几乎没啥价值了。

Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道

赞同来自: Minecraft

再补充一下,安卓端也可以用类似的方式。

机场客户端以比较通用的clash为例。clash安卓端的话需要现在设置-网络里面勾选第一个自动路由系统流量,然后在覆写里面设置HTTP/Socks端口。这样clash的部分就配置好了。

openvpn手配可选择openvpn connect、openvpn for android 或 vpn client pro。三选一即可。似乎最后一个比较方便。协议选TCP,进去设置HTTP或Socks5代理,地址都是127.0.0.1,端口根据前面设置的决定。这样先连机场再连VPN应该就可以了。

Minecraft 【入门级】

赞同来自: Biyougong

2023.1.28更新:

1.加入了Windows、Android防止机场和VPN流量互相绕的方法。

2.加入了机场协议选择的说明。

3.可以确定IKEv2的代理设置只能用于连接到VPN后再连接代理,不能用代理连接IKEv2的VPN。

4.吐槽了一下机场的WebRTC泄漏 😀欢乐+1。

LateResonance 【新手级】

赞同来自: Biyougong

如果是用这种方法的话,还有一个更好的建议

就是VPS自建v2ray/ss/Trojan

然后通过机场中继你的v2ray/ss/Trojan


大致效果也是通过机场来翻墙,然后通过v2ray/ss/Trojan来访问你实际访问的服务器


不过大致有以下几个缺点:

1. 流媒体解锁能力取决于你的技术或所购买VPS的供应商

2. 节点地区单一,单个vps成本较低,多个地区的vps成本就剧增了


至于优点和上述内容大致相同

匿名用户

匿名用户

赞同来自: Biyougong

机场+VPN不等于更安全,机场还是会记录连接网站日志,如果你的VPN不是零日志政策就等于是记录双重日志。另外关于Google泄露IP,是因为本身OPENVPN配置的问题造成DNS泄露,PC使用应添加"block-outside-dns"命令。

Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道

赞同来自: Minecraft

转载一个使用openvpn gui手配的分流列表:

原理是使用了route语句进行直连,具体可参考楼主的第五点教程。

route 36.156.xxx.xxx 255.255.255.255 net_gateway

文本里面汇总了大量的国内网站IP,使用后可以走直连。


文本下载:

https://drive.google.com/file/d/14NYVKOYhjEMicgXXtgHD_Svgiaf9E6UZ/view?usp=sharing


使用方法:将文本内容复制到ovpn配置文件证书内容【即这行】之前,保存后导入客户端即可。

作用:可以让用户在使用 VPN 连接家里路由器时,不使用 VPN 进行对国内 IP 的访问,从而减轻 VPN 的负担,增加访问国内网站的速度。

注:源数据源自apnic,参考chnroutes,会不定期更新。在此只是转载。

⚠️需要注意因为ovpn客户端对配置文件大小有限制,所以对原数据进行了简化,不保证百分百准确。

Minecraft 【入门级】

赞同来自: Biyougong

2月9日更新:

稍微修改了一些有误导性内容的文本,并在第六章末尾增加了一段注册机场时的保护隐私小技巧。

Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道

支持,写的很详细了。

RobertMays 【新手级】

大佬,想请教一下,如何配置OpenVPN,使其路由全部流量啊,Express提供的配置文件只能路由部分流量,一部分网站不会转发,会泄露真实IP。我尝试添加了redirect-gateway到配置文件中,会报错,似乎Express的服务器端不支持这个特性……

大佬,我想问一下,我买了surfshark发现很难直连,甚至不能通过开机场飞机去连。我曾经以为vpn是通过vpn客户端到机场再到vpn服务器(双跳),我只是想用vpn进一步加密自己的隐私,发现surfshark app的直接连接好像不是走机场到vpn服务器。想问一下按这个教程能够实现吗?

我有个闲置的vps,我能否在vps搭建ssr服务器,然后同时做vpn客户端去连接我买的付费vpn的服务器,这样实现我自己走vps再通过vps走vpn来隐藏自己?

HyvYEhhrkKc5gn 【新手级】

其实这就是"编程随想"所提到过的"多重代理"。


只不过实际中,这套组合起不起作用,基本取决于机场起不起作用。


机场不work,VPN再好也白搭,反过来,机场要是OK,那我又何必在VPN上花钱呢,免费的tor走起不香么

要回复问题请先登录注册