前言

emm因为学校里有一些服务必须用到校园网才能访问,而我有时候可能会长时间不在学校(回家啊出去玩什么的),这时候要访问这些内网服务就很麻烦~~(包括我们实验室的靶场也需要校园网西八)~~,本科期间我的舍友搭了个内网穿透,通过在浏览器中搭载一个proxy SwitchyOmega插件设置我们搭建好的代理服务器后,即可在浏览器中访问我们想要访问的内网服务了,因此这次我也照葫芦画瓢自己搭一个内网穿透。

知识点

frps、socks5、http代理、云服务器、防火墙、内网穿透

搭建过程

①前期准备

  • 本实验方案需要用到一台有公网ip的云服务器(租vps一般都会有公网ip的)和一台连接了内网的设备,我这里用的是一台华为云Flexus云服务的vps和一台小工控机(就是前面做软路由用到的J1900)。VPS的系统版本是CentOS 8.2,工控机的系统版本是Ubuntu 22.04.4

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压

    这里用到的frp版本为0.44.0(有更高的版本,但新的版本配置语法改动较大,比较麻烦),可以在这里:https://github.com/fatedier/frp/releases 获取对应的版本,然后放到vps和本地设备中,进行解压 token = xxx # frp客户端连接时的密码,可以自行调整

    获取对应的版本,然后放到vps和本地设备中,进行解压 token = xxx # frp客户端连接时的密码,可以自行调整 dashboard_pwd = xxx # web界面的登录密码,可以自行调整 authentication_method = token # 认证方法 token = xxx # frp客户端连接时的密码,可以自行调整 dashboard_pwd = xxx # web界面的登录密码,可以自行调整 authentication_method = token # 认证方法 token = xxx # frp客户端连接时的密码,可以自行调整 dashboard_pwd = xxx # web界面的登录密码,可以自行调整 ./frps -c ./frps.ini # 可以在最后面加个&实现后台运行 token = xxx # frp客户端连接时的密码,可以自行调整 dashboard_pwd = xxx # web界面的登录密码,可以自行调整 ./frps -c ./frps.ini # 可以在最后面加个&实现后台运行

运行后显示如下则代表成功启动 dashboard_pwd = xxx # web界面的登录密码,可以自行调整 image-20241210204059926 ./frps -c ./frps.ini # 可以在最后面加个&实现后台运行

 1配置完成后,将frps设置为系统服务
 2```python
 3新建frps服务配置文件
 4vim /etc/systemd/system/frps.service
 5运行后显示如下则代表成功启动
 6# 配置如下
 7
 8[Unit]
 9Description=FRPS Server
10After=network.target
11
12[Service]
13Type=simple
14ExecStart=/root/data/frp/frp_0.44.0_linux_amd64/frps -c /root/data/frp/frp_0.44.0_linux_amd64/frps.ini
15Restart=on-failure
16StandardOutput=append:/var/log/frps.log  # 将标准输出至/var/log/frps.log
17StandardError=append:/var/log/frps.log   # 将错误输出至/var/log/frps.log
18
19[Install]
20WantedBy=multi-user.target

配置完成后重新加载服务daemon,开启frps服务

1systemctl daemon-reload
2systemctl start frps
3systemctl status frps

[common] image-20241210204059926 ./frps -c ./frps.ini # 可以在最后面加个&实现后台运行 token = ikaros1264 # frp客户端连接时的密码,可以自行调整 运行后显示如下则代表成功启动

server_addr = xxx.xxx.xxx.xxx # 云服务器的公网IP authentication_method = token # 认证方式 server_port = 7000 # 配置的frp的服务端口 token = xxx # 配置的frp的连接密码 dashboard_user = 2hi5hu # web界面的登录账户,可以自行调整 运行后显示如下则代表成功启动

local_ip = 127.0.0.1 # 本机的内网IP地址 local_port = 22 # ssh的端口 server_port = 7000 # 配置的frp的服务端口 token = xxx # 配置的frp的连接密码

 1运行后显示如下则代表成功启动
 2local_ip = 127.0.0.11	# 本机的内网IP地址
 3local_port = 3389		# rdp的端口
 4local_port = 22			# ssh的端口
 5server_port = 7000		# 配置的frp的服务端口
 6token = xxx		# 配置的frp的连接密码
 7
 8remote_port = 6000		# http的代理端口
 9plugin = http_proxy		# 使用http代理的插件
10local_port = 3389		# rdp的端口
11local_port = 22			# ssh的端口
12server_port = 7000		# 配置的frp的服务端口
13token = xxx		# 配置的frp的连接密码

./frpc -c ./frpc.ini #可以在最后面加个&实现后台运行 plugin = http_proxy # 使用http代理的插件 local_port = 3389 # rdp的端口 local_port = 22 # ssh的端口 server_port = 7000 # 配置的frp的服务端口 运行后显示如下则代表成功启动,成功连接上服务端 token = xxx # 配置的frp的连接密码 image-20241210204243041

配置完成后,将frpc设置为系统服务

 1新建frpc服务配置文件
 2vim /etc/systemd/system/frpc.service
 3
 4# 配置如下
 5
 6[Unit]
 7Description=FRPC Server
 8After=network.target
 9
10[Service]
11Type=simple
12ExecStart=/root/data/frp/frp_0.44.0_linux_amd64/frpc -c /root/data/frp/frp_0.44.0_linux_amd64/frpc.ini
13Restart=on-failure
14StandardOutput=append:/var/log/frpc.log  # 将标准输出至/var/log/frpc.log
15StandardError=append:/var/log/frpc.log   # 将错误输出至/var/log/frpc.log
16
17[Install]
18WantedBy=multi-user.target

配置完成后重新加载服务daemon,开启frpc服务

1systemctl daemon-reload
2systemctl start frpc
3systemctl status frpc

./frpc -c ./frpc.ini #可以在最后面加个&实现后台运行 plugin = http_proxy # 使用http代理的插件 local_port = 3389 # rdp的端口 local_port = 22 # ssh的端口 这时就可以访问内网的服务啦(校园网的服务之类的) server_port = 7000 # 配置的frp的服务端口 运行后显示如下则代表成功启动,成功连接上服务端

token = ikaros1264 # 配置的frp的连接密码 image-20241210204243041

 1+ 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中`SwitchyOmega`插件本身不支持Socks5代理
 2+ 持久化做的有点问题,一关finalshell ftp服务就会断,暂时不知道为啥,到时候要处理一下
 3
 4./frpc -c ./frpc.ini	#可以在最后面加个&实现后台运行
 5plugin = http_proxy		# 使用http代理的插件
 6local_port = 3389		# rdp的端口
 7local_port = 22			# ssh的端口
 8这时就可以访问内网的服务啦(校园网的服务之类的)
 9token = ikaros1264
10运行后显示如下则代表成功启动,成功连接上服务端
11
12
13![image-20241210204243041](https://raw.githubusercontent.com/2hi5hu/md_image/main/img/image-20241210204243041.png)
14[ssh]
15+ 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中`SwitchyOmega`插件本身不支持Socks5代理
16+ 持久化做的有点问题,一关finalshell ftp服务就会断,暂时不知道为啥,到时候要处理一下
17
18./frpc -c ./frpc.ini	#可以在最后面加个&实现后台运行
19plugin = http_proxy		# 使用http代理的插件
20local_port = 3389		# rdp的端口
21remote_port = 20022
22这时就可以访问内网的服务啦(校园网的服务之类的)
23
24运行后显示如下则代表成功启动,成功连接上服务端
25
26[rdp]
27![image-20241210204243041](https://raw.githubusercontent.com/2hi5hu/md_image/main/img/image-20241210204243041.png)
28type = tcp
29+ 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中`SwitchyOmega`插件本身不支持Socks5代理
30+ 持久化做的有点问题,一关finalshell ftp服务就会断,暂时不知道为啥,到时候要处理一下
31
32./frpc -c ./frpc.ini	#可以在最后面加个&实现后台运行
33plugin = http_proxy		# 使用http代理的插件
34remote_port = 23389
35
36这时就可以访问内网的服务啦(校园网的服务之类的)
37[http_proxy]
38运行后显示如下则代表成功启动,成功连接上服务端
39
40type = tcp
41![image-20241210204243041](https://raw.githubusercontent.com/2hi5hu/md_image/main/img/image-20241210204243041.png)
42remote_port = 6000
43+ 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中`SwitchyOmega`插件本身不支持Socks5代理
44
45./frpc -c ./frpc.ini	#可以在最后面加个&实现后台运行

配置好后执行下面的命令 这时就可以访问内网的服务啦(校园网的服务之类的)

运行后显示如下则代表成功启动,成功连接上服务端

1![image-20241210204243041](https://raw.githubusercontent.com/2hi5hu/md_image/main/img/image-20241210204243041.png)
2./frpc -c ./frpc.ini
3+ 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中`SwitchyOmega`插件本身不支持Socks5代理

这时就可以访问内网的服务啦(校园网的服务之类的)

最后在omega中配置好即可实现内网穿透

image-20241209212720291

  • 插件用Socks5好像不能成功代理,暂时不太清楚是为什么,有可能是因为google浏览器中SwitchyOmega插件本身不支持Socks5代理

③遇到的问题

  • 客户端连接不上服务端,显示连接超时——配置vps的安全组,将用到的端口都开放,并且要在vps里开放防火墙的用到的端口(只配置安全组不行一样会超时)