Score:2

วิธีกำหนดค่า wireguard เพื่อส่งต่อที่อยู่ IP ของไคลเอนต์ (พร้อมเกตเวย์)

ธง jp

ฉันกำลังพยายามกำหนดค่า wireguard ให้ทำงานเป็นเซิร์ฟเวอร์ VPN ปัญหาหลักคือเกตเวย์ส่งต่อ IP เซิร์ฟเวอร์ VPN ไปยังเซิร์ฟเวอร์อื่นเท่านั้น ไม่ใช่ IP ไคลเอนต์ของฉัน

การตั้งค่าของฉันมีดังต่อไปนี้:

                                                        - เซิร์ฟเวอร์ A (10.10.0.4)
                                                      /
ลูกค้า (10.10.1.3) -> เซิร์ฟเวอร์ wireguard (10.10.1.2) -- 
                                       (10.10.0.2) \
                                                        - เซิร์ฟเวอร์ B (10.10.0.3)

เซิร์ฟเวอร์ wireguard ทำงานบนเครื่องที่มีสองอินเทอร์เฟซ:

  • eth0 (10.10.0.2)
  • wg0 (10.10.1.2)

เมื่อสร้างการเชื่อมต่อ VPN ฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B (ผ่าน ssh) ปัญหาคือที่อยู่ IP ของเซิร์ฟเวอร์ wireguard ถูกส่งต่อ (nat) ไปยังเซิร์ฟเวอร์ A และ B การเข้าสู่ระบบผ่าน ssh แสดงให้ฉันเห็นทุกครั้งว่าการเชื่อมต่อล่าสุดมาจาก 10.10.0.2 (บนเซิร์ฟเวอร์ A และ B) แต่บนเซิร์ฟเวอร์ wireguard IP ที่เข้าสู่ระบบล่าสุดคือ IP ไคลเอ็นต์จริงของฉัน (10.10.1.3)

สิ่งที่ฉันพยายามทำคือกำหนดค่า wireguard เพื่อให้ IP ของฉัน (10.10.1.3) ถูกส่งต่อไปยังเซิร์ฟเวอร์ A และ B อย่างถูกต้อง

นี่คือไฟล์กำหนดค่า wireguard ไคลเอนต์ของฉัน:

[อินเตอร์เฟซ]
คีย์ส่วนตัว = xxx
ที่อยู่ = 10.10.1.3/24
DNS = 10.10.0.2, 8.8.8.8

[เพียร์]
คีย์สาธารณะ = XXX
IP ที่อนุญาต = 10.10.0.0/24
จุดสิ้นสุด = xxx.xxx.xxx.xxx:41194
PersistentKeepalive = 15

เซิร์ฟเวอร์ wireguard ของฉัน (wg0.conf) config:

[อินเตอร์เฟซ]
ที่อยู่ = 10.10.1.2/24

## พอร์ตเซิร์ฟเวอร์ VPN ของฉัน ##
ListenPort = 41194

คีย์ส่วนตัว = xxx

# การกำหนดค่าเกตเวย์อินเทอร์เน็ต: nat wg1 ออกไปยังอินเทอร์เน็ตบน ens10
PostUp = iptables -A ส่งต่อ -i wg0 -j ยอมรับ; iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE
PostDown = iptables -D ส่งต่อ -i wg0 -j ยอมรับ; iptables -t nat -D โพสต์ -o eth0 -j MASQUERADE

[เพียร์]
## คีย์สาธารณะ VPN ของเดสก์ท็อป/ไคลเอนต์ ##
คีย์สาธารณะ = xxx

IP ที่อนุญาต = 10.10.1.3/32

ฉันเดาว่าการกำหนดค่า iptables ผิด เนื่องจาก nat / MASQUERADE แต่ฉันไม่สามารถกำหนดค่าเกตเวย์ได้อย่างถูกต้อง

ฉันขอขอบคุณสำหรับความช่วยเหลือของคุณ

อัปเดต

ดำเนินการบนเซิร์ฟเวอร์ A (เหมือนกันกับ B)

ลิงค์ ip -br; ที่อยู่ IP -br; เส้นทางไอพี

ผลตอบแทน (IP สาธารณะถูกปกปิด):

lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,ขึ้น,LOWER_UP>
eth0 ขึ้น 96:00:01:29:d6:9b <BROADCAST,MULTICAST,UP,LOWER_UP>
ens10 ขึ้น 86:00:00:08:9c:c5 <BROADCAST,MULTICAST,UP,LOWER_UP>
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 ขึ้น 10.10.0.3/32 fe80::9400:1ff:fe29:d69b/64
ens10 ขึ้น 49.xxx.xxx.xxx/32 2a01:xxx:xxx:xxx::1/64 fe80::8400:ff:fe08:9cc5/64
ค่าเริ่มต้นผ่าน 172.31.1.1 dev ens10 proto dhcp src 49.xxx.xxx.xxx เมตริก 100
10.10.0.0/16 ผ่าน 10.10.0.1 dev eth0
ลิงก์ขอบเขต 10.10.0.1 dev eth0
172.31.1.1 dev ens10 proto dhcp ขอบเขตลิงก์ src 49.xxx.xxx.xxx เมตริก 100
Score:1
ธง cl
A.B

