frp实现内网穿透(linux穿透至windows)

frp中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md

frp的作用

通俗点来讲就是有个内网环境的主机,外网没办法访问,利用可以访问内网环境的公网机器来进行间接访问

场景(具体看文档):

  1. 想在家直接通过ssh访问处于公司内网环境内的主机
  2. 通过自定义域名访问部署于内网的 web 服务
  3. 转发 DNS 查询请求

本文的场景是想让同事直接使用ssh访问我的虚拟机

安装frp

  1. 下载地址:https://github.com/fatedier/frp/releases
    由于我的内网机器是linux,外网机器是windows,所以选择这两个(386就是32位的)

  2. 在windows任意目录下解压frp_0.33.0_windows_amd64.zip

  3. 进入到目录中,frpc是客户端的,安装在内网服务器,frps是服务端的,安装在外网服务器(所以frpc的文件在服务端中可以删掉)


  4. 服务端配置(公网服务器)
    打开frps.ini文件,这里使用了最简化的配置,设置了frp服务器端接收客户端流量的端口(其实就是与客户端通讯的端口,默认7000,我这里改成6767)


    image.png
  1. 客户端配置(内网服务器)
#上传
rz 
#解压
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
#重命名
mv frp_0.33.0_linux_amd64 frp

之后进入到frp文件目录,同理可以删除frps开头的文件,保留frpc的。


打开frpc.ini进行编辑


  • server_addr:服务器端ip
  • server_port:服务器用来与客户端通讯的端口(这里配置要跟服务器端的bind_port保持一致)
  • local_port:客户端监听,也就是内网暴露到外网的端口
  • remote_port:服务器端暴露,也就是外网暴露的端口

最后的效果是,同事使用ssh连接xxx.xxx.xxx.93 6768(外网ip端口)来登录xxx.xxx.xxx.129 22(外网ip端口)

启动服务

  1. 启动服务端(frps)
    进入到frp_0.33.0_windows_amd64目录中,执行
.\frps.exe -c .\frps.ini
  1. 启动客户端(frpc)
    进入到frp目录中,执行
./frpc -c ./frpc.ini

测试

推荐阅读更多精彩内容