ลิงค์เป็นภาพของ การถ่ายโอนข้อมูล Wireshark ของเฟรมอีเธอร์เน็ต 60 ไบต์ขาเข้าซึ่งมีแพ็กเก็ต UDP เพย์โหลดแพ็กเก็ตคือคำเดียว 'สวัสดี' (ขออภัย ฉันมีตัวแทนไม่เพียงพอที่จะวางรูปภาพโดยตรง)
ปัญหา: ฉันไม่สามารถรับ โซแคท
หรือ เอ็นซี
เพื่ออ่านและแสดงแพ็คเก็ตนี้ (ไม่เป็นความจริงทั้งหมด ดู #1 ด้านล่าง)
ฉันเรียกใช้ผู้อ่านเป็น:
$ socat UDP:192.168.50.129:5000 -
ฉันได้ลองใช้รูปแบบที่อยู่ที่เกี่ยวข้องกับ UDP ต่างๆ รวมทั้งรูปแบบนี้ ผู้เขียนทำงานเป็น:
$ socat อ่านไลน์ UDP:192.168.50.132:5000
คำถาม: ฉันจะแสดงแพ็กเก็ตขาเข้าได้อย่างไร โดยควรแสดงเป็นคำเดียวสวัสดี
?
น่าเสียดายที่มีภาวะแทรกซ้อนบางอย่าง:
#1
ถ้าผมเรียกใช้ผู้อ่านเป็น # อินเทอร์เฟซ socat:ens4f0 -
แล้วฉัน ทำ รับการแสดงเฟรมที่เข้ามา (แสดงสองครั้งด้วยเหตุผลบางประการ) มีเอาต์พุตไบนารีบางส่วนและตามด้วยคำ สวัสดี
. อย่างไรก็ตาม ฉันไม่สามารถทำเช่นนี้ได้ เนื่องจากในที่สุดจะมีกระบวนการอื่นๆ ที่ใช้อินเทอร์เฟซนี้ ดังนั้นฉันจึงต้องเข้าใจว่าเกิดอะไรขึ้น
#2
เฟรมขาเข้ามีที่อยู่ IP dst ของ 192.168.50.132
; ไฟร์วอลล์ถูกตั้งค่าให้แปลงเป็น 192.168.50.129
ซึ่งเป็นที่อยู่ที่ผู้อ่านกำลังฟังอยู่:
# iptables -t nat -A PREROUTING -i ens4f0 -j DNAT --to 192.168.50.129
เอาต์พุต Wireshark แสดงแพ็กเก็ตขาเข้าก่อนการแปลงนี้ ดังนั้นแสดงที่อยู่ IP dst เป็น 192.168.50.132
. ฉันไม่รู้จริง ๆ ว่าสิ่งนี้ใช้ได้หรือไม่ - ฉันจะรับได้ไหม โซแคท
เพื่อสร้างการถ่ายโอนข้อมูลฐานสิบหกของสิ่งที่เห็นจริง ๆ ens4f0
?
#3
นี่เป็นเรื่องยาก แต่ฉันหวังว่ามันจะไม่เกี่ยวข้องกัน นี่เป็นการทดสอบการย้อนกลับ: เฟรมเดียวจะดับลง ens4f0
, ถูกวนกลับโดยฮาร์ดแวร์ภายนอก และถูกส่งกลับโดยไม่ได้แก้ไขไปยัง ens4f0
. NIC มีที่อยู่ IP 192.168.50.129
. ฉันมี ip ใกล้เพิ่ม
คำสั่งที่เส้นทางเข้าถึง 192.168.50.132
ออกจาก ens4f0
ไปยังฮาร์ดแวร์ภายนอก แพ็กเก็ตถูกส่งกลับโดยไม่มีการแก้ไข ซึ่งเป็นสาเหตุที่ฉันต้องการ iptables
คำสั่งแปลงที่อยู่ IP dst กลับเป็น ens4f0
ที่อยู่.