NAT เสร็จสิ้นโดยการกำหนดค่า ดังนั้นคุณจะได้รับ NAT ตามที่ถาม หากต้องการหลีกเลี่ยงการใช้ NAT คุณต้อง:

  • ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ปลายทาง A และ B มีเส้นทางจริงกลับไปยังไคลเอ็นต์

    หากไม่ใช่กรณีนี้ ให้เพิ่มอย่างน้อยนี้ บน A และ B (หากใช้ Linux):

    เส้นทาง ip เพิ่ม 10.10.1.3/32 ผ่าน 10.10.0.2

    อัปเดต: การตั้งค่าการกำหนดเส้นทางของ OP (ในระบบคลาวด์) ทำให้การรับส่งข้อมูลของ A และ B ไปยัง 10.10.0.2 (หรือระหว่างกัน) ผ่านเราเตอร์เพิ่มเติม 10.10.0.1 (ส่วนหนึ่งของ เครือข่ายคลาวด์). เลยต้องเพิ่มเส้นทางในส่วนนี้ตามที่ OP ยืนยัน

  • ลบ NAT บนเซิร์ฟเวอร์ wireguard

    เพียงแค่ลบที่สอง iptables คำสั่งใน WireGuard ทั้งสอง โพสต์อัพ และ โพสต์อัพ configuration และตรวจสอบให้แน่ใจว่าไม่มีรายการที่เพิ่มไว้ก่อนหน้านี้เหลืออยู่ โดยเรียกใช้เฉพาะเวลานี้:

    iptables -t nat -D โพสต์ -o eth0 -j MASQUERADE
    
  • ตัวเลือก: อัปเดต IP ที่อนุญาต บนไคลเอนต์

    หากไคลเอนต์ต้องการเข้าถึงเซิร์ฟเวอร์ wireguard โดยใช้ที่อยู่ของเซิร์ฟเวอร์ที่ฝั่งอุโมงค์แทนที่จะเป็นฝั่ง eth0 หรือเพื่อให้แน่ใจว่าได้รับ ICMP ที่ส่งกลับโดยเซิร์ฟเวอร์ wireguard (เช่น: เพื่อรับ ติดตามเส้นทาง ไปยังเซิร์ฟเวอร์ A ทำงานโดยไม่มี * * *), 10.10.1.2 ควรจะอยู่ใน IP ที่อนุญาต เพื่อตอบสนอง การกำหนดเส้นทาง cryptokey ของ WireGuard.

    แทนที่ลูกค้า:

    IP ที่อนุญาต = 10.10.0.0/24
    

    กับ:

    IP ที่อนุญาต = 10.10.1.2,10.10.0.0/24
    
jp flag
ขอบคุณสำหรับการตอบสนองของคุณ ฉันพยายามเพิ่มเส้นทาง IP บนเซิร์ฟเวอร์ทั้งสอง (เส้นทาง ip เพิ่ม 10.10.1.3/32 ผ่าน 10.10.0.2) แต่ฉันพบเพียงข้อผิดพลาด: "Nexthop มีเกตเวย์ที่ไม่ถูกต้อง" ดูเหมือนว่าอาจมีการกำหนดค่าเครือข่ายผิดพลาด!
jp flag
ฉันจะอัปเดตคำถามของฉันเพื่อให้ผลลัพธ์ของ ```ip -br link; ที่อยู่ IP -br; เส้นทาง ip```
A.B avatar
cl flag
A.B
ด้วยข้อมูลที่เพิ่มเข้ามา: ทราฟฟิกทั้งหมดสำหรับ 10.10.0.0/16 ซึ่งโดยปกติจะเป็นทราฟฟิก LAN จะถูกส่งผ่าน 10.10.0.1 โดยไม่ปล่อยให้ทราฟฟิก LAN บนเซิร์ฟเวอร์ A หรือ B ที่อาจมีข้อยกเว้น เส้นทางจะถูกเพิ่มใน 10.10.0.1 ซึ่งไม่ปรากฏที่ใดในคำถาม
jp flag
ขอบคุณที่ชี้ให้ฉันเห็นทิศทางที่ถูกต้อง 10.10.0.1 ไม่ได้อยู่นอกเหนือการควบคุมโดยสิ้นเชิง เป็นเครือข่ายคลาวด์ แต่ฉันเพิ่มเส้นทางจาก 10.10.1.0/24 เป็น 10.10.0.2 ตอนนี้มันทำงานได้อย่างสมบูรณ์ ขอบคุณ!

โพสต์คำตอบ

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