แพ็กเก็ต tcp ขาออกทั้งหมดมีที่อยู่ IP ต้นทาง 0.0.0.0


3

ขณะนี้ฉันเชื่อมต่อกับเครือข่ายที่มีซับเน็ตมาสก์คือ 169.254.0.0 และเกตเวย์คือ 169.254.20.1

จากเครื่อง Windows ฉันสามารถเข้าถึงทั้งอินเทอร์เน็ตและ LAN บนเครือข่ายนี้

แต่เมื่อใดก็ตามที่ฉันเชื่อมต่อกับเครือข่ายนี้จากเครื่อง Linux ฉันไม่สามารถเข้าถึงอินเทอร์เน็ต แต่สามารถเข้าถึง LAN เท่านั้น

ในการจับภาพ Wireshark ฉันเห็นแพ็กเก็ต IP ทั้งหมดการออกไปนอก LAN ตั้งค่า IP ต้นทางเป็น0.0.0.0ฉันเชื่อว่านั่นเป็นสาเหตุที่ฉันไม่ได้รับคำตอบใด ๆ

ฉันใช้กาลี

ใครสามารถบอกฉันว่าเกิดอะไรขึ้น


ยืนยันว่าลูกค้าลินุกซ์ของคุณจะตั้งขึ้นสำหรับ ZeroConfNetworking (Avahi) wiki.ubuntu.com/ZeroConfNetworking นี่คือวิธีที่ระบบ linux เข้าร่วมในเครือข่ายไร้ขีด จำกัด Windows ใช้การตั้งค่า IP สำรองทางเลือกเริ่มต้นที่ถูกเรียกใช้สำหรับส่วนต่อประสานที่กำหนดค่า DHCP ซึ่งไม่สามารถดึงข้อมูลที่อยู่ DHCP ได้
Frank Thomas

2
@FrankThomas ไม่มีทางที่จะปรับการส่งเฟรมจาก 0.0.0.0 (นอกเหนือจากการรับส่งข้อมูล BOOTP / DHCP) แน่นอนว่า IP ของ Linux IP รู้วิธีที่จะปฏิบัติตาม IPv4 Link-Local RFC เช่นเดียวกับระบบปฏิบัติการอื่น ๆ ที่เหมาะสมตั้งแต่กลางปี ​​1990
Spiff

ระบบเครือข่ายไร้ขีด จำกัด (กำหนดไว้ใน RFC 3927) ใช้ออกอากาศเพื่อค้นหา แต่ดูเหมือนว่าจะไม่พูดกับสิ่งที่คุณกำลังพูดถึงเกี่ยวกับปริมาณข้อมูลที่ออกอากาศของ IP ดังนั้นฉันจึงเข้าใจผิด AVAHI เป็นการใช้งานที่ไม่มีข้อ จำกัด สำหรับ linux ที่ทันสมัยที่สุด en.wikipedia.org/wiki/Avahi_%28software%29 en.wikipedia.org/wiki/Zeroconf#support
Frank Thomas

คำตอบ:


4

ใครก็ตามที่ตั้งค่าเครือข่ายของโฮสเทลทำผิดพลาดในการใช้RFC 3927 IPv4 Link-Local subnet (169.254.0.0/16) ซึ่งควรใช้เครือข่ายส่วนตัวของ RFC 1918 (192.168.0.0/16, 172.16.0.0/12, 10.0 .0.0 / 8) เป็น NAT ส่วนตัวซับเน็ต

นี้ละเมิดบทบัญญัติ "1.6 สลับใช้ห้าม" ของ RFC 3927

ดังนั้นจึงไม่น่าแปลกใจที่ลูกค้าบางคนมีปัญหากับการกำหนดค่านี้ คุณอาจลองกำหนดค่ากล่อง Linux ของคุณแบบคงที่สำหรับที่อยู่ในช่วง 169.254.0 [1-255] ช่วงที่อยู่หรือ 169.254.255 ช่วงที่อยู่ [0-254] [0-254] ยังคงอยู่ด้วย / 16 (255.255.0.0) ซับเน็ต หน้ากาก โดยทั่วไปช่วงสองช่วงเหล่านั้นภายใน subnet จะถูกสงวนไว้เมื่อคุณต้องการกำหนดค่าบางอย่างในแบบคงที่บนเครือข่ายย่อย IPv4 Link-Local กำหนดค่าหนึ่งในเราเตอร์เกตเวย์ของ NAT ที่รู้จัก (เช่น 169.254.10.1) เป็นเกตเวย์เริ่มต้นของคุณ

