这篇博客介绍了在Ubuntu22.04上部署frp-0.48.0内网穿透服务。
内网穿透允许我们在公共网络中安全地访问位于私有网络中的设备。其中一种常用的实现方式是使用frp(Fast Reverse Proxy)工具。frp是一个开源的内网穿透工具,它提供了简单而强大的功能,可以帮助我们轻松地实现内网穿透,让我们能够方便地访问内网资源。
服务端(公网IP服务器)
-
下载frp frp-0.48.0的下载地址为:fatedier/frp/releases/tag/vv0.65.0
#直接使用weget命令,使用github加速镜像 wget https://ghfast.top/https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
-
将文件上传至服务器
将下载的frp的.tar.gz文件传到服务器中(建议使用xftp)
# 在服务器中使用下面的命令解压.tar.gz文件 tar -zxvf frp_0.65.0_linux_amd64.tar.gz将解压后的文件夹移动到/root/目录下
# 移动到root目录下 sudo mv frp_0.48.0_linux_amd64/ /root/frp # 将文件夹以及其子文件权限设置为仅root可读可写 sudo chmod -R 700 frp # 将文件夹与其子文件的拥有者设置为root用户 sudo chown -R root:root frp -
frps配置
为了方便起见,以下配置需要切换到root用户,用sudo也可行。
# 进入到frp目录 cd /root/frp # 编辑frps的配置文件 nano frps.ini下面是frps服务器端的配置文件的参考,虚线中间的端口、用户名及密码请根据自己的需求更改
[common] # -------------------------------------------------------------------------------------- # bind_port为frps和frpc通信的端口,需要在防火墙中放行该端口 bind_port = 80001 # dashboard_port 网页界面的端口,在网页中输入ip:dashboard_port,可以查看frpc的连接情况 dashboard_port = 80002 # frps的连接密码,这里需要和frpc.ini文件中的token保持一致 token = password # 80002端口下的dashboard网页用户名密码,用来作为管理界面 dashboard_user = user dashboard_pwd = password # -------------------------------------------------------------------------------------- max_pool_count = 50 log_file = /root/frp/logs/frps.log log_level = info log_max_days = 10 # 我这里打开了tls加密,根据个人情况决定是否要开 tls_only = true -
设置开机自启动
# 先打开服务文件 cd /etc/systemd/system/ nano frps.service # 将下面内容写入到frps.service [Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s ExecStart=/root/frp/frps -c /root/frp/frps.ini ExecReload=/root/frp/frps -c /root/frp/frps.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target -
保存后执行下面命令启动开机自启动
# 修改完一次配置文件,就需要reload一下 systemctl daemon-reload # 打开服务 systemctl start frps.service # 暂停服务 systemctl stop frps.service # 设置开机自启动 systemctl enable frps.service ## 最后一定要检查一下服务是否打开 systemctl status frps.service
客户端(windows/ubuntu)
-
安装frp文件同上
- 切换到root用户,编辑frpc的配置文件,这里修改client的配置
# 进入到frp目录 cd /root/frp # 编辑frpc的配置文件 nano frpc.ini -
编辑frpc的配置文件。
[common] # 比如域名baidu.com / 它对应ip 180.101.49.11 server_addr = 你的服务器的IP地址(如果是动态IP,使用ddns的域名也行) # server_port和frps中的bind_port对应 # 即由于服务器上在端口80001开启了服务,所以你需要请求80001 server_port = 80001 # 与frps配置文件中的token对应,这个用来校验身份 token = password tls_enable = true # 第一个服务类型为tcp的ssh远程连接 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 下面的remote_port端口需要在部署frps的服务器中放行该端口 # 即我本地的22端口映射到公网服务器上的remote端口,服务器要打开这个端口,区分上面的服务端口80001 remote_port = 2222 # 第二个服务类型为udp的windows远程桌面连接,可以注释掉 [windows_remote] type = udp # 穿透的主机不仅局限于本机,这个地方我还不太明白 local_ip = 192.168.123.100 local_port = 3389 # 需要在部署frps的服务器中放行3389端口 remote_port = 3389 - 客户端启动frpc服务
cd /etc/systemd/system/ nano frpc.service将下面的内容写入到frpc.service
[Unit] Description=Frp Client Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s ExecStart=/root/frp/frpc -c /root/frp/frpc.ini ExecReload=/root/frp/frpc -c /root/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target - 保存后执行下面命令启动开机自启动
systemctl daemon-reload systemctl start frpc.service systemctl enable frpc.service # 注意最后检查是否与服务器实现通信 systemctl status frpc.service
至此完成所有步骤.
