frp内网穿透记录
警告
本文最后更新于 2022-10-12,文中内容可能已过时,请谨慎使用。
1.环境介绍
- 腾讯轻量云服务器(server1)+宝塔面板
- 本地Ubuntu20.04LTS(server2)+Nginx+静态IP
2.安装frp工具
下载frp工具:https://github.com/fatedier/frp/releases
新建一个frp
文件夹,解压上面下载的压缩包到该文件夹。
3.frp服务器端配置
本节都在server1
操作, 将server1
配置为frp
服务器端
先将上面解压的文件夹上传到server1
的/root
路径
scp ./frp server1:/root
ssh server1
sudo cd /root
# 添加权限
chmod 777 frps.ini frps
frp
服务器端配置在frps.ini
中,配置如下
[common]
bind_port = 6000
vhost_http_port = 808
vhost_https_port = 909
dashboard_user = admin
dashboard_pwd = admin
token=yourpassword
注: 6000
,808
,909
需要在server1
中放行
上述配置中6000
是frp
服务端口,808
是http
服务端口,909
是https
服务端口,由于我使用了宝塔面板,和80
和443
端口冲突了
启动服务器端
./frps -c frps.ini
我们也可以将frps
配置为服务
首先创建一个服务文件: frps.service
sudo vim /etc/systemd/system/frps.service
chmod 777 /etc/systemd/system/frps.service
配置如下:
[Unit]
Dcription=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
User=root
Restart=on-failure
ExecStart=/root/frp/frps -c /root/frp/frps.ini
ExecReload=/root/frp/frps -c /root/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
添加该服务
# 通知systemd一个新的单元文件存在
sudo systemctl daemon-reload
# 应用frps服务
sudo systemctl enable --now frps
服务管理:
# 检查服务状态
sudo systemctl status frps
# 启动、停止、重启frps
sudo systemctl start frps
sudo systemctl stop frps
sudo systemctl restart frps
4.frp客户端配置
本节将server2
配置为frp
客户端
先将上面解压的文件夹上传到server2
的/root
路径
scp ./frp server2:/root
ssh server2
sudo cd /root
# 添加权限
chmod 777 frpc.ini frpc
frp
客户端配置在frpc.ini
中,配置如下
[common]
server_addr = 替换为server1的ip
server_port = 6000
tls_enable = true
token=yourpassword
[EXSI]
type = https
local_ip = 你的内网ip(如server2的ip)
local_port = 80
remote_port = 909
custom_domains = exsi.abc.com
[NAS]
type = http
local_ip = 你的内网ip(如server2的ip)
local_port = 5000
remote_port = 808
custom_domains = nas.abc.com
[localblog]
type = http
local_ip = 你的内网ip(如server2的ip)
local_port = 8888
remote_port = 808
custom_domains = localblog.taholab.com
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
启动客户端
./frpc -c frpc.ini
同理,我们也可以将frpc
配置为服务
首先创建一个服务文件: frpc.service
sudo vim /etc/systemd/system/frpc.service
chmod 777 /etc/systemd/system/frpc.service
配置如下:
[Unit]
Dcription=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
User=root
Restart=on-failure
ExecStart=/root/frp/frpc -c /root/frp/frpc.ini
ExecReload=/root/frp/frpc -c /root/frp/frpc.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
添加该服务
# 通知systemd一个新的单元文件存在
sudo systemctl daemon-reload
# 应用frpc服务
sudo systemctl enable --now frpc
服务管理:
# 检查服务状态
sudo systemctl status frpc
# 启动、停止、重启frpc
sudo systemctl start frpc
sudo systemctl stop frpc
sudo systemctl restart frpc
5.快速使用
首先我在server1
上解析了一个域名:frp.bnblogs.cc
,然后在宝塔面板上创建同名网站用来访问本地服务器上的java
项目。
如果你有SSL
证书,可以配置成https
网站
在宝塔面板中设置反向代理如下:
接着启动frps
服务就行了,服务端配置完成!
接着在server2
中操作(首先确定通过server2
的ip
能正常访问你的项目)
接下来配置nginx
将default
配置复制一份到对应域名的配置
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/frp.bnblogs.cc.conf
修改frpc.ini
,添加下面的内容
[frp]
type = http
local_ip = server2的ip
local_port = 80
remote_port = 808
custom_domains = frp.bnblogs.cc
启动frp
客户端
使用浏览器访问https://frp.bnblogs.cc
,如果出现界面表示配置成功