ฉันได้ตั้งค่าบริการ ppp แบบไดนามิกบนเครื่อง linux ซึ่งไคลเอนต์จะเชื่อมต่อและรับ IP ส่วนตัว
กฎที่ฉันได้ตั้งขึ้นใน iptables คือ:
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_dynadr=1
iptables -t nat -A โพสต์ -o eno1 -j MASQUERADE
iptables -A INPUT -i ppp+ -j ยอมรับ
iptables -A ไปข้างหน้า -i ppp+ -j ยอมรับ
iptables -I PREROUTING -t nat -i ppp+ -p udp -s 10.0.10.3 -j DNAT --to 10.0.10.2
iptables -I PREROUTING -t nat -i ppp+ -p udp -s 10.0.10.2 -j DNAT --to 10.0.10.3
ฟังก์ชันการทำงานที่ฉันตั้งใจไว้สำหรับใครก็ตามที่เชื่อมต่อบนอินเทอร์เฟซ ppp เพื่อสืบทอด IP ของโฮสต์และเข้าถึงอินเทอร์เน็ตและสามารถสื่อสารกับเพื่อนในเครือข่ายเดียวกันได้ ความสำเร็จ!
ยกเว้นแพ็กเก็ตออกอากาศ สิ่งใดที่ส่งไปที่ 255.255.255.255 หรือสิ่งที่คล้ายกันนั้นไปไม่ถึงใครเลย เพื่อบรรเทา ฉันได้ฮาร์ดโค้ดกฎใน ตัวหนา จากด้านบน อย่างไรก็ตามนี่ไม่ใช่โซลูชันแบบไดนามิกและเพิ่มขึ้นตามจำนวนไคลเอนต์ที่เชื่อมต่อ
คำถามของฉันคือฉันจะทำอย่างไรเพื่อให้มีโซลูชัน iptables 'ไวด์การ์ด' สำหรับสิ่งนี้ โดยเฉพาะอย่างยิ่ง ฉันต้องการโซลูชันแบบบรรทัดเดียวที่จะส่งต่อแพ็กเก็ต udp ใดๆ จากอินเทอร์เฟซ ppp ไปยังอินเทอร์เฟซ ppp อื่นๆ ในขณะที่ไม่รบกวนกฎอื่นๆ หรือแพ็กเก็ต tcp
ขอบคุณล่วงหน้า.
แก้ไข
ฉันยอมจำนนและพยายามฮาร์ดโค้ดกฎสำหรับ 100 IP อย่างน้อยเพื่อให้มันทำงานได้ตามปกติแม้ในรูปแบบที่สั้นที่สุดที่ฉันสามารถหาได้ ฉันพบปัญหาที่มีเฉพาะ แรก กฎจะมีผลสำหรับแพ็กเก็ตที่กำหนด หมายความว่าฉันไม่สามารถสร้างกฎหลายกฎสำหรับแพ็กเก็ตเดียวกัน และไม่สามารถสร้างกฎ catch-all สำหรับ IP เดียวไปยังเครือข่ายทั้งหมดได้เช่นกัน เพราะกฎจะส่งแพ็กเก็ตที่เป็นปัญหาไปยังต้นทางเป็น นำไปสู่ความล้มเหลวที่คล้ายกัน:
ภาพหน้าจอของกฎ
แก้ไข 2
ฉันล้มพับไปเนื่องจากไม่มีโซลูชันใดที่ฉันระบุสำหรับ iptables ที่สามารถปรับขนาดได้หรือนำไปใช้ในสถานการณ์ของฉันได้ ฉันจะเปิดคำถามนี้ไว้ในกรณีที่ใครมีวิธีที่จะทำให้สำเร็จในหนึ่งหรือสองสามบรรทัดใน iptables หรืออย่างอื่น
ในระหว่างนี้ โปรดอย่าลังเลที่จะตรวจทานเอกสารต่อไปนี้ที่เกี่ยวข้องกับกรณีเฉพาะของฉัน หากคุณสงสัยหรือหากคุณอยู่ในถังเดียวกัน:
การส่งต่อแพ็คเก็ตออกอากาศของ Cisco
ถ่ายทอด UDP ออกอากาศ
บทช่วยสอน NAT
เอกสารช่วง IP ของ DNAT
สุดท้าย นี่คือวิธีแก้ปัญหาที่ฉันใช้อยู่ในขณะนี้:
https://github.com/udp-redux/udp-broadcast-relay-redux