zoukankan      html  css  js  c++  java
  • frp内网穿透

    原理

    frp(fast reverse proxy)分为Server端和Client端,Server端安装在带有公网IP的服务器上,Client安装在内网环境但能上网的普通PC中。

    流程:

    1. Server端提供一个bind_port端口,Client端提供remote_port端口和local_port端口
    2. Client端通过Server_IP+bind_port找到Server端,并告诉Server端我需要一个端口remote_port
    3. Server端在本地监听remote_port端口,把通过remote_port端口的流量传给remote_port对应的Client
    4. Client端把从Server端remote_port传过来的流量传到配置的local_port

    用户访问流程:

    1. 用户通过访问Server_IP:remote_prot,相当于访问Client_IP:local_port。其中Client_IP(为内网IP),相当于实现了内网穿透

    如图:
    image-20200630144653856

    安装Server端

    进入下载页面,下载frp_0.33.0_linux_amd64.tar.gz后,运行以下命令:

    # 解压并进入目录
    tar -zxvf frp_0.33.0_linux_amd64.tar.gz && cd frp_0.33.0_linux_amd64
    
    # 把frps、frps.ini移动到适当位置
    sudo mv ./frps /usr/bin/
    sudo mkdir -p /etc/frp
    sudo mv ./frps.ini /etc/frp/
    
    # 创建frps.service
    cat <<EOF | sudo tee /lib/systemd/system/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
    EOF
    
    # 配置frps.ini,其他配置参考:https://github.com/fatedier/frp
    cat <<EOF | sudo tee /etc/frp/frps.ini
    [common]
    bind_port = 7000
    # http端口
    vhost_http_port = 7001
    # https端口
    # vhost_https_port = 7002
    EOF
    
    
    # 开启frps并设置开机启动
    sudo systemctl daemon-reload
    sudo systemctl start frps
    sudo systemctl enable frps
    sudo systemctl status frps
    
    # 开启防火墙
    iptables -A INPUT -p TCP -i $EXTIF --dport 7000 --sport 1024:65534 -j ACCEPT
    /usr/sbin/netfilter-persistent save
    

    安装Client端

    Linux

    进入下载页面,下载frp_0.33.0_linux_amd64.tar.gz后,运行以下命令:

    # 解压并进入目录
    tar -zxvf frp_0.33.0_linux_amd64.tar.gz && cd frp_0.33.0_linux_amd64
    
    # 把frps、frps.ini移动到适当位置
    mv ./frpc /usr/bin/
    mkdir -p /etc/frp
    mv ./frpc.ini /etc/frp/
    
    # 创建frpc.service
    cat <<EOF > /lib/systemd/system/frpc.service
    [Unit]
    Description=Frp Client Service,User=nobody
    After=network.target
    
    [Service]
    Type=simple
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
    ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # 配置frpc.ini,其他配置参考:https://github.com/fatedier/frp
    cat <<EOF | sudo tee /etc/frp/frpc.ini
    [common]
    server_addr = IP地址
    # 用于与服务端通信
    server_port = 7000
    
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    # ssh端口
    remote_port = 6000
    
    [web]
    type = http
    local_port = 11000
    local_ip = 127.0.0.1
    custom_domains = IP地址或域名
    
    EOF
    
    
    # 开启frps并设置开机启动
    sudo systemctl daemon-reload
    sudo systemctl start frpc
    sudo systemctl enable frpc
    sudo systemctl status frpc
    

    Win10

    参考Linux版本配置
    

    内网穿透

    从ssh终端访问:ip:remote_port即可,在以上配置,则访问:IP地址:6000

    有其他需要,请自行参考:https://github.com/fatedier/frp/blob/master/README_zh.md

  • 相关阅读:
    《我与我的父辈》影评
    如何进行时间规划?
    内向者相关
    修己 0815
    loj 3102
    StringSequences
    解方程
    problem B
    uoj424 count
    fft相关的复习
  • 原文地址:https://www.cnblogs.com/testopsfeng/p/13214985.html
Copyright © 2011-2022 走看看