mac下使用frp做内网穿透

我的环境

本地: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加入到开机启动项。

1. 下载frp到本地mac

mac下使用frp做内网穿透_第1张图片
在终端中进行

#在文件的下载目录下解压
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

2.服务器端安装

#可以使用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

mac下使用frp做内网穿透_第2张图片
我是使用scp命令,把解压后的文件copy到服务器上的

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

3.内网机器安装

选择自己的系统版本的压缩包
mac下使用frp做内网穿透_第3张图片
内网机器这边,和服务器端的差不多,但是他的配置文件是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

4.dashboard

之前的配置文件配了一个dashboard,访问你的配置网址即可查看
mac下使用frp做内网穿透_第4张图片
mac下使用frp做内网穿透_第5张图片

这里只是我自己的安装过程,仅供参考

你可能感兴趣的:(杂七杂八)