จากคำถาม UFW ก่อนหน้านี้ ดูเหมือนว่าคุณกำลังใช้ WireGuard เพื่อวัตถุประสงค์สองประการ: 1) ส่งต่อทราฟฟิกจากไคลเอนต์ WireGuard ของ VPS ของคุณออกไปยังอินเทอร์เน็ต และ 2) ส่งต่อพอร์ตสาธารณะบางพอร์ตจาก VPS ของคุณกลับไปยังไคลเอนต์ WireGuard . คุณต้องปลอมตัว (หรือที่เรียกว่า SNAT) สำหรับ 1) และการส่งต่อพอร์ต (หรือที่เรียกว่า DNAT) สำหรับ 2)
วิธีที่ง่ายที่สุดในการตั้งค่านี้ด้วย firewalld คือการผูกอินเทอร์เฟซอีเทอร์เน็ตสาธารณะของ VPS ของคุณ (eth0
ในกรณีของคุณ) ไปยัง firewalld ที่กำหนดไว้ล่วงหน้า ภายนอก
โซน และอินเตอร์เฟส WireGuard ของ VPS ของคุณ (wg0
ในกรณีของคุณ) ไปยัง firewalld ที่กำหนดไว้ล่วงหน้า ภายใน
โซน. เดอะ ภายนอก
โซนได้รับการกำหนดค่าล่วงหน้าโดยเปิดใช้งานการปลอมแปลง และทั้งสองโซนยังได้รับการกำหนดค่าล่วงหน้าให้ยอมรับ SSH และบริการอื่นๆ อีกเล็กน้อย
ก่อนอื่นให้เปิดพอร์ตฟัง WireGuard ของ VPS (49503
ในกรณีของคุณ) บน ภายนอก
โซน:
$ sudo firewall-cmd --zone=external --add-port=49503/udp
และฟอร์เวิร์ดพอร์ต TCP 56000
บน ภายนอก
โซนไปยังพอร์ตเดียวกันบน 10.66.66.2
:
$ sudo firewall-cmd --zone=external --add-forward-port='port=56000:proto=tcp:toaddr=10.66.66.2'
แล้วมัด eth0
ไปที่ ภายนอก
โซน (ซึ่งใช้การกำหนดค่าของ firewalld สำหรับไฟล์ ภายนอก
โซนทั้งหมด eth0
การเชื่อมต่อ):
$ sudo firewall-cmd --zone=external --add-interface=eth0
และผูกพัน wg0
ไปที่ ภายใน
โซน:
$ sudo firewall-cmd --zone=internal --add-interface=wg0
ตรวจสอบโซนที่ใช้งานของคุณ:
$ sudo firewall-cmd --get-active-zones
ภายนอก
อินเทอร์เฟซ: eth0
ภายใน
อินเทอร์เฟซ: wg0
และตรวจสอบการกำหนดค่าของคุณ ภายนอก
โซน:
$ sudo firewall-cmd --info-zone=external
ภายนอก (ใช้งานอยู่)
เป้าหมาย: ค่าเริ่มต้น
icmp-block-inversion: ไม่
อินเทอร์เฟซ: eth0
แหล่งที่มา:
บริการ: ssh
พอร์ต: 49503/udp
โปรโตคอล:
สวมหน้ากาก: ใช่
ส่งต่อพอร์ต: port=56000:proto=tcp:toaddr=10.66.66.2
พอร์ตต้นทาง:
icmp บล็อก:
กฎมากมาย:
หากทุกอย่างถูกต้อง ให้บันทึกการตั้งค่าไฟร์วอลล์ปัจจุบันของคุณ:
$ sudo firewall-cmd --runtime-to-permanent