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:

  1. L'installazione di tailscale, accedi con l'email Microsoft, puoi accedere gratuitamente con 15 account.

    1. tailscale down && tailscale up per aggiornare la configurazione

    2. 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,

      },

      ],

      },

      },

      },

  2. sing-box

    1. 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

    1. # 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

  3. Installazione di Nginx

    Configurazione di installazione omessa

    1. Richiesta di certificato

      1. sudo certbot --nginx -d il_tuo_dominio

    2. 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";
      }
      }

    3. 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.