ฉันดิ้นรนกับปัญหาที่ไม่สามารถทำซ้ำได้ง่ายนี้มานานแล้ว ฉันกำลังใช้เคอร์เนล linux v3.1.0 และบางครั้งการกำหนดเส้นทางไปยังที่อยู่ IP บางแห่งไม่ทำงาน สิ่งที่น่าจะเกิดขึ้นคือแทนที่จะส่งแพ็กเก็ตไปที่เกตเวย์เคอร์เนลจะปฏิบัติต่อที่อยู่ปลายทางเป็นท้องถิ่นและพยายามรับที่อยู่ MAC ของตนผ่าน ARP
ตัวอย่างเช่นตอนนี้ที่อยู่ IP ปัจจุบันของฉันคือ 172.16.1.104/24 เกตเวย์คือ 172.16.1.254:
# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:1B:63:97:FC:DC
inet addr:172.16.1.104 Bcast:172.16.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:230772 errors:0 dropped:0 overruns:0 frame:0
TX packets:171013 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:191879370 (182.9 Mb) TX bytes:47173253 (44.9 Mb)
Interrupt:17
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.1.254 0.0.0.0 UG 0 0 0 eth0
172.16.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
ฉันสามารถส่ง Ping ไปยังที่อยู่ไม่กี่แห่ง แต่ไม่ใช่ 172.16.0.59:
# ping -c1 172.16.1.254
PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data.
64 bytes from 172.16.1.254: icmp_seq=1 ttl=64 time=0.383 ms
--- 172.16.1.254 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.383/0.383/0.383/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=63 time=5.54 ms
--- 172.16.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.545/5.545/5.545/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=62 time=7.92 ms
--- 172.16.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 7.925/7.925/7.925/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.59
PING 172.16.0.59 (172.16.0.59) 56(84) bytes of data.
From 172.16.1.104 icmp_seq=1 Destination Host Unreachable
--- 172.16.0.59 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
เมื่อพยายาม ping 172.16.0.59 ฉันเห็นได้ใน tcpdump ว่า ARP req ถูกส่ง:
# tcpdump -n -i eth0|grep ARP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:25:16.671217 ARP, Request who-has 172.16.0.59 tell 172.16.1.104, length 28
และ / proc / net / arp มีรายการที่ไม่สมบูรณ์สำหรับ 172.16.0.59:
# grep 172.16.0.59 /proc/net/arp
172.16.0.59 0x1 0x0 00:00:00:00:00:00 * eth0
โปรดทราบว่า 172.16.0.59 คือสามารถเข้าถึงได้จาก LAN นี้จากคอมพิวเตอร์เครื่องอื่น ๆ
ไม่มีใครมีความคิดเกี่ยวกับสิ่งที่เกิดขึ้น? ขอบคุณ
อัปเดต:ตอบกลับความคิดเห็นด้านล่าง:
- ไม่มีส่วนต่อประสานนอกจาก eth0 และ lo
- ไม่สามารถมองเห็น ARP req ได้ที่ปลายอีกด้านหนึ่ง แต่นั่นเป็นวิธีที่ควรใช้งาน ปัญหาหลักคือต้องไม่ส่ง ARP req ตั้งแต่แรก
- ปัญหายังคงมีอยู่แม้ว่าฉันจะเพิ่มเส้นทางที่ชัดเจนด้วยคำสั่ง "เส้นทางเพิ่ม -host 172.16.0.59 gw 172.16.1.254 dev eth0"
ifconfig -a
ไหม คุณมีอินเตอร์เฟส / IP อื่น ๆ ที่กำหนดให้กับโฮสต์นี้หรือไม่