内网穿透部署¶
约 626 个字 58 行代码 预计阅读时间 3 分钟
资源准备¶
- 内网穿透软件包:frp,下载
frp_0.65.0_linux_amd64.tar.gz
- 可以连接公网的云服务器(本次是Ubuntu 24.04)
- 本地虚拟机(本次是Ubuntu 24.04)
云服务器frp
服务配置¶
下载并解压内网穿透软件包,打开frps.toml
文件,里面存放着当前frp
服务的服务端端口,这个端口用于后续frp
客户端进行连接,例如设置端口为8081:
INI | |
---|---|
1 |
|
使用下面的命令启动frp
服务:
Bash | |
---|---|
1 2 |
|
启动后可以看到云服务器开始在0.0.0.0:8081
端口开始监听
本地虚拟机frp
服务配置¶
打开frpc.toml
文件,首先配置要连接的frp
服务端IP地址和端口,例如:
INI | |
---|---|
1 2 |
|
接下来配置代理,例如:
INI | |
---|---|
1 2 3 4 5 6 |
|
这个配置的作用是将本地机器的SSH服务(端口22)通过frp
服务器暴露到公网。当通过云服务器8.110.214.88:9011
端口连接时,frp
会将这个连接转发到本地机器的127.0.0.1:22
端口,从而实现远程SSH登录到内网机器的功能
使用下面的命令启动frp
服务:
INI | |
---|---|
1 2 |
|
一旦连接成功,可以在frp
服务端看到有客户端连接成功的日志
Note
注意:
- 现在可能还不能通过公网的任意一台设备进行连接,需要配置云服务器的安全组,开放的端口即为上面设置的7011和9011,访问来源是任意即可
- 如果虚拟机开启了防火墙(可以使用
sudo ufw status
),则需要配置端口,例如:Bash 1
sudo ufw allow 9011
开启本地虚拟机frp
服务开机自启动¶
Note
云服务器因为很少关机,所以基本上不配置,如果需要配置,只需要按照本地虚拟机的配置方式照葫芦画瓢即可,但是需要改变涉及到frpc
的地方为frps
配置步骤如下:
- 将
frpc
文件和其配置文件放到系统指定目录下 -
改变文件的拥有者并设置可执行权限
Bash 1 2 3 4 5
sudo mkdir -p /etc/frp sudo cp /home/yourname/frpc.toml /etc/frp/frpc.toml # /home/yourname替换为实际的frpc.toml文件所在目录 sudo cp /home/yourname/frpc /usr/local/bin/frpc # # /home/yourname替换为实际的frpc文件所在目录 sudo chown root:root /usr/local/bin/frpc sudo chmod +x /usr/local/bin/frpc
-
创建
systemd
服务文件Bash 1
sudo vim /etc/systemd/system/frpc.service # 也可以使用其他文本编辑器
-
编辑配置文件内容
INI 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[Unit] Description=FRP Client Service # frp服务端就将Client修改为Server After=network.target [Service] Type=simple User=root Group=root ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml # 如果是frp服务端,需要配置为frps,就是第一步拷贝的文件路径 Restart=always RestartSec=3 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target
说明:
User=root
:如果你的frp
需要绑定80
、443
等特权端口,必须用root
。如不需要,可改为你自己的用户Restart=always
:崩溃后自动重启LimitNOFILE=1048576
:提升文件描述符限制,避免高并发时出错After=network.target
:确保网络启动后再启动frp
服务
-
重载
systemd
配置并启用自启动Bash 1 2 3 4 5 6 7 8 9 10 11
# 重载systemd配置 sudo systemctl daemon-reload # 启用开机自启 # 如果是frp服务端,需要将frpc修改为frps,后面类似 sudo systemctl enable frpc # 启动服务 sudo systemctl start frpc # 查看状态 sudo systemctl status frpc # 查看日志(实时) sudo journalctl -u frpc -f
其他服务管理命令:
Bash | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 |
|