iMac如何使用frp穿透内网

0.166字数 831阅读 3115

有时需要把内网部署的站点映射到外网,让其别人也能访问到,例如做微信相关开发时需要把内网映射到外网,让微信服务器能访问到你的开发环境,方便开发调试。可以使用花生壳或者ngrok,前面这两种我都使用过,花生壳用起来很不稳定,花了钱还不能解决问题,ngrok现在已经很久没更新了,国内的可以在https://www.ngrok.cc注册,免费用户仅能使用一个转发,由于是使用香港的服务器经常连接不上,最后狠下心来研究了下内网穿透,发现frp使用起来还可以,本文就介绍在iMac下如何用阿里云用frp做内网穿透,Windows的应该流程也类似。

frp开源地址:https://github.com/fatedier/frp

一.服务器配置

1.使用终端ssh远程连接阿里云服务器
ssh -t root@xxx.xxx.xxx.xxx -p 22

进入到/home目录,创建文件夹

mkdir frp
2.下载对应的frp发布版本

先查看服务器型号

    cat /proc/version

本人服务器信息:

    Linux version 4.4.0-101-generic (buildd@lcy01-amd64-006)  

下载frp

    sudo wget  https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz

我的阿里云服务器下载不了frp文件,就先下载文件到本地,然后用ssh远程上传到阿里云服务器。

scp -r frp_0.13.0_linux_amd64.tar.gz root@xxx.xxx.xxx.xxx:/home/frp/ 
3.配置frp服务端

解压到当前目录

sudo tar xvf frp_0.13.0_linux_amd64.tar.gz

解压之后进入目录会看到以下文件

# ls
LICENSE  frpc  frpc.ini  frpc_full.ini  frps  frps.ini  frps_full.ini

打开frps.ini文件,配置成如下:

bind_addr = xxx.xxx.xxx.xxx
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 7500
dashboard_user = 你的仪表盘用户名
dashboard_pwd = 你的仪表盘密码
privilege_token = frp

其中bind_port是自己设定的frp服务端端口
vhost_http_port是自己设定的http访问端口
vhost_https_port是自己设定的https访问端口
[ssh]部分是ssh反向代理
listen_port是自己设定的ssh访问端口
custom_domains是自定义域名,如果有自己的域名就写到这里
privilege_token是验证凭据,服务端和客户端的凭据必须一样才能连接,当然为了安全还是设置长一点。dashborad的三个配置是仪表盘功能的端口以及用户名和密码,为了安全也要设置的长一点。

保存上面的配置后,使用以下指令启动frp服务端。

./frps -c ./frps.ini

查看frps.log然后应该会显示类似下面的文本,说明服务端启动成功

Start frps success
PrivilegeMode is enabled, you should pay more attention to security issues

二.客户端配置

iMac下载对应的frp版本frp_0.13.0_darwin_amd64.tar.gz
解压后有对应的文件

# ls
LICENSE  frpc  frpc.ini  frpc_full.ini  frps  frps.ini  frps_full.ini

frpc和frpc.ini、frpc_full.ini 是客户端对应的配置文件
我的frpc.ini配置对应如下:

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000  
# console or real logFile path like ./frpc.log
log_file = ./frpc.log 
# trace, debug, info, warn, error
log_level = trace 
log_max_days = 3 
# for authentication
privilege_token = #######
 
# connections will be established in advance, default value is zero
pool_count = 5 
# if tcp stream multiplexing is used, default is true, it must be same with frps
tcp_mux = true 
# your proxy name will be changed to {user}.{proxy}
user = qzcool 
# decide if exit program when first login failed, otherwise continuous relogin to frps
# default is true
login_fail_exit = true 
[weixin]
type = http
local_ip = 127.0.0.1
local_port = 8080
use_encryption = false
use_compression = false 
subdomain = weixin

server_addr:对应的时阿里云的公网地址
server_port:服务端端口
privilege_token:token需要和服务端一致
最底下是配置站点信息
subdomain:子域名,假设服务器配置泛解析,子域名配置weixin,那么可以通过weixin.youdomin.com访问到你内网的8080端口

启动服务 :

macdeiMac:frp_0.13.0_darwin_amd64 fred$ sudo ./frpc -c ./frpc.ini 

然后使用浏览器访问weixin.youdomin.com就能访问到你的站点了。

frp开机启动和后台运行

使用systemd配置开机自启,适用于 centos7 Ubuntu 16 或 debian 8。
vi /etc/systemd/system/frps.service 新建此文件,并写入以下内容:

[Unit]

Description=frps daemon

After=syslog.target network.target

Wants=network.target

[Service]

Type=simple

ExecStart=/root/frp_0.13.0_linux_amd64/frps -c /root/frp_0.13.0_linux_amd64/frps_my.ini

Restart= always

RestartSec=1min

[Install]

WantedBy=multi-user.target

启动并设为开机自启。

systemctl start frps //启动 
systemctl status frps //状态查询 
systemctl enable frps //开机启动

推荐阅读更多精彩内容