ติดตามแพ็กเก็ต TPROXY จนถึงซ็อกเก็ต
ตรวจสอบซ็อกเก็ตรับ เครื่องหมายแพ็กเก็ต และเส้นทางนโยบายภายในเป็นเส้นทางส่งมอบเดียวของพร็อกซีโปร่งใส
ตัวนับ TPROXY อาจเพิ่มขึ้นขณะที่แอปพลิเคชันไม่ได้รับอะไรเลย กฎจับคู่ได้ แต่การส่งมอบภายในยังขึ้นอยู่กับการกำหนดเส้นทางตามนโยบายและซ็อกเก็ตรับที่เข้ากันได้
TPROXY บน Linux ดักจับทราฟฟิกได้โดยไม่ต้องเขียนปลายทางใหม่เหมือน DNAT ดังนั้นแพ็กเก็ตที่ส่งไปยังปลายทางที่ไม่ใช่ภายในเครื่องต้องไปถึงซ็อกเก็ตภายในที่เหมาะสม
ตามเส้นทางส่งมอบ
- ทราฟฟิกไปถึงโฮสต์ดักจับผ่านอินเทอร์เฟซและตระกูลที่อยู่ที่กำหนด
- กฎดักจับและเครื่องหมายแพ็กเก็ตกำหนดนโยบายการส่งมอบภายใน
- กฎนโยบายที่ตรงกันจะเลือกเส้นทางที่ส่งแพ็กเก็ตภายในเครื่อง
- พร็อกซีใช้ตัวรับฟังแบบโปร่งใสที่รองรับพร้อมตัวเลือกซ็อกเก็ตที่จำเป็น
ตัวอย่าง IPv4 ของเคอร์เนลต้องมีการรองรับจากแอปพลิเคชันสำหรับ IP_TRANSPARENT ตัวรับฟังปกติบนพอร์ตเดียวกัน หรือการตั้งค่าผูกที่ไม่ใช่ภายในเครื่องแบบทั่วโลก ไม่ได้พิสูจน์การรองรับนั้น
| การสังเกต | การตรวจสอบถัดไป |
|---|---|
| ไม่มีแพ็กเก็ตขาเข้าที่เกี่ยวข้อง | เส้นทางทราฟฟิกและอินเทอร์เฟซขาเข้า |
| แพ็กเก็ตมาถึง แต่ตัวนับดักจับนิ่งอยู่ | ตระกูลที่อยู่ เชน และเงื่อนไขการจับคู่ |
| กฎตรงกัน แต่การส่งมอบภายในล้มเหลว | เครื่องหมายและการเลือกเส้นทางนโยบาย |
| ซ็อกเก็ตรับฟัง แต่แอปพลิเคชันไม่เห็นอะไร | ความสามารถของซ็อกเก็ตโปร่งใสและเจ้าของตัวรับฟัง |
| คำขอเริ่มต้น แต่การตอบกลับภายหลังล้มเหลว | การจับคู่ซ็อกเก็ตที่สร้างแล้วและเส้นทางขากลับ |
เก็บการตั้งค่าที่โหลดไว้และเนมสเปซเครือข่ายพร้อมกับการสังเกตแต่ละครั้ง กฎที่มาทีหลังอาจเขียนทับเครื่องหมายหรือเลือกเส้นทางอื่น หากการดักจับเกิดบนโฮสต์ขณะที่ตัวรับฟังทำงานในคอนเทนเนอร์ เส้นทางภายในเครื่องที่ถูกต้องของโฮสต์จะไม่ส่งเข้าไปในคอนเทนเนอร์นั้นโดยอัตโนมัติ
คำนึงถึงแพ็กเก็ตภายหลัง
ตัวอย่างของเคอร์เนลรวมการจับคู่ซ็อกเก็ตและเส้นทาง DIVERT ที่ทำเครื่องหมายแพ็กเก็ตของซ็อกเก็ตโปร่งใส การละเว้นอาจทำให้ทราฟฟิกภายหลังอยู่บนเส้นทางอื่นแม้การดักจับครั้งแรกจะสำเร็จ
ใช้โหมดโปร่งใสที่แอปพลิเคชันรองรับและเอกสารเคอร์เนลที่สอดคล้องกันสำหรับแต่ละตระกูลที่อยู่ คำสั่งเส้นทางภายใน IPv4 ไม่ได้ตั้งค่า IPv6 และการรองรับในตระกูลหนึ่งไม่ได้พิสูจน์พฤติกรรมซ็อกเก็ตของอีกตระกูล
TPROXY ไม่ได้สร้างการเจรจา SOCKS เช่นกัน องค์ประกอบจากการโปร่งใสไป SOCKS ยังต้อง ค้นหาปลายทางและเจรจากับต้นน้ำของตน
ย้ายจาก REDIRECT
บันทึกว่าแอปพลิเคชันที่มีอยู่ได้ปลายทางเดิมมาอย่างไร REDIRECT เปลี่ยนปลายทางและพึ่งพากลไกการกู้คืนที่เหมาะสม TPROXY ต้องมีซ็อกเก็ตโปร่งใสและการจัดเส้นทางของตนเอง เลือกตามแอปพลิเคชันและนโยบายที่อยู่ต้นทาง
จับคู่ตัวนับกับเส้นทางที่เลือก ความสามารถของซ็อกเก็ต และบันทึกแอปพลิเคชันก่อนเปลี่ยนโหมดดักจับ ในดิสทริบิวชันที่มีสิ่งอำนวยความสะดวกครบ ขั้นตอนการส่งมอบที่ขาดหายไปเป็นจุดเริ่มต้นที่ดีกว่าการคอมไพล์เคอร์เนลใหม่