使用 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 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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 确实、公司自己用的我弄了个扩展可以可视化修改配置文件、

5年前 评论

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

5年前 评论
l269798518

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

5年前 评论
m01i0ng

@l269798518 谢谢

5年前 评论
m01i0ng

@AlicFeng 谢谢

5年前 评论

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

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!