使用 frp 实现内网穿透

使用 frp 内网穿透#

背景:内网服务器为 ESXI 环境,希望从外网通过域名直接访问对应服务器的服务。一开始用花生壳配合路由器做端口转发,但端口数量以及服务类型据局限较大,故寻求新的内网穿透方式。

  • frp:Github
  • 系统:CentOS 7 x64
  • 需求:一台固定公网 IP 的云服务器,域名
  • 内网服务器 IP 段:192.168.1.201-254

下载#

cd /root
wget -c https://github.com/fatedier/frp/releases/download/v0.23.1/frp_0.23.1_linux_amd64.tar.gz
tar zxvf frp*.tar.gz 

frps 服务端#

安装在云服务器上

cd /root/frp
chmod +x frps
yum install -y supervisor
systemctl disable firewalld && systemctl stop firewalld

# 定义 frps 配置
cat > /root/frp/frps.ini <<EOF
[common]
bind_port = 30000
vhost_http_port = 30100
vhost_https_port = 30143
subdomain_host = dev.demo.cc
dashboard_port = 30200
dashboard_user = admin
dashboard_pwd = admin
EOF

# 定义运行守护配置
cat > /etc/supervisord.d/frps.ini <<EOF
[program:frps]
directory=/root/frp
command=/root/frp/frps -c /root/frp/frps.ini
autostart=true
autorestart=false
stderr_logfile=/var/log/supervisor/frps_stderr.log
stdout_logfile=/var/log/supervisor/frps_stdout.log
EOF

# 开启服务
systemctl enable supervisord && systemctl start supervisord

如对已配置的 frps.ini 进行修改,vim /root/frp/frps.ini 编辑保存之后,执行 supervisorctl reload frps

访问 IP:30200 如能进入 frp 运行面板则成功,否则请从头检查配置

frpc 客户端#

客户端程序运行在想要被穿透的内网服务器上,用来与服务端沟通,一个客户端只可以与一个服务端连接

服务器 IP:192.168.1.206
服务:

  • web,端口 80
  • ssh,端口 22
cd /root/frp
chmod +x frpc
yum install -y supervisor
systemctl disable firewalld && systemctl stop firewalld

cat < /root/frp/frpc.ini <<EOF
[common]
server_addr = 云服务器公网 IP
server_port = 30000

[206_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 30106
use_encryption = true
use_compression = true

[206_web]
type = http
local_port = 80
subdomain = 206-web
use_encryption = true
use_compression = true
EOF

# 定义运行守护配置
cat > /etc/supervisord.d/frpc.ini <<EOF
[program:frpc]
directory=/root/frp
command=/root/frp/frpc -c /root/frp/frpc.ini
autostart=true
autorestart=false
stderr_logfile=/var/log/supervisor/frpc_stderr.log
stdout_logfile=/var/log/supervisor/frpc_stdout.log
EOF

# 开启服务
systemctl enable supervisord && systemctl start supervisord

更多服务转发配置请看 官方说明

如对已配置的 frpc.ini 进行修改,vim /root/frp/frpc.ini 编辑保存之后,执行 supervisorctl reload frpc

访问 206-web.dev.demo.cc:30100 如能成功访问则配置成功
ssh 连接命令:ssh -oPort=30106 root@云服务器公网 IP

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 11

subdomain_host = dev.demo.cc
必须使用域名吗,ip 可以吗?

6年前 评论
m01i0ng

@zev_only 可以、把 frps.ini 和 frpc.ini 所有的 subdomain 类似项删掉即可

6年前 评论
GDDD

command=/root/frp/frps -c /root/frp/frpc.ini 应该是 command=/root/frp/frpc -c /root/frp/frpc.ini

6年前 评论
m01i0ng

@GDDD 谢谢、已更改

6年前 评论

部署很简单,是客户端经常添加多项目调试操作不方便,在熟悉 GO 想根据源码改一波不知道能不能成功

6年前 评论
m01i0ng

@DonSen 确实、公司自己用的我弄了个扩展可以可视化修改配置文件、

6年前 评论

狗洞了解下,比较简洁~皆是基于 ssh

6年前 评论
l269798518

钉钉也出了个使用比较简单的内网穿透工具,好像是根据 ngrok 定制的,可以了解下 https://open-doc.dingtalk.com/microapp/debug/ucof2g

6年前 评论
m01i0ng

@l269798518 谢谢

6年前 评论
m01i0ng

@AlicFeng 谢谢

6年前 评论

目前再用网云穿,很不错,简单方便,对于小白来说是一个很好的选择

5年前 评论