<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • FRP 內網穿透、反向代理

    frp 是一個專注于內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議。可以將內網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。

    本文將以暴露內網 Web 服務為例,實踐 frp 的安裝部署。更多應用場景,可見 frp 示例

    安裝

    frp 主要由 客戶端(frpc)服務端(frps) 組成,服務端通常部署在具有公網 IP 的機器上,客戶端通常部署在需要穿透的內網服務所在的機器上。

    可以在 Github 的 Release 頁面中下載到最新版本的客戶端和服務端二進制文件。

    本文公網、內網機器都是 Linux x86_64,所以選擇了 frp_0.39.0_linux_amd64.tar.gz。解壓:

    $ tar xzvf frp_0.39.0_linux_amd64.tar.gz
    frp_0.39.0_linux_amd64/
    frp_0.39.0_linux_amd64/frps
    frp_0.39.0_linux_amd64/frps_full.ini
    frp_0.39.0_linux_amd64/systemd/
    frp_0.39.0_linux_amd64/systemd/frpc@.service
    frp_0.39.0_linux_amd64/systemd/frps@.service
    frp_0.39.0_linux_amd64/systemd/frpc.service
    frp_0.39.0_linux_amd64/systemd/frps.service
    frp_0.39.0_linux_amd64/LICENSE
    frp_0.39.0_linux_amd64/frpc.ini
    frp_0.39.0_linux_amd64/frpc_full.ini
    frp_0.39.0_linux_amd64/frps.ini
    frp_0.39.0_linux_amd64/frpc
    

    公網

    拷貝 frps 文件進公網機器,假設其 IP 為 x.x.x.x

    scp frps* ubuntu@x.x.x.x:
    

    修改 frps.ini 文件,設置監聽 HTTP 請求端口為 8080:

    cat <<-EOF > ~/frps.ini
    [common]
    bind_port = 7000
    vhost_http_port = 8080
    EOF
    

    安裝 supervisor 進行部署,后臺長期運行:

    # 安裝 supervisor
    sudo apt install supervisor -y
    
    # 添加配置
    sudo -i
    cat <<-EOF >> /etc/supervisor/supervisord.conf
    
    [program:frps]
    directory=/home/ubuntu
    command=/home/ubuntu/frps -c /home/ubuntu/frps.ini
    priority=999
    autostart=true
    autorestart=true
    startsecs=10
    startretries=3
    stdout_logfile=/var/log/frps_out.log
    stdout_logfile_maxbytes=1MB
    stdout_logfile_backups=10
    stdout_capture_maxbytes=1MB
    stderr_logfile=/var/log/frps_err.log
    stderr_logfile_maxbytes=1MB
    stderr_logfile_backups=10
    stderr_capture_maxbytes=1MB
    environment=
    nocleanup=false
    EOF
    exit
    
    # 更新服務
    sudo supervisorctl update all
    
    # 查看服務
    sudo supervisorctl status all
    

    內網

    拷貝 frpc 文件進內網機器,假設其 IP 為 192.168.1.100

    scp frpc* ubuntu@192.168.1.100:
    

    修改 frpc.ini 文件,假設 frps 所在的服務器的 IP 為 x.x.x.xlocal_port 為本地機器上 Web 服務監聽的端口, 綁定自定義域名為 custom_domains

    cat <<-EOF > ~/frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    
    [web]
    type = http
    local_port = 8000
    custom_domains = www.yourdomain.com
    EOF
    

    www.yourdomain.com 的域名 A 記錄解析到 IP x.x.x.x

    如果服務器已經有對應的域名,也可以將 CNAME 記錄解析到服務器原先的域名。或者可以通過修改 HTTP 請求的 Host 字段來實現同樣的效果。

    簡單運行服務,進行測試:

    # 運行 HTTP 服務
    python3 -m http.server 8000
    
    # 運行 frpc 服務
    ./frpc -c ./frpc.ini
    
    # 訪問測試
    curl http://www.yourdomain.com:8080/
    

    systemd 進行部署,后臺長期運行:

    # 拷貝文件
    sudo cp frpc /usr/bin/frpc
    sudo mkdir -p /etc/frp
    sudo cp frpc.ini /etc/frp/frpc.ini
    
    # 添加配置(frp 給的 systemd 配置)
    sudo -i
    cat <<-EOF > /etc/systemd/system/frpc.service
    [Unit]
    Description=Frp Client Service
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
    ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini
    LimitNOFILE=1048576
    
    [Install]
    WantedBy=multi-user.target
    EOF
    exit
    
    # 重載配置
    sudo systemctl daemon-reload
    
    # 開機啟動
    sudo systemctl enable frpc.service
    
    # 啟動服務
    sudo systemctl start frpc.service
    
    # 查看狀態
    sudo systemctl status frpc.service
    

    GoCoding 個人實踐的經驗分享,可關注公眾號!

    posted @ 2022-02-14 15:00  GoCodingInMyWay  閱讀(128)  評論(0編輯  收藏  舉報
    国产美女a做受大片观看