Score:0

ICMP TTL เกินการตอบกลับด้วย IP ปลายทางจากเราเตอร์ NAT

ธง gh

ฉันกำลังเล่นกับ nftables และสังเกตเห็นพฤติกรรมแปลก ๆ ซึ่งฉันไม่สามารถอธิบายได้

ฉันมีสาม VMs แหล่งที่มา, เราเตอร์ และ ปลายทาง. ทั้งหมดรัน Oracle EL 8.5 ล่าสุดและกำหนดค่าผ่าน nft

  • แหล่งที่มา มีอินเทอร์เฟซเครือข่ายเดียว enp0s8 ด้วย IP 10.111.111.1 ใน /24 ซับเน็ต
  • เราเตอร์ มีสองอินเทอร์เฟซเครือข่าย: enp0s8 ด้วย IP 10.111.111.2 ในซับเน็ต /24 และ enp0s9 ด้วย IP 10.100.100.2 ใน /24 ซับเน็ต
  • ปลายทาง มีอินเทอร์เฟซเครือข่ายเดียว enp0s8 ด้วย IP 10.100.100.1 ใน /24 ซับเน็ต

เป้าหมายของฉันคือการมี ปลายทาง ซ่อนจาก แหล่งที่มา เบื้องหลัง NAT ด้วย IP 10.200.200.1 ฉันทำอะไรลงไป:

  1. เปิดใช้การกำหนดเส้นทาง IP เราเตอร์.
  2. บล็อกการเข้าถึงโดยตรงจาก 10.111.111.0/24 ถึง 10.100.100.0/24 บน เราเตอร์.
  3. เพิ่มเส้นทางคงที่ 10.200.200.0/24 ผ่าน 10.111.111.2 (เราเตอร์) บน แหล่งที่มา.
  4. กำหนดค่า NAT บน เราเตอร์ ดังนี้
        การกำหนดเส้นทางลูกโซ่ {
                พิมพ์ nat hook กำหนดลำดับความสำคัญก่อนกำหนด dstnat; นโยบายยอมรับ;
                iifname "enp0s8" ip daddr 10.200.200.1 dnat ถึง 10.100.100.1
        }

        ห่วงโซ่ postrouting {
                พิมพ์ nat hook ลำดับความสำคัญหลังการกำหนดเส้นทาง srcnat; นโยบายยอมรับ;
                ip saddr 10.100.100.1 oifname "enp0s8" snat เป็น 10.200.200.1
        }

ทุกอย่างทำงานได้ตามที่คาดไว้ ปลายทาง สามารถเข้าถึงได้จาก แหล่งที่มา เป็น 10.200.200.1 เท่านั้น ไม่ใช่ 10.100.100.1 (แน่นอน ฉันรู้ว่ามันไม่ดีที่จะทำงานภายใต้รูท มันเป็นเพียง VM ทดลอง):

[root@source ~]# ปิง 10.100.100.1
PING 10.100.100.1 (10.100.100.1) 56(84) ไบต์ของข้อมูล
^ซี
--- สถิติ ping 10.100.100.1 ---
ส่ง 15 แพ็กเก็ต ได้รับ 0 แพ็กเก็ต สูญเสียแพ็กเก็ต 100% เวลา 14320ms

[root@source ~]# ปิง 10.200.200.1
PING 10.200.200.1 (10.200.200.1) 56(84) ไบต์ของข้อมูล
64 ไบต์จาก 10.200.200.1: icmp_seq=1 ttl=63 เวลา=0.554 ms
64 ไบต์จาก 10.200.200.1: icmp_seq=2 ttl=63 เวลา=1.80 ms
64 ไบต์จาก 10.200.200.1: icmp_seq=3 ttl=63 เวลา=1.84 ms
^ซี
--- สถิติ ping 10.200.200.1 ---
ส่ง 3 แพ็กเก็ต, 3 แพ็กเก็ตที่ได้รับ, สูญเสียแพ็กเก็ต 0%, เวลา 2043ms
rtt นาที/เฉลี่ย/สูงสุด/mdev = 0.554/1.397/1.836/0.598 มิลลิวินาที

แต่เมื่อฉันทำการ traceroute หรือส่ง ping ด้วย TTL=1 การตอบกลับจะมี IP 10.200.200.1 แทนที่จะเป็น เราเตอร์IP ของ 10.111.111.2:

[root@source ~]# traceroute 10.200.200.1
ติดตามเส้นทางไปยัง 10.200.200.1 (10.200.200.1), 30 hops สูงสุด, 60 แพ็คเก็ตไบต์
 1 10.200.200.1 (10.200.200.1) 0.752 มิลลิวินาที 0.679 มิลลิวินาที 0.984 มิลลิวินาที
 2 10.200.200.1 (10.200.200.1) 1.181 มิลลิวินาที 1.130 มิลลิวินาที 1.070 มิลลิวินาที
[root@source ~]# ปิง 10.200.200.1 -c 1 -t 1
PING 10.200.200.1 (10.200.200.1) 56(84) ไบต์ของข้อมูล
จาก 10.200.200.1 icmp_seq=1 เกินเวลาที่จะมีชีวิตอยู่

--- สถิติ ping 10.200.200.1 ---
ส่ง 1 แพ็กเก็ต, 0 ได้รับ, +1 ข้อผิดพลาด, สูญเสียแพ็กเก็ต 100%, เวลา 0ms

หากฉันทำเช่นเดียวกันกับที่อยู่อื่น ๆ ในซับเน็ต 10.200.200.0/24 การตอบกลับจะมี IP ที่ถูกต้อง:

[root@source ~]# ปิง 10.200.200.2 -c 1 -t 1
PING 10.200.200.2 (10.200.200.2) 56(84) ไบต์ของข้อมูล
จาก 10.111.111.2 icmp_seq=1 เกินเวลาที่จะมีชีวิตอยู่

--- สถิติ ping 10.200.200.2 ---
ส่ง 1 แพ็กเก็ต, 0 ได้รับ, +1 ข้อผิดพลาด, สูญเสียแพ็กเก็ต 100%, เวลา 0ms

ใครช่วยอธิบายหน่อยได้ไหมว่าทำไมในกรณีแรก ICMP TTL เกินการตอบกลับจึงมี IP ของปลายทางสุดท้าย และในกรณีที่สองมี IP ของเราเตอร์

โพสต์คำตอบ

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