使用 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 协议》,转载必须注明作者和本文链接
subdomain_host = dev.demo.cc
必须使用域名吗,ip 可以吗?
@zev_only 可以、把 frps.ini 和 frpc.ini 所有的 subdomain 类似项删掉即可
command=/root/frp/frps -c /root/frp/frpc.ini 应该是command=/root/frp/frpc -c /root/frp/frpc.ini
@GDDD 谢谢、已更改
部署很简单,是客户端经常添加多项目调试操作不方便,在熟悉GO想根据源码改一波不知道能不能成功
@DonSen 确实、公司自己用的我弄了个扩展可以可视化修改配置文件、
狗洞了解下,比较简洁~皆是基于
ssh
钉钉也出了个使用比较简单的内网穿透工具,好像是根据 ngrok 定制的,可以了解下https://open-doc.dingtalk.com/microapp/debug/ucof2g
@l269798518 谢谢
@AlicFeng 谢谢
目前再用网云穿,很不错,简单方便,对于小白来说是一个很好的选择