ฉันไม่รับประกันว่าคำแนะนำนั้นจะได้ผล เพื่อประโยชน์ของทุกคนคงจะดีกว่าถ้าคุณช่วยโฮสเทลแห่งนี้กำหนดค่าเครือข่ายให้สอดคล้องกับมาตรฐานที่เกี่ยวข้อง


2

169.254.xx unroutable มันถูกออกแบบมาเพื่อไม่ผ่านเราเตอร์มันสามารถอยู่ในเครือข่ายย่อยของมันเท่านั้น

มันสามารถถูกส่งไป แต่มัน oughtn't จะเป็น

จากRFC 5735

นี่คือบล็อก "link local" ดังที่อธิบายไว้ใน RFC3927มันถูกจัดสรรเพื่อการสื่อสารระหว่างโฮสต์บนลิงก์เดียว โฮสต์รับที่อยู่เหล่านี้โดยการกำหนดค่าอัตโนมัติเช่นเมื่อไม่พบเซิร์ฟเวอร์ DHCP

นอกจากนี้จากRFC 3927

โฮสต์ต้องไม่ส่งแพ็กเก็ตที่มีที่อยู่ปลายทาง IPv4 Link-Local ไปยังเราเตอร์ใด ๆ สำหรับการส่งต่อ


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

มันหมายความว่าไม่มีเครื่อง linux ที่จะได้รับการเข้าถึงอินเทอร์เน็ตจากเครือข่ายนี้หรือไม่?
Kaleem Ullah

2
ใครก็ตามที่ติดตั้งเครือข่ายจำเป็นต้องเรียนรู้บทเรียนบางส่วน มันไม่ควรเส้นทาง พวกเขาไม่ควรใช้พื้นที่ที่อยู่นั้นสำหรับการสื่อสารที่มีไว้สำหรับ 'โลกภายนอก กำลังเพิ่ม para อื่นจาก RFC 3927 ...
Tetsujin

ไม่มีวิธีใดในการเข้าถึงอินเทอร์เน็ตโดยไม่ต้องเปลี่ยนพื้นที่ที่อยู่นี้เพราะผู้ดูแลระบบจะไม่เปลี่ยนพื้นที่ที่อยู่เพียงฉันเป็นเครือข่ายโฮสเทลที่มีประมาณ 300 โฮสต์และทุกคนใช้ windows ดังนั้นไม่มีใครประสบปัญหาใด ๆ
Kaleem Ullah

