Score:0

Wireguard จำกัดการเข้าถึงบริการและเครื่องในเครือข่ายท้องถิ่น

ธง ua

ฉันใช้ Wireguard "เซิร์ฟเวอร์" ในเครือข่ายท้องถิ่นของฉัน ซึ่งฉันเข้าถึงจากระยะไกลผ่าน IP สาธารณะแบบคงที่ของฉัน ฉันต้องการที่จะจำกัดการเข้าถึง Wireguard เพียร์ระยะไกลสำหรับบริการ/เครื่องใน LAN ของฉัน ที่ฉันโฮสต์เซิร์ฟเวอร์อื่น

ตัวอย่าง: Server 1 (192.168.1.23 | 10.0.0.1) ที่ติดตั้ง Wireguard + Nextcloud + Jellyfin ในเครื่องเดียวกัน เซิร์ฟเวอร์ 2 (192.168.1.62) พร้อม Photoprism

เพียร์ระยะไกล 1 (10.0.0.2 | ไดนามิก ip) เพียร์ระยะไกล 2 (10.0.0.3 | ip แบบไดนามิก)

ฉันต้องการ:

1- อนุญาตให้ peer1 (10.0.0.2) เข้าถึง Server 1 Nextcloud + Jellyfin และเข้าถึง Server 2 เพื่อ Photoprism

2- อนุญาตให้ Peer2 (10.0.0.3) เข้าถึงได้เฉพาะเซิร์ฟเวอร์ 1 Nextcloud แต่ไม่ใช่ Jellyfin และบล็อกการเข้าถึงเซิร์ฟเวอร์ 2

ตอนนี้ฉันสามารถเข้าถึงทุกเครื่องใน LAN ของฉันจากเพียร์ทั้งหมด

กฎ Iptables:

PostUp = iptables -A FORWARD -i %i -j ยอมรับ; iptables -A ไปข้างหน้า -o %i -j ยอมรับ; iptables -t nat -A โพสต์ -o enp0s7 -j MASQUERADE; iptables -t nat -A โพสต์ -o wg0
PostDown = iptables -D FORWARD -i %i -j ยอมรับ; iptables -D ส่งต่อ -o %i -j ยอมรับ; iptables -t nat -D โพสต์ -o enp0s7 -j MASQUERADE; iptables -t nat -D การโพสต์ -o wg0

ฉันทำตามนี้ กวดวิชา, จาก จัสติน ลุดวิก เนื่องจากโทโพโลยีแบบ Site to Point คล้ายกับของฉันมาก ดังนั้นฉันจึงพยายามจำลองกฎ Iptables ด้วยกฎเหล่านี้:

#ปลอมตัว
PreUp = iptables -t mangle -A PREROUTING -i wg0 -j MARK --set-mark 0x200
PreUp = iptables -t nat -A การโพสต์ ! -o wg0 -m เครื่องหมาย --mark 0x200 -j MASQUERADE
PostDown = iptables -t mangle -D PREROUTING -i wg0 -j MARK --set-mark 0x200
PostDown = iptables -t nat -D POSTROUTING ! -o wg0 -m เครื่องหมาย --mark 0x200 -j MASQUERADE

#ประตูทางเข้า
PreUp = iptables -I INPUT -p udp --dport 2332 -j ยอมรับ
PostDown = iptables -D INPUT -p udp --dport 2332 -j ยอมรับ

# ไฟร์วอลล์ไซต์
PreUp = iptables -N wg0-ตัวกรอง
PreUp = iptables -N ถึงโฟโตปริซึม
PreUp = iptables -N ถึงเจลลี่ฟิน
PreUp = iptables -N to-nextcloud

PreUp = iptables -I อินพุต -i wg0 -j wg0-filter
PreUp = iptables -I ส่งต่อ -i wg0 -j wg0-filter
PreUp = iptables -I FORWARD -o wg0 -j wg0-ตัวกรอง
PreUp = iptables -I OUTPUT -o wg0 -j wg0-ตัวกรอง

PreUp = iptables -A wg0-filter -m state --state ESTABLISHED,RELATED -j ยอมรับ
PreUp = iptables -A wg0-filter -d 192.168.1.63 -p tcp --dport 2342 -j to-photoprism
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 8096 -j to-jellyfin
PreUp = iptables -A wg0-filter -d 192.168.1.23 -p tcp --dport 80 -j to-nextcloud
PreUp = iptables -A wg0-filter -j ปฏิเสธ

PreUp = iptables -A ถึง photoprism -s 10.0.0.2 -j ยอมรับ

