ลองเพิ่มกฎนี้:
iptables -A FORWARD --in-interface br -j ยอมรับ
และแทนที่ในที่สุด
sudo iptables -t nat -A โพสต์ -o wan1 -j MASQUERADE
โดย
sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE
สามารถใช้ Wireshark (หรือ tshark, tcpdump) เพื่อวินิจฉัยทั้งสองอินเทอร์เฟซพร้อมกันได้
การวิเคราะห์เพิ่มเติม
อาจมีสาเหตุหลายประการที่ทำให้เราเตอร์ของคุณไม่ทำงาน:
- ไม่ได้เปิดใช้งานการส่งต่อ IP
- ไม่สามารถเข้าถึงเซิร์ฟเวอร์ DNS สำหรับโฮสต์ LAN
- การตั้งค่า NAT (การแปลที่อยู่เครือข่าย) ใช้ไม่ได้กับโฮสต์ LAN
- ...
รีบูทพีซีของคุณเพื่อรับบริการทั้งหมดสู่สถานะปกติ
อย่าใช้ชื่อแต่เป็นที่อยู่ IP ที่เป็นตัวเลขในการทดสอบ ping จนกว่าคุณจะตรวจสอบว่าการทดสอบอื่นๆ คุณกำจัดปัญหา DNS พร้อมกันที่เป็นไปได้ด้วยวิธีนี้
การทดสอบ 1
ตรวจสอบสถานะการกำหนดเส้นทาง IP (การส่งต่อ) (ผลลัพธ์ 1 หมายความว่าเปิดใช้งานการส่งต่อ):
แมว /proc/sys/net/ipv4/ip_forward
การทดสอบ 2
ตรวจสอบการตั้งค่า NAT (masquerade) ที่ถูกต้องสำหรับอินเทอร์เฟซ LAN ของคุณ:
ปิง -c 3 8.8.8.8
ปิง -c 3 -I 192.168.3.1 8.8.8.8
คำสั่งแรกด้านบนคือการทดสอบการเข้าถึงที่อยู่ IP ปลายทาง คุณต้องได้รับการตอบกลับ ping ที่ถูกต้อง 3 ครั้ง คำสั่งที่สองทดสอบว่า NAT ใช้งานได้กับที่อยู่ IP ของ LAN ของคุณหรือไม่ หากคุณไม่ได้รับการตอบกลับ แสดงว่ามาสเคอเรดไม่สามารถแปลที่อยู่ต้นทางของคุณ 192.168.3.1 ได้ และที่อยู่อื่น ๆ ของคุณใน LAN (192.168.3.0/24) ก็มีปัญหาเช่นเดียวกัน ตรวจสอบส่วน NAT ของคุณในการตั้งค่า iptables อย่างระมัดระวัง ทำการทดสอบต่อไปหากการตั้งค่า NAT ดูดี แต่คุณไม่ได้รับการตอบสนอง ping
หากการตอบสนอง ping เป็นปกติ แต่โหนดเครือข่ายอื่นๆ ใน LAN ยังไม่สามารถ ping ไปที่ 8.8.8.8 ได้ วิธีแก้ไขที่เป็นไปได้คือระบุที่อยู่เครือข่ายให้สมบูรณ์ (ไม่ใช่เฉพาะของตัวเอง br
ที่อยู่อินเทอร์เฟซ 192.168.3.1) เป็นแหล่งที่มาสำหรับ NAT:
sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o wan1 -j MASQUERADE
การทดสอบ 3
แพ็กเก็ต WAN ขาออกและที่อยู่ IP:
ยืนยันการ tcpdump
ติดตั้งแล้วติดตั้งหากไม่มีอยู่
ซึ่ง tcpdump
sudo apt-get ติดตั้ง tcpdump
กระบวนการที่อธิบายไว้จะแนะนำให้คุณตรวจสอบการทำงานของ tcpdump และการบันทึกข้อมูลเครือข่าย คุณสามารถหยุดกระบวนการจับภาพได้โดยการกด Ctrl+C ในการเรียกใช้หน้าต่างอินสแตนซ์ tcpdump เปิดหน้าต่างเทอร์มินัลที่สอง (T2) อันดับแรก (T1) จะใช้สำหรับการสร้างการรับส่งข้อมูลและการตรวจสอบการตอบสนอง คุณจะใช้เทอร์มินัลที่สอง (T2) เพื่อเริ่มและหยุดงานการจับภาพโดยใช้ tcpdump เป็นไปได้ที่จะใช้เพียงเทอร์มินัลเดียวสำหรับทั้งสองงาน แต่หากคุณไม่คุ้นเคยกับการสลับงานเบื้องหน้าและเบื้องหลัง การใช้สองเทอร์มินัลจะปลอดภัยกว่า
ที2
sudo tcpdump -i wan1 -n icmp และโฮสต์ 8.8.8.8
ที1
ping -c 2 8.8.8.8
คุณจะเห็นแพ็กเก็ตขาออก ICMP สองชุด (คำขอเสียงสะท้อน) และการตอบสนองเสียงสะท้อนขาเข้าสองชุด ดูที่อยู่ IP ต้นทางและปลายทาง แพ็กเก็ตขาออกมี IP ปลายทาง 8.8.8.8 และต้นทางคือที่อยู่ IP WAN สาธารณะของคุณ คุณจะเปรียบเทียบกับที่อยู่ที่แสดงในขั้นตอนถัดไป
กดปุ่ม Enter ในเทอร์มินัล T2 เพื่อสร้างพื้นที่บรรทัดใหม่ในเอาต์พุตของการทำงาน tcpdump
. ช่วยให้คุณแยกข้อมูลที่บันทึกเก่าและใหม่ในหน้าต่าง
ที1
ปิง -c 2 -I 192.198.3.1 8.8.8.8
คุณเห็นอะไร? มีความเป็นไปได้เหล่านี้:
- ไม่มีการจับแพ็กเก็ต
- เฉพาะแพ็กเก็ตขาออกเท่านั้นที่แสดงและมีที่อยู่ IP ต้นทางที่ไม่ถูกต้อง (เช่น 192.168.3.1 แทนที่จะเป็นที่อยู่ IP สาธารณะของอินเทอร์เฟซ WAN)
- มองเห็นทั้งแพ็กเก็ตขาออกและขาเข้า
ทำลาย tcpdump
ในหน้าต่าง T2 (Ctrl+C)
โปรดคัดลอกคำตอบจาก T2 แล้ววางลงในคำตอบของคุณที่นี่ เพิ่มการตอบสนองของ เส้นทางไอพี
และในที่สุดคำสั่งเหล่านี้:
ไอพีใกล้
sudo iptables-บันทึก
อธิบายผลการทดสอบอื่นๆ