0%

(详细)基于frp与v2ray的几种校园网内网穿透的方案

非零基础请移步(简略版)基于frp与v2ray的几种校园网内网穿透的方案

设备

方案一:简单的frp socks5/http代理

方案二:用frp映射v2ray的inbound端口+校外设备http/socks5代理

方案三:用frp映射v2ray的inbound端口+校外设备使用v2ray/ssr连接

方案四:用v2ray自带的反向代理功能

方案五:用路由器代替校内主机

设备

通讯过程的三台设备:

A.校内跳板机,电脑路由器之类的设备,前提是能够访问校外网络。

B.一台拥有公网ip的设备,一般是VPS云主机之类的

C.任意想要在校外访问校园网的设备

示意图

方案一:简单的frp socks5/http代理

frp在github的下载地址

以Windows为例

下载后解压
把frps.exe和frps.ini拷贝到你拥有公网ip的主机。
把frpc.exe和frpc.ini拷贝到校内的主机。
顾名思义,s就是server,c就是client。

在云主机上进行frps.ini配置:

1
2
3
[common]
bind_port = 12345(填写你要用来和校内主机建立连接的端口,注意检查防火墙)
token = 8d283ya2-7sl5-4a8d-857e (相当于密码,要与frpc.ini中的token保持一致)

这是最简单配置,更多配置请戳 frp官方中文文档

运行frps:
打开cmd,切换到frps.exe所在的目录,输入

1
frps.exe -c frps.ini

出现以下文字则启动成功
启动成功
然后在校内跳板机配置frpc.ini:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[common]
server_addr = 12.34.56.78(上面配置frps的主机的公网ip)
server_port = 12345 (上面的bind_port填哪个这里就填哪个)
token = 8d283ya2-7sl5-4a8d-857e(与上面token保持一致)
pool_count = 5 (与服务端通信时预设的连接池数量,如果对连接速度有要求可以设大一些)

[socks5_proxy]
type = tcp
remote_port = 8080 (设置远程云主机的8080端口为监听端口,可供校外机器连接)
plugin = socks5
use_encryption = true (加 密 通 讯)
#如果不想设置用户名密码就把下面两行删掉,因为有的浏览器不支持身份认证
plugin_http_user = xxx (用户名)
plugin_http_passwd = xxxxxx (密码)

如果不想要socks5代理,也可以换成http代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[common]
server_addr = 12.34.56.78(上面配置frps的主机的公网ip)
server_port = 12345 (上面的bind_port填哪个这里就填哪个)
token = 8d283ya2-7sl5-4a8d-857e(与上面token保持一致)
pool_count = 5 (与服务端通信时预设的连接池数量,如果对连接速度有要求可以设大一些)

[http_proxy]
type = tcp
remote_port = 8080(设置远程云主机的8080端口为监听端口,可供校外机器连接)
plugin = http_proxy
use_encryption = true (加 密 通 讯)
#如果不想设置用户名密码就把下面两行删掉,因为有的浏览器不支持身份认证
plugin_http_user = xxx
plugin_http_passwd = xxxx

比较鸡肋的就是
frp的http_proxy好像只能访问http,不能访问https网站

运行frpc:
打开cmd,切换到frpc.exe所在的目录,输入

1
frpc.exe -c frpc.ini

出现以下文字则连接成功:
连接成功
现在socks5代理/http代理已经搭建完成
只要在校外主机的浏览器设置代理就可以访问校内网络了:
设置代理
通讯过程:校外设备向云主机发送网络请求,然后云主机把请求交给校内设备代理,校内设备进行代理,通过云主机返回校外设备请求的内容。

方案二:用frp映射v2ray的inbound端口+校外设备http/socks5代理

该方案适用于校外设备无法使用v2ray的情况

值得一提的是,socks5的数据都是没有经过加密的明文数据,所以方案二与方案一并不被推荐

思路:在校内设备搭建一个v2ray的代理,将v2ray的inbound设为socks5流量,然后把这个inbound端口通过frp映射到云主机上。校外设备则通过socks5或http代理访问校内外。

仍然以Windows为例

首先云主机配置frps.ini:

1
2
3
[common]
bind_port = 12345(填写你要用来和校内主机建立连接的端口,注意检查防火墙)
token = 8d283ya2-7sl5-4a8d-857e (相当于密码,要与frpc.ini中的token保持一致)

然后打开cmd,切换到frps.exe所在目录运行:

1
frps.exe -c frps.ini

完成云主机的配置

