Я уже довольно давно пытаюсь понять странное поведение в нашей настройке маршрутизации / брандмауэра, но не совсем понимаю, что происходит.
У нас есть межсетевой экран / маршрутизатор с двумя внешними интерфейсами и несколькими внутренними VLAN.
Особое поведение наблюдается, когда клиент (MAC f4:f5:d8:d2:f2:4c
, IP 10.99.154.254 в этом примере) в нашей гостевой сети Wi-Fi VLAN 99 отправляет эхо-запрос ping на некоторый интернет-хост 8.8.8.8, который мы запрещаем.
Маршрутизатор отправляет обратно пакет ICMP о недоступности узла со своего vlan99
интерфейс (MAC 00:08:a2:0d:00:70
, IP 10.99.0.2) клиенту, и в то же время мы видим марсианский пакет на внешнем интерфейсе 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
Ничего удивительного здесь нет, это исходный пинг от клиента и результирующий пакет 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..
Информация канального уровня показывает, что этот Ethernet-фрейм пришел из клиентское устройство к маршрутизатор vlan99
интерфейс, что заставляет меня задаться вопросом, почему он выглядит как марсианский пакет на eth-ext1
с исходным адресом 8.8.8.8.
Мне пока не удалось получить трассировку пакета с марсианским источником, что заставляет меня задуматься, происходит ли ведение журнала марсианского источника на выходном интерфейсе до того, как tcpdump
есть шанс это увидеть?
Я с удовольствием предоставлю дополнительную информацию по запросу (таблицы маршрутизации и т.п.) и буду признателен за любые указатели на то, что здесь происходит.
Ядро исправляет запрос 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 - отсюда не добраться.