ฉันใช้เซิร์ฟเวอร์ WireGuard บน Raspberry Pi โดยใช้ไฟล์ https://github.com/linuxserver/docker-wireguard ภาพ. ฉันต้องการอนุญาตให้เพื่อนทำสองสิ่ง:
- เชื่อมต่อกับ NAS เดียวผ่าน SMB
- ปิง NAS เดียวกัน
ฉันได้เขียนกฎ iptables ต่อไปนี้เพื่อเก็บสิ่งนี้ (wg0
เป็นอินเตอร์เฟส WireGuard eth0
หนึ่ง "ต่อ" เครือข่ายของฉัน):
# รีเซ็ต (ล้าง) กฎ
iptables -t แนท -F
iptables -F
# อนุญาตการรับส่งข้อมูล WireGuard
iptables --นโยบายอินพุตที่ยอมรับ
iptables -- นโยบายเอาต์พุตที่ยอมรับ
# ปฏิเสธการรับส่งข้อมูลล่วงหน้าตามค่าเริ่มต้น
iptables -- นโยบาย FORWARD DROP
# อนุญาตการรับส่งข้อมูล SAMBA ไปยัง NAS
NAS="192.168.178.23/32"
iptables -A FORWARD -i wg0 -p tcp --dport 445 -d "$NAS" -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o wg0 -m state --state RELATED,ESTABLISHED -j ยอมรับ
# อนุญาตคำขอเสียงสะท้อน ICMP
iptables -A FORWARD -i wg0 -p icmp --icmp-type 8 -d "$NAS" -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -o wg0 -p icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ยอมรับ
# NAT ทันเนล IP เป็น IP ภายใน
iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE
งานเหล่านี้ ดังนั้นเมื่อเชื่อมต่อผ่าน WireGuard ฉันสามารถ ping และเมานต์ NAS ผ่าน SMB ได้ แต่ฉันไม่สามารถ ping บริการอื่นใดในเครือข่ายหรือเข้าถึงอินเทอร์เฟซ HTTP ของ NAS
อย่างไรก็ตาม ฉันมีคำถามสองสามข้อเพื่อทำความเข้าใจว่าฉันได้ทำอะไรไปบ้าง:
- เมื่อตั้งค่า
ป้อนข้อมูล
/เอาต์พุต
นโยบายที่จะ หยด
ไม่มีอะไรทำงาน ข้อสันนิษฐานของฉันคือเป็นเพราะได้รับแพ็กเก็ต WireGuard UDP wg0
นโยบายจะตกหล่นหรือไม่
- หากฉันตั้งค่านโยบายและเพิ่มกฎเข้าไป
อนุญาต
การจราจรจาก/ถึง wg0
ผลกระทบคือคอนเทนเนอร์ไม่สามารถเชื่อมต่อกับสิ่งใดได้ eth0
และเท่านั้น ซึ่งไปข้างหน้า
การจราจรจาก wg0
?
- กฎอนุญาตให้
ที่เกี่ยวข้องจัดตั้งขึ้น
สัญจรผ่าน wg0
ควรจับคู่การรับส่งข้อมูลที่ตอบสนองต่อ TCP:445 หรือ ICMP:echo-request เท่านั้น ไม่จำเป็นต้องเจาะจงมากกว่านี้ (เช่น จับคู่พอร์ต/โปรโตคอล) ใช่ไหม
- กฎ
อนุญาต
ไม่จำเป็นต้องใช้การตอบสนองแบบสะท้อนกลับเนื่องจากกฎที่อนุญาตน้อยกว่า ที่เกี่ยวข้องจัดตั้งขึ้น
การจราจรด้านบนจะตรงกันก่อนใช่ไหม
- ด้วยการกรองทั้งหมดบน
ซึ่งไปข้างหน้า
chain สมมติฐานของฉันคือฉันไม่จำเป็นต้องกรองใน แนท
ตาราง โพสต์
chain เนื่องจากทราฟฟิกใด ๆ ที่ไม่ใช่สำหรับ NAS บน TCP:445 หรือ ICM:echo-request จะไม่ทำให้มัน "ไกลขนาดนี้" อยู่ดี ถูกต้องหรือไม่