ฉันใช้ 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
ฉันไม่ค่อยเข้าใจสิ่งที่ฉันต้องเปลี่ยนแปลงเพื่อให้งานนี้สำเร็จ ฉันยินดีถ้ามีคนช่วยพูดด้วย
ขอบคุณล่วงหน้า