Prima di tutto, dico le funzionalità che ho implementato, converto l'ip esterno in interno, ad esempio: l'ip della provincia A che posso richiamare a casa, l'ip di A non deve essere esposto su Internet, lo converto in socket locale, utilizzando la porta per specificare quale ip proxy.
Dispositivi: soft router
Software:
tailscale(ip penetration) +sing-box(server)+ mihomo(client)
Questo set è semplice, ma potrebbe essere molto lento, qui ci sono miglioramenti dell'architettura
Server di relay Tailscale autogestito:
derper ascolta HTTP locale + Nginx fa TLS + WebSocket
Link per scaricare il software:
https://tailscale.com/
https://github.com/SagerNet/sing-box/releases
https://github.com/MetaCubeX/mihomo/releases
Per scaricare software e altro, non ne parlo, suppongo che tutti abbiano un dominio
Inizia il tutorial:
L'installazione di tailscale, accedi con l'email Microsoft, puoi accedere gratuitamente con 15 account.
tailscale down && tailscale up per aggiornare la configurazione
Configurazione:
Server di relay personalizzato

Configurazione:
// =====================================
// Relay DERP personalizzato (il tuo dominio)
// =====================================
"derpMap": {
"OmitDefaultRegions": false, // false = Mantieni il DERP ufficiale come opzione (raccomandato)
"Regions": {
"999": {
"RegionID": 999,
"RegionCode": "Nome",
"RegionName": "Nota",
"Nodes": [
{
"Name": "1",
"RegionID": 999,
"HostName": "dominio",
"DERPPort": 443,
"STUNPort": 3478,
},
],
},
},
},
sing-box
Configurazione:{
"log": {
"level": "info"
},
"inbounds": [
{
"type": "hysteria2",
"tag": "hy2-in", //protocollo
"listen": "::",
"listen_port": 8443,
"up_mbps": 200,
"down_mbps": 200,
"users": [
{
"password": "password"
}
],
"obfs": {
"type": "salamander",
"password": "protocol password"
},
"tls": {
"enabled": true,
"certificate_path": "C:/proxy/sing-box/server.crt",
"key_path": "C:/proxy/sing-box/server.key"
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
}
]
}
mihomo
# config.yaml
port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info
# Configurazione del monitoraggio della porta
listeners:
- name: port-10086
type: mixed
port: 10086
proxy: remote-1
- name: port-10087
type: mixed
port: 10087
proxy: remote-2
# Configurazione DNS - Risoluzione tramite proxy
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- '*.lan'
- '*.local'
- 'localhost.ptlogin2.qq.com'
# DNS per risolvere gli indirizzi del server proxy
default-nameserver:
- 223.5.5.5
- 119.29.29.29
# DNS per query tramite proxy
nameserver:
- https://doh.pub/dns-query
- https://1.1.1.1/dns-query
- https://8.8.8.8/dns-query
# Configurazione dei nodi proxy
proxies:
# Macchina remota 1
- name: remote-1
type: hysteria2
server: ip
port: 8443
password: password
obfs: salamander
obfs-password: password
skip-cert-verify: true
up: 200
down: 200
# Macchina remota 2
- name: remote-2
type: hysteria2
server: ip
port: 8443
password:password
obfs: salamander
obfs-password: password
skip-cert-verify: true
up: 200
down: 200
# Gruppo proxy
proxy-groups:
- name: PROXY
type: select
proxies:
- remote-1
- remote-2
# Configurazione delle regole
rules:
- MATCH,remote-1
Installazione di Nginx
Configurazione di installazione omessa
Richiesta di certificato
sudo certbot --nginx -d il_tuo_dominio
Configurazione nginx:
# =========================
# HTTP -> HTTPS reindirizzamento
# =========================
server {
listen 80;
server_name tepaiyuan.xyz;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
# =========================
# SERVER DERP HTTPS
# =========================
server {
listen 443 ssl http2;
server_name tepaiyuan.xyz;
ssl_certificate /etc/letsencrypt/live/il_tuo_dominio/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/il_tuo_dominio/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers off;
# ===== DERP WebSocket =====
location /derp {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
# Controllo della salute
location / {
return 200 "DERP Server in esecuzione\n";
}
}Il server di relay lo uso con docker, configurato sulla porta 8080
Attualmente è solo una nota, se hai bisogno puoi chiedermi direttamente, se ci sono molte persone lo farò in modo dettagliato.