通过Frp内网穿透实现内网网络连接并创建vmess节点
前言
最近内网的服务器没有了公网ip导致自己回家完全没有办法连接到服务器跑数据,自己的东西又全部写在服务器上,导致我回家后必须使用远程桌面连接到内网的电脑再进行操作服务器,这几步操作异常繁琐,因此才决定使用内网穿透的方式进行连接服务器。
又因为服务器上直接开内网穿透安全性堪忧,所以自己还是只在自己的电脑上开穿透,然后在自己的内网电脑上架设加速节点,使得在家可以通过节点跳转到内网并进行访问内网的服务器。
正文
使用frp内网穿透较为简单,首先就是下载frp软件,不同的操作系统又不同的包,由于我的服务器是linux,我的内网电脑使用的是windows,
所以我需要下载frps
和 frpc.exe
,分别对应服务端和内网端。
Releases · fatedier/frp (github.com)
具有公网IP的服务端
可以使用git命令或者直接下载linux到本地然后通过ftp传到服务器中。
curl -o frp https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
打开压缩包,其中frps
为服务器端任务,frpc
为客户端任务,服务器端用于提供公网ip,使得客户端的某些端口可以通过frp发送到公网。
在运行frps前我们需要配置frps.ini 配置文件
# frps.ini 需要自行配置
# eg:端口
[common]
bind_port = 15300
# 帮助udp进行内网穿透的端口号
bind_udp_port = 15301
# 网页端控制面板
dashboard_addr = 0.0.0.0
dashboard_port = 8090
# 控制面板的用户名和密码
dashboard_user = vase
dashboard_pwd = password
# 在 srceen 中开启frps
srceen -S frps
./frps -c ./frps.ini
运行成功即可看到如下输出,当然我们可以打开对应的网页控制面板查看开启状态
ubuntu@VM-16-12-ubuntu:~/server/frp_0.38.0_linux_amd64$ ./frps -c ./frps.ini
2021/12/25 16:19:21 [I] [root.go:200] frps uses config file: ./frps.ini
2021/12/25 16:19:21 [I] [service.go:192] frps tcp listen on 0.0.0.0:15300
2021/12/25 16:19:21 [I] [service.go:276] nat hole udp service listen on 0.0.0.0:15301
2021/12/25 16:19:21 [I] [service.go:291] Dashboard listen on 0.0.0.0:8090
2021/12/25 16:19:21 [I] [root.go:209] frps started successfully
当然我们可以将frps 作为linux的服务进行运行使得开机即可进行启动:
# 将frps 拷贝到 /usr/bin/ 下
cp frps /usr/bin/frps
# 将frps.ini 拷贝到 /etc/frps/ 下
co frps.ini /etc/frps/frps.ini
chmod a+x systemd/frps.service
service systemd/frps.service start
service
# 直接修改frps.service中的frps 和frps.ini 再执行也可以
注意:国内的云服务基本有防火墙,我们需要去自己的服务商网站将自己的端口对应在防火墙中打开
需要穿透的内网客户端
客户端运行的程序为frpc
,即需要配置frpc.ini
文件:
# file frpc.ini
# 如我将本地的端口8080 映射到服务器的15302端口
[common]
server_addr = 101.35.195.xxx # 自己的服务器地址x.x.x.x
server_port = 15300
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 8080 # 本地需要映射到公网的端口
remote_port = 15302 # 远程可以访问的端口
# 执行
./frpc -c ./frpc.ini
# windows执行命令
./frpc.exe -c frpc.ini
运行成功显示:
2021/12/25 16:52:50 [I] [service.go:301] [9a8bc69c28aa350e] login to server success, get run id [9a8bc69c28aa350e], server udp port [15301]
2021/12/25 16:52:50 [I] [proxy_manager.go:144] [9a8bc69c28aa350e] proxy added: [ssh]
2021/12/25 16:52:50 [I] [control.go:180] [9a8bc69c28aa350e] [ssh] start proxy success
简单的使用vue创建8080网页测试下映射结果显示:
到这里其实就可以结束了,你可以直接在内网的服务器中将22端口映射出去,然后就可以通过公网的ip+映射的端口访问你的22端口,当然如果你需要创建一个内网节点就可以继续看下去。
创建内网vmess节点
如果希望将内网映射出一个v2节点和上述类似,值得注意的是vmess使用的tcp的协议,所以如果需要开放端口记得将端口设置为tcp,使得vmess可以正常穿透.
由于我是需要开节点的电脑是windows,所以我下载的是windows的版本,如果是linux就会更简单,网上有很多的一键脚本,这里我就不介绍了,我从v-core中的最简单配置说起,。
下载v2-core
windows 这里给个关键词,自己去GitHub搜索去吧 -> v2fly
配置config 文件
配置config.json
,并修改"inbounds",内容
这里做一个简单的范例:
"inbounds": [
{
"port": 15600, # 本地没有被占用且可以通过内网防火墙的端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "17c3eed1-6010-4938-996d-5b14xxxxxx", # 唯一的uuid,可以再linux系统中生成一个然后复制过来
# cat /proc/sys/kernel/random/uuid 进行随机生成
"alterId": 64
}
]
},
"streamSettings": {
"network":"ws", # websocket 模式
"wsSettings": {
"path": "/win/" # 随便设置一下
}
}
}
],
修改对应的frpc 配置文件
修改frpc.ini
文件
# 如我将本地的端口8080 映射到服务器的15302端口
[common]
server_addr = 101.35.195.xxx # 自己的服务器地址x.x.x.x
server_port = 15300
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 15600 # v2 中节点设置的端口
remote_port = 15302
启动程序
启动v2.exe
和 frpc.exe
其他设备配置节点
之后配置你电脑或者手机中的vmess 节点;
这里要注意的是地址填写的是你公网的ip,端口填写的是你公网映射过去的端口号,而不是本地的端口,传输模式因为设置的是websocket,所以这里也选择websocket。
测试
尝试使用该节点访问网页,当本机电脑中出现访问的网站即可,