1
tbh ฉันไม่รู้ว่าทำไม Windows ถึงผ่านได้ แต่ไม่ต้องระวัง เครื่องของคุณเห็นพฤติกรรมที่ถูกต้อง :( อย่างน้อยผู้ดูแลระบบเครือข่ายควรได้รับการบอกกล่าวว่าเขากำลังฝ่าฝืนการปฏิบัติที่ยอมรับได้ทั้งหมดและเขาจะดีกว่าที่จะแลกเปลี่ยนกับพื้นที่ 192.168 ปกติแล้วทุกคนก็จะมีความสุข แม้แต่การป้องกันความขัดแย้งด้าน IP อย่างง่าย ๆ ก็จงหาความผิดปกติอื่น ๆ
เท็ตสึจิน

2

สรุป

คุณควรตรวจสอบขอบเขตของที่อยู่ IP ของอินเทอร์เฟซเครือข่ายของคุณ ถ้ามันเป็นlinkที่แหล่งที่อยู่ IP 0.0.0.0ของแพ็กเก็ตที่ส่งออกนอกท้องถิ่นของคุณจะถูกแทนที่ด้วย ถ้าเป็นglobalเช่นนั้นคุณจะเข้าสู่อินเทอร์เน็ตตามปกติ

ขอบเขตที่อยู่ IP สามารถพบได้ในip address showผลลัพธ์คำสั่งในส่วนของอินเทอร์เฟซเครือข่ายของคุณ

ในการเปลี่ยนขอบเขตคุณสามารถใช้ip address delเพื่อลบที่อยู่ IP ของโฮสต์ของคุณแล้วใช้ip address addเพื่อเพิ่มขอบเขตอีกครั้งด้วยขอบเขตที่เหมาะสม หากคุณทำเช่นนั้นเกตเวย์เริ่มต้นจะถูกลบออกจากตารางเส้นทาง ดังนั้นคุณควรเพิ่มด้วยตนเอง

นั่นคือทั้งหมดที่ หลังจากขั้นตอนข้างต้นอินเทอร์เน็ตควรใช้งานได้

ตัวอย่าง

นี่คือตัวอย่าง (เอาต์พุตที่ไม่เกี่ยวข้องบางส่วนถูกตัดทอนและอีกอันคือ (un) เยื้อง):

# ip addr
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:d1:09:56 brd ff:ff:ff:ff:ff:ff
    inet 169.254.55.3/16 brd 169.254.255.255 scope link dynamic ens33
       valid_lft 1596sec preferred_lft 1596sec
# ip addr del 169.254.55.3/16 dev ens33
# ip addr add 169.254.55.3/16 dev ens33 scope global
# ip addr
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:d1:09:56 brd ff:ff:ff:ff:ff:ff
    inet 169.254.55.3/16 scope global ens33
       valid_lft forever preferred_lft forever
# ip route add default via 169.254.0.34 dev ens33
# ip route
    default via 169.254.0.34 dev ens33 
    169.254.0.0/16 dev ens33  proto kernel  scope link  src 169.254.55.3 

ทดสอบกับ Fedora 23 และ Centos 7.2 Live CDs

หมายเหตุ

  1. โซลูชันนี้มีข้อเสียเปรียบหลักในการใช้ที่อยู่แบบคงที่ มันไม่เหมาะกับ LANs และ DHCP ของโฮสเทล
  2. ฉันค่อนข้างแน่ใจว่ามีบรรทัดการกำหนดค่าอย่างง่าย ๆ อยู่ที่ไหนสักแห่งเพื่อสั่งให้ระบบกำหนดขอบเขตทั่วโลกไปยังที่อยู่การเชื่อมโยงท้องถิ่น (169.254.0.0/16) แต่ฉันยังไม่พบมัน โปรดแจ้งให้เราทราบถ้าคุณทำ
  3. โปรดทราบว่า distros ที่เก่าแก่และเก่าแก่แล้วไม่มีปัญหานี้ ตัวอย่างเช่น Fedora 12 และ Centos 6.8 ใหม่ (ทั้งหมดมีเคอร์เนลเก่า 2.6.32) ให้ขอบเขตทั่วโลกไปยังที่อยู่ลิงค์ท้องถิ่น
  4. หากหนึ่งในขอบเขตการเปลี่ยนแปลงที่จะเชื่อมโยงกับ distors เหล่านั้นเขาจะทำงานเป็นปัญหาที่กล่าวถึง: แหล่งที่อยู่ IP ของทุกนอกท้องถิ่น IP 0.0.0.0แพ็กเก็ตขาออกจะถูกแทนที่ด้วย
  5. มันน่าสนใจที่จะรู้ว่าอะไรทำให้สิ่งนี้มาแทนที่ ถ้าฉันรู้สิ่งนี้ฉันก็จะหาคำตอบของข้อ 2
  6. ด้วยขอบเขตทั่วโลกแพ็คเก็ต IP ที่ไม่ใช่ท้องถิ่นจะถูกส่งไปอย่างสมบูรณ์แบบโดยเราเตอร์ NAT ที่สร้างขึ้นใน VMWare Workstation ล่าสุดและโดยเครื่อง Linux ที่มี Fedora 12 ทำงานเป็นเราเตอร์แม้จะเป็น RFCs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.