Score:1

TPROXY รบกวนกฎการส่งต่อพอร์ต DNAT

ธง in

ฉันกำลังตั้งค่า TPROXY บนเราเตอร์ VyOS เพื่อส่งต่อทราฟฟิกบางอย่างไปยังพร็อกซีโปร่งใสในเครื่อง มันใช้งานได้ค่อนข้างดี จนกระทั่งฉันค้นพบว่ากฎการส่งต่อพอร์ต DNAT ทั้งหมดของฉันใช้งานไม่ได้อีกต่อไป (หมดเวลาการเชื่อมต่อเมื่อเชื่อมต่อจากเครือข่ายภายนอก)

สิ่งแวดล้อม

  • เราเตอร์: 10.0.0.1/24 (พร็อกซีกำลังทำงานอยู่ 1234 port และเพิ่ม SO_MARK ด้วย 0xff)
  • โฮสต์ภายใน: 10.0.0.2/24 (ท่าเรือ 80 ควรเปิดเผยต่อสาธารณชน)

กฎ TPROXY

กฎ ip เพิ่ม fwmark 1 ตาราง 100
เส้นทาง ip เพิ่มในเครื่อง 0.0.0.0/0 dev lo table 100

nft เพิ่มตาราง myproxy
nft เพิ่มเชน myproxy การกำหนดเส้นทางล่วงหน้า { ประเภทตัวกรอง hook ลำดับความสำคัญก่อนกำหนดเส้นทาง 0 \; }
nft เพิ่มกฎ myproxy กำหนดเส้นทางล่วงหน้า ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } กลับ
nft เพิ่มกฎ myproxy กำหนดเส้นทางล่วงหน้า meta l4proto tcp ip daddr 10.0.0.0/24 กลับ
nft เพิ่มกฎ myproxy กำหนดเส้นทางล่วงหน้า ทำเครื่องหมาย 0xff return
nft เพิ่มกฎ myproxy กำหนดเส้นทางล่วงหน้า meta l4proto { tcp, udp } ทำเครื่องหมายตั้งค่า 1 tproxy เป็น 127.0.0.1:1234 ยอมรับ

nft เพิ่มเอาต์พุต myproxy ของเชน { ประเภทลำดับความสำคัญของเอาต์พุต hook ของเส้นทาง 0 \; }
nft เพิ่มกฎ myproxy เอาต์พุต ip daddr { 127.0.0.1/32, 224.0.0.0/4, 255.255.255.255/32 } กลับ
nft เพิ่มกฎ myproxy เอาต์พุต meta l4proto tcp ip daddr 10.0.0.0/24 กลับ
nft เพิ่มกฎเอาต์พุต myproxy ทำเครื่องหมาย 0xff return
nft เพิ่มกฎ myproxy เอาต์พุต meta l4proto { tcp, udp } ทำเครื่องหมายชุดที่ 1 ยอมรับ

nft เพิ่มตัวกรองตาราง
nft เพิ่มตัวกรองโซ่เปลี่ยนเส้นทาง { ตะขอกรองประเภทลำดับความสำคัญก่อนกำหนด -150 \; }
nft เพิ่มตัวกรองกฎ โอนเมตา l4proto tcp ซ็อกเก็ตโปร่งใส 1 ชุดเครื่องหมายเมตา 1 ยอมรับ

กฎของ DNAT

$ nft ตารางรายการ nat

ตาราง ip แนท {
    โซ่ PREROUTING {
        พิมพ์ nat hook กำหนดลำดับความสำคัญก่อนกำหนด dstnat; นโยบายยอมรับ;
        iifname "pppoe0" tcp dport { 8080 } ตัวนับแพ็กเก็ต 7 ไบต์ 400 dnat ถึง 10.0.0.2:80
    }
}

อาการ

กำลังเชื่อมต่อ RouterPublicIP:8080 กำลังจะหมดเวลา ตามหลักการแล้วควรส่งต่อทราฟฟิกไปที่ 10.0.0.2:80.

ฉันเดาว่าทราฟฟิก DNAT ขาเข้าถูกส่งต่อไปยังพร็อกซีอย่างไม่ถูกต้อง (แทนที่จะเป็นโฮสต์จริง 10.0.0.2) อย่างไรก็ตามฉันไม่สามารถหากฎ nft ที่ถูกต้องได้

ขอบคุณล่วงหน้า!

Tom Yan avatar
in flag
คุณได้ลองเพิ่ม `meta l4proto tcp ip saddr 10.0.0.0/24 return` เป็น `myproxy prerouting` (ก่อนกฎ `tproxy` แน่นอน)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา