【使用背景】
公司的机器人上配备了一个4G路由器,工控机连上路由器后就可以访问公网,因为这个机器人是用来室外作业的,所以我就在寻思能不能坐在办公室,远程通过公网进到工控机中的ubuntu系统里去调试机器人。果然,这样的工具早有大佬做出并开源造福世人,那就是今天的主角——FRP !FRP 可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机;FRP 有服务端和客户端,服务端需要装在有公网IP的服务器上,客户端装在内网主机上。
【使用前提】
1、一台具备公网IP的服务器(阿里云、腾讯云、华为云等)
2、一台内网主机
3、FRP工具包
【工具下载】
Releases · fatedier/frp · GitHubA fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. - Releases · fatedier/frphttps://github.com/fatedier/frp/releases选择合适的版本下载并解压到 /home 目录下,我这边使用的是0.51.2,切记服务器和工控机要使用相同版本的 FRP !
【服务器端】
1、修改配置文件
#
打开服务器端配置文件
vim ./frps.ini
#
我的填写内容如下:
[common]
bind_port = 7000 #服务端与客户端通信端口
dashboard_port = 7500 #后台管理端口
dashboard_user = admin #后台登录用户名
dashboard_pwd = admin
vhost_http_port = 7002 # http穿透端口
vhost_https_port = 7003 # https穿透端口
max_pool_count = 50
token = aaa123 #身份验证令牌,frpc要与frps一致
tcp_mux = true
log_file = /usr/local/frp/frps.log #日志相关
log_level = info
log_max_days = 3
authentication_timeout = 0 #服务器与客户端时间相差15min会连接失败,0表示不验证
subdomain_host = test.xyz #注册的域名
privilege_mode = true
2、设置FRP开机自启动
#需要先 cd到 frp解压目录.
#复制文件
cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini
#编写 frp service 文件,以 ubuntu 为例
vim /usr/lib/systemd/system/frps.service #有时候需要手动创建system文件夹
# frps.service内容如下
[Unit]
Description=frps
After=network.target
[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
#启动 frp 并设置开机启动
systemctl enable frps
systemctl start frps
systemctl status frps
#部分服务器上,可能需要加 .service后缀来操作,即:
systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service
【工控机端】
1、修改配置文件
#打开客户端配置文件
vim ./frpc.ini
#我的填写内容如下:
[common]
server_addr = 10.10.xxx.xxx #公网服务器ip
server_port = 7000 #公网服务端通信端口
token = aaa123 #令牌,与公网服务端保持一致
tcp_mux = true
log_file = /usr/local/frp/frpc.log #日志相关
log_level = info
log_max_days = 3
authentication_timeout = 0 #服务器与客户端时间相差15min会连接失败,0表示不验证
[ssh] #添加ssh节点
type = tcp
local_ip = 192.168.xxx.xxx
local_port = 22
remote_port = 7001 #指明由公网服务器的7001端口代理
2、设置FRP开机自启动
#需要先 cd frp 解压目录.
#复制文件
cp frpc /usr/local/bin/frpc
mkdir /etc/frp
cp frpc.ini /etc/frp/frpc.ini
#编写 frp service文件,以 ubuntu20.04 为例
vim /usr/lib/systemd/system/frpc.service #有时候需要手动创建system文件夹
# frpc.service内容如下
[Unit]
Description=frpc
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill $MAINPID
KillMode=process
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
#启动 frp并设置开机启动
systemctl enable frpc
systemctl start frpc
systemctl status frpc
#部分服务器上,可以需要加 .service 后缀来操作,即:
systemctl enable frpc.service
systemctl start frpc.service
systemctl status frpc.service
【SSH使用】
在我的工作机中输入以下命令就可以远程访问工控机啦!完结撒花~
ssh admin@10.10.xx.xx -p 7001