Score:0

จะเปลี่ยนเส้นทางคำขอ DNS ไปยังระบบระยะไกลที่แก้ไขได้อย่างไร

ธง ve

ฉันพยายามแก้ไขระบบเป็นเซิร์ฟเวอร์แคช DNS ระยะไกล (ฉันรู้ว่าไม่ได้ตั้งใจให้ทำเช่นนั้น) ฉันเพิ่มการเปลี่ยนแปลง net.ipv4.conf.br0.route_localnet เป็น 1 และเพิ่มกฎ nftable ต่อไปนี้:

ตาราง ip แนท {
    การกำหนดเส้นทางลูกโซ่ {
        พิมพ์ nat hook กำหนดลำดับความสำคัญก่อนกำหนด 100; นโยบายยอมรับ;
        iif "br0" udp dport 53 ตัวนับแพ็กเก็ต 6 ไบต์ 366 dnat ถึง 127.0.0.53
    }

    โซ่ postrouting {
        พิมพ์ nat hook postrouting ลำดับความสำคัญ -100; นโยบายยอมรับ;
        ip saddr 127.0.0.53 oif "br0" ตัวนับแพ็กเก็ต 0 ไบต์ 0 snat ถึง 192.168.1.2
    }
}

ดูเหมือนว่ากฎการกำหนดเส้นทางล่วงหน้าจะทำงานเนื่องจากมีแพ็กเก็ตที่ตรงกับกฎ แต่ไม่มีแพ็กเก็ตออกจากโฮสต์ ปัญหาคืออะไร

ฉันจะเปลี่ยนเส้นทางคำขอ DNS จาก 192.168.1.0/24 ไปยัง systemd-resolved ที่โฮสต์บนอุปกรณ์ lo ของ 192.168.1.2 ด้วย IP 127.0.0.53 ได้อย่างไร

Score:1
ธง cl
A.B

แก้ไข systemd แล้ว ผูกกับ แท้จริง อินเตอร์เฟซ:

# ss -aunp src == 127.0.0.53 กีฬา == 53
สถานะ Recv-Q Send-Q ที่อยู่ในระบบ:พอร์ตเพียร์ ที่อยู่:พอร์ต 
UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* ผู้ใช้:(("systemd-resolve",pid=44157,fd=17))

สิ่งนี้จำกัดเส้นทางที่มีอยู่แม้แต่ครั้งเดียว net.ipv4.conf.br0.route_localnet=1 นำไปใช้กับการตั้งค่าบน แท้จริง อินเตอร์เฟซ:

$ ip -4 ตารางแสดงเส้นทางทั้งหมด dev จริง
ออกอากาศ 127.0.0.0 table local proto kernel scope link src 127.0.0.1 
local 127.0.0.0/8 ตาราง local proto kernel ขอบเขต host src 127.0.0.1 
local 127.0.0.1 ตาราง local proto kernel ขอบเขต host src 127.0.0.1 
ออกอากาศ 127.255.255.255 ลิงก์ขอบเขตโปรโตเคอร์เนลในตาราง src 127.0.0.1 

ไม่มีจะตรงกัน

ที่อยู่ต้นทางจะต้องมีการเปลี่ยนแปลง ในขณะที่ไม่ค่อยได้ใช้ พิมพ์อินพุต nat hook ประเภทลูกโซ่จะอนุญาตให้เปลี่ยนที่อยู่ต้นทางก่อนที่แอปพลิเคชันจะได้รับ มันสายเกินไปแล้ว: สิ่งนี้เกิดขึ้นหลังจากกำหนดเส้นทางเสร็จแล้วและแพ็กเก็ตถูกทิ้งแล้ว NAT ที่เก็บสถานะจึงไม่สามารถจัดการกับกรณีนี้ได้


สามารถใช้พร็อกซีแทนได้ (หลังจากลบการตั้งค่า nat เฉพาะทั้งหมดแล้ว) นี่คือตัวอย่างการใช้ โซแคท. โซแคท ไม่ใช่แอปพลิเคชันเฉพาะ มีข้อแม้สำหรับ UDP โดยเฉพาะ

  • การจัดการ TCP (OP ลืมว่า DNS ก็ใช้ TCP ด้วย)

    socat TCP4-LISTEN:53,bind=192.168.1.2,reuseaddr,fork TCP4:127.0.0.53:53
    

    ไม่สามารถผูกมัดกับ IN_ADDR_ANY เนื่องจาก 127.0.0.53:53 ถูกผูกไว้แล้ว ดังนั้นผูกกับที่อยู่ที่ OP ให้ไว้ (ด้วยเหตุผลที่ไม่ถูกต้อง): 192.168.1.2 นอกจากนี้ มันค่อนข้างง่าย

  • การจัดการ UDP

    socat -T 20 UDP4-LISTEN:53,bind=192.168.1.2,reuseaddr,fork UDP4:127.0.0.53:53
    

    หมดเวลาของยุค 20 อยู่ที่นี่เพราะ โซแคท ไม่สามารถบอกให้หยุดทันทีหลังจากได้รับคำตอบแพ็คเก็ต UDP เดียวและจะแยกส่วนทั้งหมด โซแคท คำสั่งสะสมเมื่อเวลาผ่านไป

    ในขณะที่ UDP ไม่จำเป็นต้องผูกกับที่อยู่ในกรณีนี้ การผูกกับที่อยู่โดยใช้ UDP จะหลีกเลี่ยงข้อแม้ที่เกี่ยวข้องกับการกลับบ้านหลายหลังและความจำเป็นในการใช้ IP_PKTINFO ตัวเลือกซ็อกเก็ต

โพสต์คำตอบ

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