สมมติว่าเรามีการตั้งค่า Wireguard เหมือนในไดอะแกรมด้านล่าง (ดูลิงก์ imgur ไม่สามารถโพสต์ภาพโดยไม่มีชื่อเสียง) ด้วย PostUp & PostDown ต่อไปนี้:
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
https://i.stack.imgur.com/nXEmF.png
โดยที่ไคลเอ็นต์สามารถเข้าถึงเครือข่ายส่วนตัวของเราผ่าน Wireguard (เซิร์ฟเวอร์ไม่ใช่ไคลเอนต์ Wireguard แต่มีอินเทอร์เฟซเครือข่ายที่สองซึ่งเชื่อมต่อกับเครือข่ายส่วนตัวของเรา ในกรณีนี้ หากเราดูที่บันทึกการเข้าถึงบริการที่ทำงานบนเซิร์ฟเวอร์ของเรา เราจะเห็น ว่า IP ของไคลเอ็นต์คือที่อยู่ IP ของเซิร์ฟเวอร์ Wireguard (172.16.2.1) สิ่งนี้ถูกต้องเพราะใช้ MASQUERADE ซึ่งแทนที่ IP ต้นทางขณะส่งต่อ ผลลัพธ์ที่เราต้องการคือการเห็น IP ของไคลเอนต์ในบริการที่ทำงานบนเซิร์ฟเวอร์ของเรา (เช่น 172.16.2.2 หรือ 172.16.2.3) มีวิธีการตั้งค่าการกำหนดเส้นทางบนเซิร์ฟเวอร์ Wireguard ในลักษณะที่ IP ต้นทางถูกรักษาไว้เมื่อส่งต่อคำขอผ่าน Wireguard หรือไม่ ดังนั้นเราจึงสามารถบล็อกและอนุญาตไคลเอนต์ตามของพวกเขา IP ไคลเอ็นต์ในเซิร์ฟเวอร์เอง รวมทั้งมีบันทึกการเข้าถึงที่สามารถติดตามไปยังไคลเอ็นต์เฉพาะได้หรือไม่
ป.ล.ฉันรู้วิธีกำหนดค่า iptables ในลักษณะที่จัดการการควบคุมการเข้าถึงจากที่นั่น แต่มันไม่ใช่วิธีแก้ปัญหาที่ต้องการมากที่สุดเนื่องจากไม่มีทางที่จะย้อนรอยว่าใครทำอะไรบนเครือข่าย