frp实现内网穿透详细配置

1、条件

需要一个有公网IP的云服务器(我的是腾讯云)

2、frp下载及介绍

(1) frp下载:https://github.com/fatedier/frp/releases 下载最新版,根据自己的服务器下载对应版本(我的是linux64系统)

wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz

(2) 解压压缩包

tar -zxvf frp_0.34.3_linux_amd64.tar.gz
mv frp_0.34.3_linux_amd64 frpServer

包结构介绍

frp包结构
  • 服务器端:

    • frps: 服务器端服务启动文件
    • frps_full.ini: 启动配置文件(全版)
    • frps.ini :启动配置文件(简版)
  • 客户端(Linux版):

    • frpc :客户端服务启动文件
    • frpc_full.ini :启动配置文件(全版)
    • frpc.ini :启动配置文件(简版)

3、进入解压文件夹

cd frpServer

4、服务端配置及运行

4.1 修改端口frps.ini文件

[common]
bind_port = 9999 # bind_port是服务器的端口,我们最好不要使用默认端口

4.2 运行服务

  • 直接运行
# frp解压文件夹目录下运行,也可以使用全路径
# 相对路径
./frps -c frps.ini

# 绝对路径
/opt/frp/frpServer/frps -c /opt/frp/frpServer/frps.ini
  • 后台运行
nohup ./frpc -c ./frpc.ini &

4.3 配置系统启动时自动启动

  • /lib/systemd/system文件夹下创建frps.service文件

  • 编辑frps.service文件,输入以下内容(注:ExecStart 使用绝对路径 ):

[Unit]
Description=frp service
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/opt/frp/frpServer/frps -c /opt/frp/frpServer/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target
  • 启动服务:systemctl start frps

  • 设置服务开机自启动 :systemctl enable frps

5、客户端配置

5.1 Windows

(1)下载:https://github.com/fatedier/frp/releases 下载windows版的

(2)客户端配置文件frpc.ini

[common]
server_addr = 127.0.0.1 #服务端的公网IP
server_port = 9999 #服务端的端口

[ssh] # 名称可以随意命名,多个客户端对应一个服务端时,这个名称不能有相同的
type = tcp
local_ip = 127.0.0.1 #本地ip
local_port = 22 #本地要转发的端口
remote_port = 6666 #云服务器对外开放的端口

(3)服务运行

# 解压文件目录下运行命令
frpc -c frpc.ini

开机自启动,启动文件夹下新建frpc.vbs文件

  • 打开启动文件夹:WIN+R打开运行窗口中输入:%programdata%\Microsoft\Windows\Start Menu\Programs\Startup

  • frpc.vbs文件内容:

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run "#填写frp绝对路径#\frpc.exe -c #填写frp绝对路径#\frpc.ini",0

5.2 Linux

(1)下载:https://github.com/fatedier/frp/releases 下载Linux版的

(2)客户端配置文件frpc.ini

[common]
server_addr = 127.0.0.1 #服务端的公网IP
server_port = 9999 #服务端的端口

[ssh] # 名称可以随意命名(相当于应用名称),多个客户端对应一个服务端时,这个名称不能有相同的
type = tcp
local_ip = 127.0.0.1 #本地ip
local_port = 22 #本地要转发的端口
remote_port = 6000 #云服务器对外开放的端口

[ssh1] #应用1
type = tcp
local_ip = 127.0.0.1 
local_port = 1122 
remote_port = 1122

[ssh2] #应用2
type = tcp
local_ip = 127.0.0.1 
local_port = 1123 
remote_port = 1123

(3)服务运行

  • 直接运行
# frp解压文件夹目录下运行,也可以使用全路径
# 相对路径
./frpc -c frpc.ini

# 绝对路径
/opt/frp/frpClient/frpc -c /opt/frp/frpClient/frpc.ini
  • 后台运行
nohup ./frpc -c ./frpc.ini &

(4)配置系统启动时自动启动

  • /lib/systemd/system文件夹下创建frpc.service文件

  • 编辑frpc.service文件,输入以下内容(注:ExecStart 使用绝对路径):

[Unit]
Description=frp client
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/opt/frp/frpClient/frpc -c /opt/frp/frpClient/frpc.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target
  • 启动服务:systemctl start frpc

  • 设置服务开机自启动 :systemctl enable frpc