然后是校内设备搭建v2ray与frp:
  首先是v2ray:
    github的v2rayN下载地址
    然后在随意位置新建一个123.json,进行编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"inbounds": [
{
"port": 10808, //填监听端口,自己决定
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}

    然后打开v2rayN.exe
    左上角“服务器–添加自定义服务器”
    添加服务器
    然后选择刚才编辑的123.config导入,就能在列表看到导入的配置了
    然后在右下角任务栏选择启动刚才配置的服务器
    选择服务器
    然后选择”Http代理”,开启全局模式
    之后可以看到v2ray的UI最下边的一行代理地址:
代理地址
  现在v2ray配置完成了,接下来配置frpc.ini:

1
2
3
4
5
6
7
8
9
10
[common] #common和前面的一样,不再赘述
server_addr = 12.34.56.78
server_port = 12345
token = 8d283ya2-6dba-4a8d
pool_count = 5

[v2ray_mapping]
type = tcp
remote_port = 8083 #你的云主机上可供校外设备挂代理的端口
local_port = 10809 #校内设备本地http的端口,参考上一张图

    然后一样是打开cmd切换到所在目录,输入:

1
frpc.exe -c frpc.ini

  这样frpc也配置完成。

在校内设备的配置完成,
接下来就是校外设备设置代理了:

以win10为例,打开系统代理设置
填入云主机的ip和http的端口
win10设置
就可以使用校内设备的代理了

当然,这样是整个系统使用校内代理,比较麻烦。

推荐用浏览器插件 SwitchyOmega
设置校园网专用的代理,如图:
在这里插入图片描述
然后可以在auto switch中设置自动切换
自动切换
在访问校园网时会自动切换为使用刚才配置的代理。

方案三:用frp映射v2ray的inbound端口+校外设备使用v2ray/ssr连接

该方案适用于校外设备可以使用v2ray的情况。
校内设备和云主机的配置过程和上述方案二大同小异。

其中v2ray的123.json配置需要换为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"inbounds": [
//当然,v2ray也支持ssr。所以下面的这段配置也可以换成ssr配置
//然后校外设备就可以用ssr连接
//由于我不懂ssr配置,所以就不放出来了
{
"port": 10809, // 本地监听端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "123456", // 用户ID(相当于ssr中的密码),客户端与服务器只要保持相同即可
"alterId": 64 //客户端与服务端须保持相同
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom", // 传出协议
"settings": {}
}
]
}

其他的都一样

最后是校外设备设置代理,以Windows为例:
打开v2rayN.exe,然后左上角”服务器–添加vmess服务器”,
填写参数:
添加VMess
点击确定即可。
然后是安卓,先v2rayNG github下载,然后也是一样的配置。

方案四:用v2ray自带的反向代理功能

我没有试过这种方案,所以只能放个文档链接

该方案需要三方设备都使用v2ray

方案五:用路由器代替校内主机

众所周知,路由器可以刷各种固件。有些固件比如梅林或者老毛子之类的本身就自带v2ray和frp。
放假回家如果在校内没有跳板机,不妨试试路由器。
网上可以找到很多刷固件的教程。

接下来以老毛子为例进行说明。

首先校内的路由器必须要能上校外网络,很多学校是使用drcom的,对于drcom登录的,可以参考这篇文章

或者直接ssh路由器,然后运行某些登录脚本。

frp设置和前面的没什么不同,路由器可以充当frpc或者frps,我们要让路由器充当frpc。

frp设置:
勾选“启动frpc客户端”,后面配置和前面的一样
frp
v2ray配置:
开启透明代理,设置透明代理窗口1099
(如果你这个路由器不想用于平时上网,可以不用勾选)
v2ray
然后进行config.json的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"inbounds": [
{
//这个是透明代理的inbound,平时连路由器上网的流量走这里
"tag": "transparent",
"port": 1099,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy"
}
}
},
{
//这个是校外跳进来的inbound,校外的流量走这里
"tag": "vmess-mapping",
"port": 10809, // 本地监听端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "123456", // 用户ID(相当于ssr中的密码),客户端与服务器只要保持相同即可
"alterId": 64 //客户端与服务端须保持相同
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
{
//如果这个路由器还想用于平时上网,
//可以自行添加自己平时 上 网 的配置,
//然后在rules里面添加路由规则
}
],
"routing": {
"domainStrategy": "IPOnDemand",
"rules": []
}
}

如果这个路由器还想用于平时上网,
可以自行添加自己平时上网的服务器配置,
然后在rules里面添加路由规则。

end

本文地址: https://www.chimaoshu.top/(详细版)基于frp与v2ray的几种校园网内网穿透的方案/
版权声明:本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议,转载请注明出处。

Welcome to my other publishing channels