frp内网穿透

Catalogue
  1. 1. frp内网穿透学习

frp内网穿透学习

  • 获取软件

    frp github获取网址 https://github.com/fatedier/frp/releases ,win系统下载winscp传输到服务器,或者登陆服务器wget

  • 服务器端

    服务器要有公网IP, 解压后的文件夹保留frps及frps.ini,frps.fullini是很多选项的配置文件,可以参考。frps.ini修改如下:

    1
    2
    3
    4
    # frps.ini
    [common]
    bind_port = 7000
    vhost_http_port= 8005

    启动frps:

    1
    2
    3
    ./frps -c ./frps.ini
    #下面是windows平台启动命令
    .\frpc.exe -c .\frpc.ini

    自启设置

    复制自https://blog.csdn.net/x7418520/article/details/81077652

    • 使用nohup启动

      ​ 这是frps的后台启动(路径写你服务器上的绝对路径),如果要查看日志的话,就直接使用cat nohup.out,就可以查看了,frpc端启动同理

      1
      nohup /path/to/your/fprs -c-c /path/to/your/frps.ini
    • 使用systemctl控制

      写服务文件

      1
      sudo vim /lib/systemd/system/frps.service
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      [Unit]
      Description=fraps service
      After=network.target syslog.target
      Wants=network.target

      [Service]
      Type=simple
      #启动服务的命令(此处写你的frps的实际安装目录)
      ExecStart=/your/path/frps -c /your/path/frps.ini

      [Install]
      WantedBy=multi-user.target

      启动frps

      1
      sudo systemctl start frps

      设置自启动

      1
      sudo systemctl enable frps
      • 如果要重启应用,可以这样,sudo systemctl restart frps
      • 如果要停止应用,可以输入,sudo systemctl stop frps
      • 如果要查看应用的日志,可以输入,sudo systemctl status frps
    • 使用supervisor来控制

      首先先安装supervisor,我用的ubuntu
      sudo apt install supervisor
      创建 supervisor frps 配置文件,在 /etc/supervisor/conf.d 创建 frp.conf

      1
      2
      3
      [program:frp]
      command = /your/path/frps -c /your/path/frps.ini
      autostart = true

      同样是你的绝对路径。
      写完以后,要重新加载一下supervisor

      1
      2
      3
      4
      # 重启supervisor
      sudo systemctl restart supervisor
      # 查看supervisor运行状态
      sudo supervisorctl status
    • windows设置自启

      参考https://segmentfault.com/a/1190000009353002

      https://www.jianshu.com/p/fc9e4ea61e13

      https://github.com/kohsuke/winsw/releases 下载对应版本的winsw,然后改名为winsw,放入到frp.exe同目录,同目录新建winsw.xml文件,输入:

      1
      2
      3
      4
      5
      6
      7
      8
      <service>
      <id>frp</id>
      <name>frp</name>
      <description>用frp发布本地电脑网站到外网</description>
      <executable>frpc</executable>
      <arguments>-c frpc.ini</arguments>
      <logmode>reset</logmode>
      </service>

      然后以管理员权限运行cmd,进入到frpc目录,使用下面的命令安装启动服务

      1
      2
      3
      4
      winsw install
      winsw start
      winsw stop
      winsw uninstall
  • 客户端

    客户端windows10 ,下载对应的版本解压,保留frpc和frpc.ini文件,修改frpc.ini

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    [common]
    #服务器公网地址
    server_addr = 30.1.9.195
    #服务器与客户端通讯端口
    server_port = 7000

    #测试ssh穿透连接
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 6000
    #服务器端口6000
    # ssh -p 6000 user@30.1.9.195
    #可以通过第三方ssh连接到内网的主机

    [web]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 8000
    #python -m http.server 开启一个python自带的http下载服务,默认端口8000
    remote_port = 8001
    服务器端口8001
    #custom_domains = www.qluoman.top
    #可以用手机浏览器输入x.x.x.x:8001访问到windows文件目录

    [web2]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 4000
    remote_port = 8002
    #custom_domains = www.qluoman.top
    #本地用hexo s 开一个测试服务,可以通过手机浏览器输入:x.x.x.x:8002访问本地静态博客

    [test_static_file]
    type = tcp
    remote_port = 9005
    #远程访问的端口
    plugin = static_file
    # 要对外暴露的文件目录,windows下目录格式直接从资源管理器路径拷贝过来,无需转换
    plugin_local_path = G:\blog\blog
    # 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
    plugin_strip_prefix = static
    plugin_http_user = 123
    #设置访问账号密码
    plugin_http_passwd = 456
    #通过手机浏览器输入:x.x.x.x:9005/static/ 输入账号密码,就可以访问到G:\blog\blog目录下文件

    frp还有很多诸如点对点,以及加密,压缩的选项,可以参照github文档实现,文档非常详细。