PreUp = iptables -A ถึงเจลลี่ฟิน -s 10.0.0.2 -j ยอมรับ
PreUp = iptables -A ถึงเจลลี่ฟิน -s 10.0.0.3 -j ยอมรับ

PreUp = iptables -A to-nextcloud -s 10.0.0.2 -j ยอมรับ
PreUp = iptables -A to-nextcloud -s 10.0.0.3 -j ยอมรับ

PostDown = iptables -D อินพุต -i wg0 -j wg0-filter
PostDown = iptables -D ไปข้างหน้า -i wg0 -j wg0-ตัวกรอง
PostDown = iptables -D ไปข้างหน้า -o wg0 -j wg0-ตัวกรอง
PostDown = iptables -D OUTPUT -o wg0 -j wg0-ตัวกรอง

PostDown = iptables -F ถึงโฟโตปริซึม
PostDown = iptables -F ถึงเจลลี่ฟิน
PostDown = iptables -F ถึง nextcloud

PostDown = iptables -X ถึง photoprism
PostDown = iptables -X ถึงเจลลี่ฟิน
PostDown = iptables -X ถึง nextcloud

สิ่งนี้ไม่ได้ผล เพียร์ 1 และเพียร์ 2 สามารถเข้าถึงเซิร์ฟเวอร์ 1 ทั้งสองบริการ แต่ไม่ใช่เซิร์ฟเวอร์ 2

ฉันไม่ค่อยเข้าใจสิ่งที่ฉันต้องเปลี่ยนแปลงเพื่อให้งานนี้สำเร็จ ฉันยินดีถ้ามีคนช่วยพูดด้วย

ขอบคุณล่วงหน้า

Score:0
ธง cn

โดยรวมแล้วกฎ iptables ของคุณดูดีสำหรับฉัน แม้ว่า:

  1. ในคำอธิบายคำถาม คุณพูดถึงเซิร์ฟเวอร์ 2 มีที่อยู่ IP เป็น 192.168.1.62; แต่ในกฎ iptables ดูเหมือนว่าคุณกำลังใช้อยู่ 192.168.1.63 สำหรับมัน:

     iptables -A wg0-filter -d 192.168.1.63 -p tcp --dport 2342 -j ถึง photoprism
    

    นั่นเป็นการพิมพ์ผิดในที่เดียวหรือที่อื่น ๆ ?

  2. ในคำอธิบาย คุณกล่าวถึงเพียร์ 2 (10.0.0.3) ไม่ควรเข้าถึง Jellyfin; แต่ในกฎ iptables คุณให้สิทธิ์การเข้าถึงด้วยบรรทัดนี้:

     iptables -A to-jellyfin -s 10.0.0.3 -j ยอมรับ
    

    บางทีคุณอาจต้องการลบกฎนี้

  3. ฉันไม่เห็นเลย โพสต์ลง คำสั่งให้รื้อ wg0-ตัวกรอง โซ่ เช่นเดียวกับที่คุณมีสำหรับโซ่แบบกำหนดเองอื่น ๆ ตรวจสอบให้แน่ใจว่าคุณรวม:

     PostDown = iptables -F wg0-ตัวกรอง
     PostDown = iptables -X wg0-ตัวกรอง
    

    หากไม่มีคำสั่งฉีก หากคุณทำการเปลี่ยนแปลงและเริ่มต้นใหม่ wg0-โซ่ อาจลงเอยด้วยการใช้กฎเก่าจากความพยายามครั้งก่อน แทนการอัปเดตที่ใหม่กว่า (และอย่าลืมติดตาม การเปลี่ยนแปลงการกำหนดค่า คำแนะนำจากบทความ ให้ปิดอินเทอร์เฟซ WireGuard ก่อนทำการเปลี่ยนแปลงการกำหนดค่าและรีสตาร์ท -- เรียกใช้ sudo iptables-บันทึก เมื่ออินเทอร์เฟซหยุดทำงาน เพื่อตรวจสอบอีกครั้งว่าคุณมีกฎหรือเชนเก่าๆ ที่ยังไม่ได้ล้างข้อมูลหรือไม่)

ua flag
ขอบคุณมากที่เอาเชื่องมาตอบโพสต์เลอะเทอะของฉัน ขอโทษจริงๆที่ทำเลอะเทอะ ip ผิดจริง ๆ ในไฟล์ wg0.conf ของฉัน "PostDown = iptables -X wg0-filter" เป็นเพียงการพิมพ์ผิดในการโพสต์ ไม่ทำงานเท่าที่ควร ขอบคุณสำหรับแบบฝึกหัดและบทความที่ยอดเยี่ยม!

โพสต์คำตอบ

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