Рейтинг:0

Как настроить wireguard + nixos для доступа к серверам (PostgreSQL, nginx) с рабочей станции?

флаг ma

Я хочу предоставить операторам, использующим wireguard, доступ к таким сервисам, как PostgreSQL, nginx, ssh и т. д., не сообщая общедоступный IP-адрес хоста.

Я использую nixos, но простая установка с wireguard + iptables мне подойдет.

Туннель установлен и пакеты передаются, как показано (на сервере):

¯ ВГ
интерфейс: WG0
  открытый ключ: k4lOk+/rXONPolNI...
  закрытый ключ: (скрытый)
  порт прослушивания: 51820

узел: VCH3gPI0qu0rUKMR...
  конечная точка: ...:51820
  разрешенные ips: 10.100.0.2/32
  последнее рукопожатие: 32 секунды назад
  передача: 53,11 КиБ получено, 1,05 КиБ отправлено

Но не могу подключиться к postgres с помощью psql -h 10.100.0.2 -U постгресили веб-сервер с завиток 10.100.0.1 с клиента (с сервера работает).

У меня есть сервер (где находится PostgreSQL):

[Интерфейс]
Адрес = 10.100.0.1/32
Порт прослушивания = 51820
PrivateKey = AIaYgTe...

[Вглядеться]
Публичный ключ = VCH3gPI0qu...
Разрешенные IP-адреса = 10.100.0.2/32
Конечная точка = х.х.х.х:51820

У меня есть клиент (peer1)

[Интерфейс]
PrivateKey = cLUTCqLAj2aq...
Порт прослушивания = 51820
Адрес = 10.100.0.2/32

[Вглядеться]
Публичный ключ = k4lOk+/rXONP...
Разрешенные IP-адреса = 0.0.0.0/0
Конечная точка = х.х.х.х:51820
постоянныйKeepalive = 10

Я пробовал много способов настроить брандмауэр, в настоящее время:

  networking.nat.enable = истина;
  networking.nat.externalInterface = "eth0";
  networking.nat.internalInterfaces = ["wg0"];

  networking.wireguard.interfaces = {
    wg0 = {
интерфейс.
      ips = ["10.100.0.1/32"];
      порт прослушивания = 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 state --state NEW -p tcp -m multiport --dports 80,443,22,5432 -j ACCEPT        
      постустановка = ''
        ${pkgs.iptables}/bin/iptables -I FORWARD 1 -i wg0 -j ПРИНЯТЬ; 
        ${pkgs.iptables}/bin/iptables -t nat -I POSTROUTING 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
      '';

      # Это отменяет указанную выше команду
      postShutdown = ''
        ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ПРИНЯТЬ; 
        ${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";

      сверстники = [
        # Список разрешенных пиров.
        { # узел1
          publicKey = "VCH3gPI0qu0rUK...";
          разрешенные IP-адреса = [ "10.100.0.2/32" ];
        }
      ];
    };
  };

  network.firewall = {
    включить = правда;
    разрешить пинг = истина;
    разрешеноUDPPorts = [ 51820 ];

    разрешенные TCP-порты = [ 80 443 22 ];

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.