Usar FRP para acceder a Synology DS File, DS Photo y Escritorio remoto sin IP pública

Cómo usar frp sin IP pública para acceder desde fuera de la LAN a Synology DS file, DS photo y un escritorio remoto interno.

FRP es una herramienta de proxy inverso de alto rendimiento. Permite exponer servicios de una red privada hacia Internet y soporta reenvío TCP, HTTP y HTTPS. Es útil cuando la red doméstica no tiene IP pública, pero se necesita acceder a servicios como Synology DS File, DS Photo o Escritorio remoto de Windows.

Dirección del proyecto:

1
https://github.com/fatedier/frp

Instalar El Servidor FRP

Descarga una versión desde la página de releases de FRP. El ejemplo original usa FRP 0.34.1 sobre Ubuntu 20.04:

1
2
wget https://github.com/fatedier/frp/releases/download/v0.34.1/frp_0.34.1_linux_arm64.tar.gz
tar -zvxf frp_0.34.1_linux_arm64.tar.gz

Después de extraer el paquete, verás binarios de cliente y servidor, archivos de configuración de ejemplo y servicios systemd:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
frp_0.34.1_linux_amd64
├── frpc
├── frpc_full.ini
├── frpc.ini
├── frps
├── frps_full.ini
├── frps.ini
├── LICENSE
└── systemd
    ├── frpc.service
    ├── frpc@.service
    ├── frps.service
    └── frps@.service

Copia los binarios, configuraciones y servicios al sistema:

1
2
3
4
copy frp_0.34.1_linux_amd64/frpc /usr/bin/
copy frp_0.34.1_linux_amd64/frps /usr/bin/
copy frp_0.34.1_linux_amd64/*.ini /etc/fpr/
copy frp_0.34.1_linux_amd64/systemd/* /etc/systemd/system

Si /etc/fpr/ no existe, créalo antes.

Configuración Del Servidor

Un ejemplo de frps.ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[common]
bind_port = 10100
vhost_http_port = 10101
token = XXXXXX

dashboard_port = 10109
dashboard_user = admin
dashboard_pwd = XXXXXX

log_file = /var/log/frps.log
log_level = debug
log_max_days = 3

bind_port se usa para la comunicación entre servidor y clientes FRP. vhost_http_port recibe el tráfico HTTP público. Si se usa Nginx delante de FRP, Nginx debe reenviar el tráfico a este puerto.

Para más opciones, revisa frps_full.ini.

Panel de FRP

Comandos básicos del servicio:

1
2
3
4
5
systemctl start frps
systemctl stop frps
systemctl restart frps
systemctl status frps
systemctl enable frps

Proxy Nginx Opcional

Si el puerto 80 ya está ocupado por Nginx, puedes reenviar los dominios necesarios al puerto HTTP virtual de FRP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
server {
    listen 80;
    server_name dsphoto.youdomain.com dsfile.youdomian.com frp.yourdomian.com;
    location / {
        proxy_pass http://127.0.0.1:10101;
        proxy_set_header Host $host:80;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
    }
    if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot") {
        return 403;
    }
}

Configuración Del Cliente FRP

La instalación del cliente es similar. El cliente usa frpc, el archivo de configuración es frpc.ini y el servicio es frpc.

Ejemplo de configuración:

 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
[common]
server_addr = frp.yourdomain.com
server_port = 10100
token = XXXXXX
log_file = /tmp/frpc.log
log_level = info
log_max_days = 3
tcp_mux = true
protocol = tcp
login_fail_exit = false
user = admin

[DSphoto]
type = http
local_ip = 192.168.68.200
local_port = 80
custom_domains = dsphoto.yourdomain.com

[DSfile]
type = http
local_ip = 192.168.68.200
local_port = 5000
custom_domains = dsfile.yourdomain.com

[DSM]
type = tcp
local_ip = 192.168.68.200
local_port = 5000
remote_port = 5000

[MSTC]
type = tcp
local_ip = 192.168.68.168
local_port = 3389
remote_port = 3389

DSphoto expone el servicio de fotos de Synology. DSfile expone DS File por HTTP. DSM publica el puerto de administración DSM por TCP. MSTC reenvía Escritorio remoto de Windows.

Una vez conectado el cliente, accede desde Internet mediante los dominios o puertos configurados.

Inicio de sesión de DS file

Inicio de sesión de DS photo

Inicio de sesión de Escritorio remoto

记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy