Puncte:0

Cum se configurează wireguard + nixos pentru a accesa serverele (PostgreSQL, nginx) de la stația de lucru?

drapel ma

Vreau să dau acces operatorilor care folosesc wireguard la servicii precum PostgreSQL, nginx, ssh etc, fără a da IP-ul public al gazdei.

Folosesc nixos, dar o configurare simplă cu wireguard + iptables poate funcționa pentru mine.

Tunelul este stabilit și pachetele sunt transferate, așa cum se arată (pe server):

⯠wg
interfață: wg0
  cheie publică: k4lOk+/rXONPolNI...
  cheie privată: (ascunsă)
  port de ascultare: 51820

peer: VCH3gPI0qu0rUKMR...
  punct final: ...:51820
  ips permise: 10.100.0.2/32
  ultima strângere de mână: acum 32 de secunde
  transfer: 53,11 KiB primit, 1,05 KiB trimis

Dar nu se poate conecta la postgres cu psql -h 10.100.0.2 -U postgressau serverul web cu curl 10.100.0.1 de la client (de pe server merge).

Am serverul (unde se află PostgreSQL):

[Interfață]
Adresa = 10.100.0.1/32
ListenPort = 51820
PrivateKey = AIaYgTe...

[Peer]
PublicKey = VCH3gPI0qu...
IP-uri permise = 10.100.0.2/32
Punct final = x.x.x.x:51820

Am clientul (peer1)

[Interfață]
PrivateKey = cLUTCqLAj2aq...
ListenPort = 51820
Adresa = 10.100.0.2/32

[Peer]
PublicKey = k4lOk+/rXONP...
AllowedIPs = 0.0.0.0/0
Punct final = x.x.x.x:51820
persistentKeepalive = 10

Am încercat mai multe moduri de a configura firewall-ul, în prezent:

  networking.nat.enable = adevărat;
  networking.nat.externalInterface = "eth0";
  networking.nat.internalInterfaces = [ "wg0" ];

  networking.wireguard.interfaces = {
    wg0 = {
interfata.
      ips = [ "10.100.0.1/32" ];
      listenPort = 51820;

        # ${pkgs.iptables}/bin/iptables -t nat -A PREROUTING -i wg0 -p tcp --match multiport --destination-ports 22,5432,443,80 -j DNAT --to-destination 192.168.88.1
        # ${pkgs.iptables}/bin/iptables -A INPUT -i wg0 -m stare --state NOU -p tcp -m multiport --dports 80,443,22,5432 -j ACCEPT        
      postSetup = ''
        ${pkgs.iptables}/bin/iptables -I FORWARD 1 -i wg0 -j ACCEPT; 
        ${pkgs.iptables}/bin/iptables -t nat -I POSTRUTING 1 -o eth0 -j MASQUERADE
        ${pkgs.iptables}/bin/iptables -t nat -A PREROUTING -i wg0 -p tcp --match multiport --destination-ports 22,5432,443,80 -j DNAT --to-destination 127.0.0.1
      '';

      # Aceasta anulează comanda de mai sus
      postShutdown = ''
        ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT; 
        ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
        ${pkgs.iptables}/bin/iptables -t nat -D PREROUTING -i wg0 -p tcp --match multiport --destination-ports 22,5432,443,80 -j DNAT --to-destination 127.0.0.1
      '';

      privateKeyFile = "/root/wireguard_private";

      colegi = [
        # Lista colegilor permisi.
        { # peer1
          publicKey = "VCH3gPI0qu0rUK...";
          IP-uri permise = [ "10.100.0.2/32" ];
        }
      ];
    };
  };

  networking.firewall = {
    enable = adevărat;
    allowPing = adevărat;
    permitUDPPorts = [51820];

    permitTCPPorts = [ 80 443 22 ];

    interfaces.wg0.allowedTCPPorts = [ 993 68 80 443 22 5432 ];
  };  

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.