Веб-сервер за маршрутизатором NAT недоступен

у меня есть загадочная проблема с небольшим сервером, который я запускаю ДОМА, за маршрутизатором NAT. Я запускаю несколько веб-сервисов и других сервисов, к которым я также могу получить доступ извне моей локальной сети через переадресацию портов. Через несколько дней я больше не могу получить доступ к веб-серверу (ни на порт 80, ни на порт 443). Но только от за пределами локальная сеть! Изнутри я все еще могу получить доступ без проблем. SSH все еще работает извне, хотя и на нестандартном порту.

Так я сделал Трассировка Wireshark, где браузер вне LAN пытается обратиться к серверу. Для удобства чтения и анонимности я изменил IP-адрес сервера на s.С. С. S и IP-адрес браузера b.b.b.b.

No.  Time      Source    Destination  Protocol Length Info
1    0.000000  b.b.b.b   s.s.s.s      TCP      66     59468 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
2    0.022883  s.s.s.s   b.b.b.b      TCP      66     80 → 59468 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1380 SACK_PERM=1 WS=128
3    0.022949  b.b.b.b   s.s.s.s      TCP      54     59468 → 80 [ACK] Seq=1 Ack=1 Win=66048 Len=0
4    0.025405  b.b.b.b   s.s.s.s      HTTP     294    GET / HTTP/1.0 
5    0.026677  s.s.s.s   b.b.b.b      HTTP     666    HTTP/1.1 403 Forbidden  (text/html)
6    0.026678  s.s.s.s   b.b.b.b      TCP      54     80 → 59468 [FIN, ACK] Seq=613 Ack=241 Win=0 Len=0
7    0.026678  s.s.s.s   b.b.b.b      TCP      54     80 → 59468 [RST, ACK] Seq=614 Ack=241 Win=0 Len=0

TCP-подключение настроено правильно. Затем браузер отправляет запрос HTTP GET и получает ответ "403 Forbidden". Кроме того, почти одновременно с ответным сообщением HTTP он получает плавник и первое сообщение!

на стороне сервера я сделал tcpdump из того же общения:

$ sudo tcpdump -n port 80 or port 443
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:53:26.625013 IP b.b.b.b.59468 > s.s.s.s.80: Flags [S], seq 2382139585, win 8192, options [mss 1380,nop,wscale 8,nop,nop,sackOK], length 0
16:53:26.625131 IP s.s.s.s.80 > b.b.b.b.59468: Flags [S.], seq 1966829679, ack 2382139586, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
16:53:26.647631 IP b.b.b.b.59468 > s.s.s.s.80: Flags [.], ack 1, win 258, length 0
16:53:26.650205 IP b.b.b.b.59468 > s.s.s.s.80: Flags [R.], seq 1, ack 1, win 258, length 0

здесь настройка TCP соединения (первые три пакета) по-прежнему в порядке. но где же HTTP-сообщениями? нет ни запроса, ни ответа?! Что здесь происходит? И почему сервер немедленно закрывает соединение с первым пакетом?

сначала я заподозрил некоторую неправильную конфигурацию Apache (я иногда меняю вещи там, не зная, что я делаю). Поэтому я выключил Apache и начал Скрипт Python SimpleHTTPServer. Следы Wireshark и tcpdump оказались почти одинаковыми, но теперь, по крайней мере, получили некоторый вывод ошибок из скрипта Python:

----------------------------------------
Exception happened during processing of request from ('b.b.b.b', 59468)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 655, in __init__
    self.handle()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
    self.handle_one_request()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 310, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "/usr/lib/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 104] Connection reset by peer
----------------------------------------

но это на самом деле не привело меня дальше. Кто-нибудь есть идеи что может быть причиной всего этого?

9
задан Georg P.
04.12.2022 10:07 Количество просмотров материала 3168
Распечатать страницу

2 ответа

Спасибо за файлы захвата.

существует межсетевой экран или своего рода middlebox (возможно, Cisco ASA) между вашим клиентом и сервером, который перехватывает ваш веб-трафик и генерирует сообщение 403 и пакеты RST. Вот почему:

  1. TCP трехстороннее квитирование успешно завершается между клиентом и сервером. Время в оба конца примерно 30ms. Пока все в порядке.
  2. клиент отправляет запрос HTTP GET на сервер.
  3. 403 запрещенное сообщение отправляется обратно клиенту 2ms после отправки запроса, которая составляет far слишком быстро, чтобы быть с реального сервера. Захват трафика с сервера также не показывает никаких признаков HTTP-запроса. какое-то устройство между двумя устройствами породило этот 403.

    Примечание verbage из 403:

    вы пытаетесь получить доступ к запрещенной сайт.



    Обратитесь к системному администратору для получения сведений

    Это не стандартный Apache 403 и из быстрого Google, я вижу ссылку на подобное сообщение на дискуссионный поток Cisco ASA. Я также вижу, что исходный MAC 403 в вашем захвате действительно является устройством Cisco.

  4. первый пакет отправляется как клиенту, так и серверу для принудительного закрытия соединения. Обратите внимание, как источник IP каждого Первый пакет-это IP-адрес источника другого устройства. Что-то между этими двумя устройствами отправило поддельный первый пакет обеим сторонам, утверждая, что он от другого.

где именно вы проводите внешнее тестирование? Возможно, это из корпоративной сети?

1
отвечен MarkoPolo 2022-12-05 17:55

вы говорите в своем вопросе, что при запуске Apache вы получаете сообщение "403 Forbidden".

это сообщение генерируется Apache и поэтому ваш запрос и ответ, казалось бы, правильно обрабатывается вашей сетью.

я сосредоточу ваше дальнейшее расследование на Apache config. Как вы настроили свой сервер? Если по IP-адресу вам нужно убедиться, что Apache знает, что он должен отвечать как на локальные частные IP-адреса, так и на ваш публичный. Вы можете разместить ваш файл httpd.conf и файлы в каталоге с поддержкой сайтов?

0
отвечен yknivag 2022-12-05 20:12

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх