本地:mac
内网中的电脑:Linux meng 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
服务器:腾讯云学生机
要实现的效果:mac能访问到内网中的电脑,即实现内网穿透,希望内网中的frpc服务开机启动,
frp文档链接 https://gofrp.org/docs/examples/stcp/
本地和内网机器都是一个frpc客户端,使用frpc.ini配置文件。通过具有ipv4的服务器进行连接,服务器使用的配置文件就是frps.ini,内网的机器将service加入到开机启动项。
#在文件的下载目录下解压
tar -xf frp_0.34.1_darwin_amd64.tar.gz
cd frp_0.34.1_darwin_amd64
vim frpc.ini
修改成如下内容
[common]
#服务地址
server_addr = xx.xx.xx.xx
#服务器frps端口号,主要保证云厂商的端口和主机的此端口号都是打开的
server_port = 15000
[secret_ssh_visitor]
#访问类型
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字,后面内网机器配置文件的[]包裹的字段
server_name = mac
#访问凭证/密码
sk = R4QymNG7JPafo
# 绑定本地端口用于访问 SSH 服务
bind_addr = 127.0.0.1
bind_port = 15000
启动
vim /Library/LaunchAgents/frpc.plist
写入如下内容
<plist version="1.0">
<dict>
<key>Labelkey>
<string>com.meng.frpc.pliststring>
<key>ProgramArgumentskey>
<array>
<string>/Users/zhangmeng/Downloads/frp_0.34.1_darwin_amd64/frpcstring>
<string>-cstring>
<string>/Users/zhangmeng/Downloads/frp_0.34.1_darwin_amd64/frpc.inistring>
array>
<key>KeepAlivekey>
<true/>
<key>RunAtLoadkey>
<true/>
<key>StandardErrorPathkey>
<string>/Users/zhangmeng/Downloads/frpc.errstring>
<key>StandardOutPathkey>
<string>/Users/zhangmeng/Downloads/frpc.outstring>
dict>
plist>
这其中的路径都要配成你自己的
解释:这上面编写的是守护进程脚本,mac下的launchctl和linux下的systemctl差不多,我也是第一次在mac上以守护进程的方式启动,具体你可以查一查
启动
#以守护进程的方式启动
launchctl load -w /Library/LaunchAgents/frpc.list
#查看是否启动
launchctl list |grep "frpc"
#开机启动(可选)
launchctl enable /Library/LaunchAgents/frpc.plist
至此,在本地电脑上启动了frpc
#可以使用uname -a查看型号
$ uname -a
#Linux VM_0_16_centos 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
scp 文件 [email protected]:/tmp
#编辑
vim /tmp/frp_0.34.1_linux_386/frps.ini
替换成如下内容
[common]
#服务器端口号
bind_port = 15000
#web控制面板端口号
dashboard_port = 15004
# dashboard's username and password are both optional,if not set, default is admin.
dashboard_user = username
dashboard_pwd = password
以守护进程的方式启动
#编辑/tmp/frp_0.34.1_linux_386/systemd/frps.service
vim /tmp/frp_0.34.1_linux_386/systemd/frps.service
替换成如下内容
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
#路径如有出入,改成自己的
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
[Install]
WantedBy=multi-user.target
#守护进程方式启动
systemctl start frps.service
#开机启动
systemctl enable frps.service
#查看状态
systemctl status frps
选择自己的系统版本的压缩包
内网机器这边,和服务器端的差不多,但是他的配置文件是frpc.ini,参考内容大概如下
[common]
server_addr = xx.xx.xx.xx
server_port = 15000
#服务名,与mac中的相对应
[mac]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = R4QymNG7JPafo
local_ip = 127.0.0.1
local_port = 22
frps.service参考:
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/meng/Downloads/frp_0.34.1_linux_arm/frpc -c /home/meng/Downloads/frp_0.34.1_linux_arm/frpc.ini
ExecReload=/home/meng/Downloads/frp_0.34.1_linux_arm/frpc reload -c /home/meng/Downloads/frp_0.34.1_linux_arm/frpc.ini
[Install]
WantedBy=multi-user.target
systemctl start frpc.service
systemctl enable frpc.service
systemctl status frps
这里有个插曲,就是我ubuntu的机器的openssh_server没有安装,需要安装才能连接。apt命令安装的时候报错,记得是镜像源连接错误,这时候可以把自己的apt源改一下。
现在就可以在自己的mac上面访问内网机器了
#meng是你的内网机器用户名
ssh -oPort=15000 [email protected]
如果感觉每次这么敲麻烦的话
可以再.ssh录下新建一个config文件,写入如下内容
Host lab-laptop 我的ubuntu电脑
HostName 127.0.0.1
Port 15000
User meng
下次连接的时候,就很简单了
ssh lab-laptop
之前的配置文件配了一个dashboard,访问你的配置网址即可查看
这里只是我自己的安装过程,仅供参考