วิธีการกำหนดค่า UFW เพื่ออนุญาตการส่งต่อ IP


18

ฉันมี UFW, OpenVPN และ Virtualbox ติดตั้งอยู่ในโฮมเซิร์ฟเวอร์ของฉัน ฉันมีเครือข่ายเฉพาะโฮสต์สำหรับเครื่องเสมือนแขกของฉัน (vboxnet0) ตั้งค่าด้วยช่วง IP 10.0.1.0 และช่วง IP อื่นที่ 10.0.0.0 กำหนดค่าที่ปลายอีกด้านหนึ่งของการเชื่อมต่อ OpenVPN

การส่งต่อ IP ถูกกำหนดค่าบนโฮสต์ดังนั้นเมื่อปิดการใช้งาน UFW พวกเขาสามารถพูดคุยกันได้โดยไม่มีปัญหาใด ๆ อย่างไรก็ตามฉันต้องการเรียกใช้ UFW เนื่องจากโฮสต์นี้จะเข้าถึงเว็บได้และฉันต้องการควบคุมการเข้าถึง

ฉันจะกำหนดค่า UFW ให้อนุญาตการรับส่งข้อมูลประเภทนี้ได้อย่างไร

ฉันลองชุดต่าง ๆ ของ: ufw allow allow in|out on vboxnet0|tun0ไม่ประสบความสำเร็จ

กฎ UFW ของฉันคือ:

root@gimli:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
Anywhere                   ALLOW       10.0.0.0/16
Anywhere on vboxnet0       ALLOW       Anywhere
Anywhere on tun0           ALLOW       Anywhere

Anywhere                   ALLOW OUT   Anywhere on vboxnet0
Anywhere                   ALLOW OUT   Anywhere on tun0

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.

คำตอบ:


20

ฉันคิดออก

แก้ไข/etc/default/ufwและตั้งค่าDEFAULT_FORWARD_POLICYเป็นยอมรับ :

DEFAULT_FORWARD_POLICY="ACCEPT"

10
มีวิธีใดบ้างที่อนุญาตให้ส่งต่อพอร์ตเฉพาะไม่ได้ตั้งค่าให้ยอมรับทุกอย่างหรือไม่
Marcus Downing

1
ฉันเดาว่าคุณต้องเริ่มต้น ufw ใหม่หลังจากแก้ไขไฟล์:service ufw restart
Minh Danh

10

เป็นไปได้ตอนนี้ - จาก ufw man page:

กฎสำหรับทราฟฟิกไม่ได้กำหนดไว้สำหรับโฮสต์ แต่สำหรับทราฟฟิกที่ควรถูกกำหนดเส้นทาง / ส่งต่อผ่านไฟร์วอลล์ควรระบุคำสำคัญเส้นทางก่อนกฎ (กฎการกำหนดเส้นทางแตกต่างกันอย่างมีนัยสำคัญจากไวยากรณ์ PF และแทน . ตัวอย่างเช่น:

     ufw route allow in on eth1 out on eth2

สิ่งนี้จะช่วยให้ทราฟฟิกทั้งหมดถูกส่งไปยัง eth2 และเข้ามาใน eth1 เพื่อข้ามไฟร์วอลล์

     ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

กฎนี้อนุญาตให้แพ็กเก็ตใด ๆ ที่เข้ามาใน eth0 สามารถข้ามไฟร์วอลล์ออกไปบน eth1 ถึง tcp พอร์ต 80 ใน 12.34.45.67

นอกเหนือจากกฎและนโยบายการกำหนดเส้นทางแล้วคุณต้องตั้งค่าการส่งต่อ IP สิ่งนี้สามารถทำได้โดยการตั้งค่าต่อไปนี้ใน /etc/ufw/sysctl.conf:

     net/ipv4/ip_forward=1
     net/ipv6/conf/default/forwarding=1
     net/ipv6/conf/all/forwarding=1

จากนั้นรีสตาร์ทไฟร์วอลล์:

     ufw disable
     ufw enable

โปรดทราบว่าการตั้งค่าเคอร์เนลที่ปรับได้นั้นเป็นระบบปฏิบัติการที่เฉพาะเจาะจงและการตั้งค่า ufw sysctl อาจถูกเขียนทับ ดูหน้าคู่มือ sysctl สำหรับรายละเอียด


1
สำหรับพวกเราที่ต้องการอนุญาตการรับส่งข้อมูล tcp ระหว่างไคลเอนต์ OpenVPN บนเซิร์ฟเวอร์ OpenVPN มันใช้งานได้ ตัวอย่างเช่น: ufw route ยอมให้ใช้งาน tun0 out เมื่อ tun0
logion

สำหรับบันทึกufw routeมีอยู่ตั้งแต่รุ่น 0.34
Joril

7

หากคุณตั้งค่า DEFAULT_FORWARD_POLICY เป็น ACCEPT ใน / etc / default / ufw ไฟร์วอลล์จะส่งต่อแพ็กเก็ตทั้งหมดโดยไม่คำนึงถึงการตั้งค่าส่วนติดต่อผู้ใช้

ฉันคิดว่าอินเทอร์เฟซผู้ใช้มีไว้สำหรับการกรองเข้า / ออกอย่างง่ายเท่านั้น สำหรับการส่งต่อคุณต้องเพิ่มกฎ iptables ใน /etc/ufw/before.rules เช่นที่นี่:

-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT

คุณอาจมีกฎที่ให้การเชื่อมต่อจากภายในสู่ภายนอกและอีกอันที่อนุญาตให้แพ็กเก็ตจากเซสชัน tcp ที่เกี่ยวข้องและสร้างขึ้นอีกครั้ง

ฉันไม่มีผู้เชี่ยวชาญ iptables ฉันใช้เวลานานมากในการคิด (กับ ip6tables แต่ควรคล้ายกัน) บางทีนี่อาจไม่ใช่ทุกอย่างที่คุณต้องการ

ทักทายที่ดีที่สุด


4

คำสั่ง ufw นี้ทำงานให้ฉันอย่าง: sudo ufw default allow FORWARD

เพื่อให้แน่ใจว่ามีการใช้การเปลี่ยนแปลง: sudo service ufw restart


สิ่งนี้ทำให้เกิดข้อผิดพลาด "ไวยากรณ์ไม่ถูกต้อง" เอกสารระบุว่า "DIRECTION เป็นหนึ่งในขาเข้าขาออกหรือเส้นทาง"
ColinM

@ColinM สิ่งนี้ใช้ได้กับฉันใน Xubuntu 16.04.5 LTS
baptx

FORWARDทำงานเหมือนนามแฝงสำหรับroutedบน Ubuntu
patricktokeeffe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.