Score: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 KiB, ส่ง 1.05 KiB

แต่ไม่สามารถเชื่อมต่อกับ postgres ด้วย psql -h 10.100.0.2 -U postgresหรือเว็บเซิร์ฟเวอร์ด้วย ขด 10.100.0.1 จากลูกค้า (จากเซิร์ฟเวอร์ใช้งานได้)

ฉันมีเซิร์ฟเวอร์ (ที่ตั้งของ PostgreSQL):

[อินเตอร์เฟซ]
ที่อยู่ = 10.100.0.1/32
ListenPort = 51820
PrivateKey = AIaYgTe...

[เพียร์]
PublicKey = VCH3gPI0qu...
IP ที่อนุญาต = 10.100.0.2/32
จุดสิ้นสุด = x.x.x.x:51820

ฉันมีลูกค้า (peer1)

[อินเตอร์เฟซ]
คีย์ส่วนตัว = cLUTCqLAj2aq...
ListenPort = 51820
ที่อยู่ = 10.100.0.2/32

[เพียร์]
PublicKey = k4lOk+/rXONP...
IP ที่อนุญาต = 0.0.0.0/0
จุดสิ้นสุด = x.x.x.x: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 ยอมรับ        
      โพสต์เซ็ตอัพ = ''
        ${pkgs.iptables}/bin/iptables -I ส่งต่อ 1 -i wg0 -j ยอมรับ; 
        ${pkgs.iptables}/bin/iptables -t nat -I การโพสต์ 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 ส่งต่อ -i wg0 -j ยอมรับ; 
        ${pkgs.iptables}/bin/iptables -t nat -D โพสต์ -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 = "/รูท/wireguard_private";

      เพื่อน = [
        # รายชื่อเพื่อนที่ได้รับอนุญาต
        { # เพียร์1
          publicKey = "VCH3gPI0qu0rUK...";
          AllowIPs = [ "10.100.0.2/32" ];
        }
      ];
    };
  };

  เครือข่าย ไฟร์วอลล์ = {
    เปิดใช้งาน = จริง;
    allowPing = จริง;
    อนุญาต UDPPorts = [ 51820 ];

    TCPPorts ที่อนุญาต = [ 80 443 22 ];

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

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา