สวัสดีตอนเช้าสุภาพบุรุษ RPi 2 ของฉันเป็นจุดเชื่อมต่อที่ใช้งานได้กับดองเกิล WiFi สองตัว (แต่ละอันมีที่อยู่ IP ของตัวเอง); RPi เชื่อมต่อผ่านสาย LAN ไปยังโมเด็มของฉันด้วย
เป็นบริการพื้นฐานที่สุดของจุดเชื่อมต่อ / พร็อกซี: ใช้การเชื่อมต่อขาเข้าทั้งในส่วนต่อประสาน WiFi และส่งข้อมูลไปยังโมเด็มของฉันผ่านสาย LAN ไปยังอินเทอร์เน็ตภายนอก
ดีมาก: ตอนนี้ฉันต้องการให้ RPi ของฉันเป็นผู้จัดการ QOS: ไม่เพียง แต่มันจะส่งและรับข้อมูล แต่มันจะให้ความสำคัญกับการเชื่อมต่อบางประเภท (เช่นสตรีมมิ่งผ่าน SMTP)
โปรแกรมของฉันจะทำเช่นนั้น แต่ฉันทดสอบบนแล็ปท็อปของฉันเท่านั้นและตอนนี้ฉันจะใส่โปรแกรมของฉันลงใน RPi ของฉัน โปรแกรมของฉันยอมรับการเชื่อมต่อขาเข้าบนพอร์ตคงที่ (8000): บนแล็ปท็อปของฉันฉันติดตั้งปลั๊กอินบนเบราว์เซอร์ซึ่งเปลี่ยนเส้นทางการรับส่งข้อมูลบนพอร์ต 8000 และดูเหมือนว่าจะทำงานได้ดี
ตอนนี้ฉันจะใส่ไว้ใน RPi แต่ฉันไม่รู้วิธีเปลี่ยนเส้นทางการรับส่งข้อมูลจากดองเกิล WiFi ทั้งสองไปยังโปรแกรมของฉันที่พอร์ต 8000
ฉันไม่มีความรู้เกี่ยวกับการกำหนดเส้นทาง แต่ฉันคิดว่าสิ่งนี้สามารถทำได้ด้วยiptables
กฎสองประการเช่น:
iptables -t nat -A PREROUTING -i wlan0 -p tcp -j REDIRECT --to-port 8000
iptables -t nat -A PREROUTING -i wlan1 -p tcp -j REDIRECT --to-port 8000
ถึงกระนั้นกฎทั้งสองนี้ก็ใช้ไม่ได้เลย: การรันโปรแกรมของฉันบน RPi ของฉันด้วยiptables
กฎทั้งสองไม่แสดงผลลัพธ์ดังนั้นการเชื่อมต่อจะไม่ถูกเปลี่ยนเส้นทางไปยังพอร์ต 8000 ซึ่งโปรแกรมของฉันกำลังฟังอยู่
ฉันเห็นตัวอย่างที่การเปลี่ยนเส้นทางจำเป็นต้องมีการ--dport
ตั้งค่าสถานะด้วย แต่ฉันไม่ทราบว่าพอร์ตนี้จะเป็นอย่างไร
นี่คือiptables
กฎปัจจุบันของฉันเกี่ยวกับ RPi:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -j ACCEPT