Как выяснить, почему мой NAT-ящик отправляет пакеты TCP RST?

TL; DR : Я вижу, что хост ubuntu (который я полностью контролирую) отправляет пакет при определенных обстоятельствах. Как найти модуль приложения / ядра, ответственный за этот пакет?

Я разрабатываю самодельный NAT-блок, и я пришел к этому пункту:

Топология сети: [192.168.1.100] - [192.168.1.1 : 10.0.0.4] - [10.0.0.1]

  • [10.0.0.1] запускает веб-сервер Apache2 по умолчанию.
  • [192.168.1.1: 10.0.0.4] - это настраиваемый NAT-блок, где 192.168.1.1 является внутренним iface, а 10.0.0.4 - внешним.
  • [192.168.1.100] - это клиент, выполняющий wget -O - 10.0.0.1

Когда я запрашиваю страницу с сервера, вот трафик, который я вижу на двух интерфейсах NAT:

No.     Time           Source                Destination           Protocol Length Info
      1 0.000000000    ae:29:9f:0e:3a:0d     da:32:d6:6c:18:e6     ARP      42     Who has 10.0.0.1?  Tell 10.0.0.4
      2 0.002477000    da:32:d6:6c:18:e6     ae:29:9f:0e:3a:0d     ARP      42     10.0.0.1 is at da:32:d6:6c:18:e6
      3 0.752175000    192.168.1.100         10.0.0.1              TCP      74     52054 > http [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=1584 TSecr=0 WS=512
      4 0.762395000    10.0.0.4              10.0.0.1              TCP      74     48394 > http [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=1584 TSecr=0 WS=512
      5 0.763218000    10.0.0.1              10.0.0.4              TCP      74     http > 48394 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=1587 TSecr=1584 WS=512
      6 0.763230000    10.0.0.4              10.0.0.1              TCP      54     48394 > http [RST] Seq=1 Win=0 Len=0
     11 0.770654000    10.0.0.1              192.168.1.100         TCP      74     http > 52054 [SYN, ACK] Seq=0 Ack=1 Win=28960 Len=0 MSS=1460 SACK_PERM=1 TSval=1587 TSecr=1584 WS=512
     12 0.771153000    192.168.1.100         10.0.0.1              TCP      66     52054 > http [ACK] Seq=1 Ack=1 Win=29696 Len=0 TSval=1589 TSecr=1587
     13 0.771350000    192.168.1.100         10.0.0.1              HTTP     172    GET / HTTP/1.1 
      7 0.781889000    10.0.0.4              10.0.0.1              TCP      66     48394 > http [ACK] Seq=1 Ack=1 Win=29696 Len=0 TSval=1589 TSecr=1587
      8 0.782015000    10.0.0.1              10.0.0.4              TCP      54     http > 48394 [RST] Seq=1 Win=0 Len=0
      9 0.782163000    10.0.0.4              10.0.0.1              HTTP     172    GET / HTTP/1.1 
     10 0.782173000    10.0.0.1              10.0.0.4              TCP      54     http > 48394 [RST] Seq=1 Win=0 Len=0
     14 0.791486000    10.0.0.1              192.168.1.100         TCP      54     http > 52054 [RST] Seq=1 Win=0 Len=0
     15 0.792103000    10.0.0.1              192.168.1.100         TCP      54     http > 52054 [RST] Seq=1 Win=0 Len=0

Другими словами, происходит следующее (игнорирование ARP):

  1. Клиент отправляет SYN-пакет
  2. NAT-блок принимает его и повторно отправляет внешнему серверу.
  3. Сервер отвечает SYN, ACK - второй шаг для рукопожатия.
  4. NAT-блок получает SYN, ACK и делает две вещи:
    • Он отправляет SYN, ACK клиенту (это хорошо)
    • Он отправляет пакет RST на сервер (который разрывает соединение)

Я считаю, что мое приложение, работающее с NAT, не способно отправлять RST пакет. Я подозреваю, что он исходит от NetFilter, но я не знаю, как это подтвердить.

Как мне узнать, откуда пришел этот пакет (# 6)?

PS Я запускаю его в mininet 2.2.1 под ubuntu 14.04

0
задан 1 July 2016 в 14:47
1 ответ

Можете ли вы проверить, что источник / клиент, отправляющий исходный SYN-пакет, на самом деле НЕ является двумя конечными точками с одним и тем же IP-адресом, совместно используемыми за NAT ??? Вы должны сначала проверить это, прежде чем мы сможем решить эту проблему за вас. Пожалуйста, подтвердите и свяжитесь с нами. Один из способов тестирования - использовать SSH из окна NAT в окно клиента, и это соединение должно быть сброшено в течение минуты или двух, если «клиент (исходный отправитель SYN в вашем сценарии выше)» на самом деле является двумя конечными точками с одним и тем же IP-адресом.

0
ответ дан 5 December 2019 в 10:04

Теги

Похожие вопросы