frp 内网穿透搭建指南

背景

公司没有自建内网 VPN,项目出现问题只能来公司解决非常不方便。由于家里和公司都是使用的 Mac 电脑,所以只要实现内网穿透就可以直接使用 vnc 远程控制公司电脑了。目前市面上有很多内网穿透产品,例如:frp、ngrok、natapp、花生壳等。

  • ngrok:免费,不需要自建服务端,配置简单。但可能由于服务端在国外,延迟较高。
  • frp:免费,配置比较复杂,需要自建服务端。
  • natapp:免费/付费,可以理解为国内的 ngrok,配置简单。配置可参考https://blog.csdn.net/m0_68539124/article/details/128531080
  • 花生壳:免费/付费,免费版每月 1G 流量,配置也很简单。

正好前段时间买了台腾讯云服务器,下面就来记录下如何搭建 frp 来实现内网穿透。

服务端

首先你需要一台云服务器。这里以腾讯云轻量应用服务器 ubuntu 64 位为例。

下载 frp 并解压

版本信息可访问:https://github.com/fatedier/frp/releases (国内:https://gitcode.net/mirrors/fatedier/frp/-/releases?spm=1033.2243.3001.5877

# 下载(比较慢)
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz

# 解压缩
tar -zxvf frp_0.51.3_linux_amd64.tar.gz

进入解压后目录,并配置

# 进入目录
cd frp_0.51.3_linux_amd64

# 编辑 frps.ini
vim frps.ini

编辑 frps. ini 文件内容如下:

注意:将注释内容(# ****)去掉。

[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000
# 授权码,请改成更复杂的
token = 1234567  # 这个token之后在客户端会用到

# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

设置自启动 frp 服务

  • 移动 frps 相关文件,并赋予权限
# 移动文件
sudo mkdir -p /etc/frp
sudo cp frps.ini /etc/frp
sudo cp frps /usr/bin

# 赋予权限
sudo chmod 777 /usr/bin/frps
  • 新建自启动服务配置
sudo vim /usr/lib/systemd/system/frps.service

编辑 frps.service 文件内容如下:

[Unit]
Description=Frp Server Service
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini #这里要和上面的路径一致
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target
  • 重载配置并启动服务
sudo systemctl daemon-reload       # 重新加载配置
sudo systemctl enable frps.service # 启用 frps 开机启动
sudo systemctl start frps.service  # 启动 frps 服务

# 停止服务(根据需要!!!)
sudo systemctl stop frps.service
  • 检查启动状态
ps aux | grep frps

如下表示启动成功
image.png

配置防火墙,开放端口

  • 查看防火墙状态
sudo ufw status 

如果是开启状态,则配置如下:

# 7000 和 7500 要和上面 frps. ini 配置的端口一致。
sudo ufw allow 7000
sudo ufw allow 7500
  • 云服务器平台防火墙配置

我这里是腾讯云轻量应用服务器,直接在轻量应用服务器的防火墙中配置。
阿里云或者腾讯云的“云服务器”产品中叫做“安全组”

image.png

验证

全部配置完毕后,可以直接访问 xx.xxx.xxx.x:7500 (服务器公网ip:7500)进入 frp 后台管理界面。
首次进入会要求登录,使用的就是在 frps. ini 文件中配置的 dashboard_user 和 dashboard_pwd。
显示如下界面,表示 frp 服务端配置成功!
image.png

客户端

公司电脑是 m2 芯片的 Mac 电脑,所以下面记录的是 arm 芯片的 Mac 电脑配置。

下载 frp 并解压

与服务端来源一致:https://github.com/fatedier/frp/releases (国内:https://gitcode.net/mirrors/fatedier/frp/-/releases?spm=1033.2243.3001.5877
image.png

进入解压后目录,并配置

编辑 frpc.ini 文件,内容如下:

注意:将注释内容(# ****)去掉。

[common]
server_addr = xx.xxx.xxx.x #服务器公网ip
server_port = 7000 #与 frps.ini 中配置的端口一致
token = 1234567 #与 frps.ini 中配置的 token 一致

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 5900 #映射至服务器的端口,需要在服务器防火墙中开启此端口!!!
use_encryption = true
use_compression = true

设置自启动 frp 服务

  • 直接启动

进入到解压后目录下,选择 frpc 文件右键打开,此时会有提示,选择打开。
之后执行如下命令:

./frpc -c ./frpc.ini

显示如下内容,表示启动成功
image.png

  • 自启动配置
# 编辑自启动文件
touch ~/Library/LaunchAgents/frpc.plist
vim ~/Library/LaunchAgents/frpc.plist

编辑 frpc.plist 文件内容如下:

注意:/usr/local/bin/frpc/frpc 和 /usr/local/bin/frpc/frpc.ini 路径,可以将 frpc 和 frpc.ini 移动到该路径下,或者将路径替换为这俩文件所在路径。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>frpc</string>
    <key>ProgramArguments</key>
    <array>
     <string>/usr/local/bin/frpc/frpc</string>
  	 <string>-c</string>
     <string>/usr/local/bin/frpc/frpc.ini</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

执行如下命令,加载并生效

sudo chown root ~/Library/LaunchAgents/frpc.plist
sudo launchctl load -w ~/Library/LaunchAgents/frpc.plist
sudo launchctl start frpc

//卸载、关闭命令
sudo launchctl unload -w ~/Library/LaunchAgents/frpc.plist
sudo launchctl stop frpc

//查看 frpc 进程状态
sudo launchctl list | grep frpc

配置防火墙

这里偷懒,直接关闭了防火墙。

完结

至此,frp 服务端、客户端都配置完成。需要将公司Mac开启屏幕共享就可以在家远程控制电脑啦。连接时使用的是 vnc://服务器公网ip:客户端配置的remote_port(例如:vnc://xx.xxx.xxx.x:5900)。

参考

https://segmentfault.com/a/1190000021724321
https://blog.csdn.net/weixin_43922901/article/details/109261700
https://www.isisy.com/search/frps/
https://blog.csdn.net/dddgggd/article/details/122599616





Hi,我是“青杉”,您可以通过如下方式关注我:

  • 公众号:ByteStefan
  • 掘金:https://juejin.cn/user/3175045310722119
  • 博客:https://101wr.cn
  • 19
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值