我已經嘗試了解我們的路由/防火牆設定中的特殊行為很長一段時間了,但並不真正了解發生了什麼。
我們有一個防火牆/路由器設備,它有兩個面向外部的介面和多個內部 VLAN。
f4:f5:d8:d2:f2:4c
當我們的訪客 WiFi 網路 VLAN 99 上的用戶端(本例為 MAC,IP 10.99.154.254)向某個網際網路主機 8.8.8.8 傳送 ping 回顯要求(我們禁止這樣做)時,會觀察到特定行為。
路由器從其vlan99
介面(MAC 00:08:a2:0d:00:70
,IP 10.99.0.2)向客戶端發送回 ICMP 主機不可達資料包,同時我們看到火星資料包在外部介面上eth-ext1
:
tcpdump
顯示這個:
$ tcpdump -i vlan99 -vvvvn 'icmp and host 10.99.154.254'
11:59:21.555564 f4:f5:d8:d2:f2:4c > 00:08:a2:0d:00:70, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
10.99.154.254 > 8.8.8.8: ICMP echo request, id 2303, seq 1, length 64
11:59:21.555651 00:08:a2:0d:00:70 > f4:f5:d8:d2:f2:4c, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 8585, offset 0, flags [none], proto ICMP (1), length 112)
10.99.0.2 > 10.99.154.254: ICMP host 8.8.8.8 unreachable, length 92
(tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
10.99.154.254 > 8.8.8.8: ICMP echo request, id 2303, seq 1, length 64
這裡沒什麼奇怪的,這是來自客戶端的原始 ping 以及返回到來賓客戶端的生成的 ICMP 封包,通知它們主機無法存取。
同時,核心日誌中出現一條條目:
Feb 21 11:59:21 ganymede kernel: IPv4: martian source 10.99.154.254 from 8.8.8.8, on dev eth-ext1
Feb 21 11:59:21 ganymede kernel: ll header: 00000000: 00 08 a2 0d 00 70 f4 f5 d8 d2 f2 4c 08 00 .....p.....L..
鏈路層資訊顯示這個乙太網路幀來了從客戶端設備到路由器的vlan99
介面,這讓我想知道為什麼它顯示為火星數據包eth-ext1
來源位址為 8.8.8.8。
到目前為止,我未能找到帶有火星源的資料包的痕跡,這讓我想知道火星源日誌記錄是否也發生在出口介面上,然後才有tcpdump
機會看到它?
我很樂意根據要求提供更多資訊(路由表等),並且非常感謝任何關於這裡發生的事情的指示。
答案1
核心正在將 ping 請求修補到 8.8.8.8,並顯示 icmp 無法到達訊息,並告訴您來源是火星人。
這是它正在標記的資料包...
11:59:21.555651 00:08:a2:0d:00:70 > f4:f5:d8:d2:f2:4c, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 8585, offset 0, flags [none], proto ICMP (1), length 112)
10.99.0.2 > 10.99.154.254: ICMP host 8.8.8.8 unreachable, length 92
正如您透過鏈結層所看到的MAC 00 08 a2 0d 00 70 to f4 f5 d8 d2 f2 4c 08 00
...
Feb 21 11:59:21 ganymede kernel: ll header: 00000000: 00 08 a2 0d 00 70 f4 f5 d8 d2 f2 4c 08 00
火星來源 - 我認為它混淆了它作為 8.8.8.8 代理響應的事實 - 無法從這裡到達那裡。