Назад | Перейти на главную страницу

openvpn ping: пакетный ответ отправляется на другой (?) порт

Мне трудно указать точное местоположение проблемы с моим openvpn, который работает на сервере Linux, который находится за модемом, который, в свою очередь, подключен к Интернету через динамический IP-адрес. Подробную историю проблемы со стороны openvpn и шаги, предпринятые для ее поиска, см. этот вопрос.

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

на сервере cat /etc/rc.d/rc.firewall | egrep -v '^(#|$)' | grep "\-t nat" дает:

$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port 80 -j REDIRECT --to-ports 3128 #TRANSP PROXY
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

на клиенте та же команда:

$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE [/quote]

снова еще один tcpdump -i eth1 udp and host <server_or_client_inet_ip> согласования TLS: на клиенте

15:07:43.028277 IP 192.168.233.165.37073 > server_ip.32456: UDP, length 14
15:07:43.064518 IP server_ip.29199 > 192.168.233.165.37073: UDP, length 22

и на сервере

15:07:43.046535 IP client_ip.15312 > 192.168.231.165.32456: UDP, length 14
15:07:43.046618 IP 192.168.231.165.32456 > client_ip.15312: UDP, length 22

топографически это соединение выглядит так:

  client         <--> modem of client <--i-n-t-e-r-n-e-t--> modem of server <-->     server
192.168.233.165       192.168.233.117                       192.168.231.117      192.168.231.165.

отсортированный по времени, пинг openvpn между клиентом и сервером выглядит следующим образом:

[client]  15:07:43.028277 IP 192.168.233.165.37073 > server_ip.32456: UDP, length 14
[server]  15:07:43.046535 IP client_ip.15312 > 192.168.231.165.32456: UDP, length 14
[server]  15:07:43.046618 IP 192.168.231.165.32456 > client_ip.15312: UDP, length 22
[client]  15:07:43.064518 IP server_ip.29199 > 192.168.233.165.37073: UDP, length 22

ТАК, если я правильно прочитал

  1. клиент отправляет пакет с порта 37073 на порт openvpn сервера (32456)
  2. на этом этапе пакет проходит через модем клиента, затем через Интернет, а затем через модем сервера.
  3. тогда сервер получает этот пакет на другой порт (15312), чем исходный. пункт назначения - 32456, как и ожидалось.
  4. сервер правильно отвечает через порт 32456 и порт назначения, с которого был получен пакет (15312). Пакет ответа снова на пути к клиенту.
  5. пакет снова проходит через модем сервера, Интернет и модем клиента
  6. кажется, что пакет приходит клиенту на порт, на котором была инициирована эта попытка связи (37073), но, похоже, он не приходит с порта 32456. Вместо этого где-то на шаге 5 исходный порт был изменен на 29199.
  7. этот исходный порт 29199 не указан в правиле брандмауэра, поэтому правило брандмауэра клиента отбрасывает этот пакет.

Правильно ли предположить, что на шаге 2) и, что наиболее важно, 5) в модемах происходит какой-то NAT из-за изменения порта источника пакета? Или я должен придерживаться предположения, что проблема где-то в моих брандмауэрах?

Я имею в виду, что это похоже на проблему с NAT, но, глядя в таблицы NAT сервера и клиента, я не могу определить ошибку с помощью моих собственных брандмауэров.

Если я предполагаю, что я что-то напутали в моих пользовательских межсетевых экранах сервера и клиента (вполне возможно), какие команды netfilter я должен искать это изменить порт источника пакета?

Что касается модемов, позвольте мне заявить, что на веб-странице конфигурации модема моего сервера брандмауэр и SPI отключены, правило NAT не установлено, и только узел DMZ настроен так, что все Интернет-трафик направляется на межсетевой экран сервера. На стороне клиента настройки модема точно такие же.

Достаточно ли этого перехвата пакетов с помощью tcpdump? Могу ли я использовать tcpdump с другой командой, чтобы получить дополнительную информацию о том, где был изменен исходный порт?

Спасибо заранее за вашу помощь.

для тех, кто убивает себя из-за какой-то странной проблемы с NAT, вроде моей.

Ну, в конце концов, это был модем. Тот, который предоставил мой интернет-провайдер.

"ZTE ZXHN H108L" с прошивкой "ZXHN H108LV4.0.0e_ZRQ_GR4" (проблема сначала возникла с версией "d" прошивки, но обновление не решило ее).

Я заменил модем другим, который у меня был, и вуаля. задача решена. Конечно, на тот момент я играл снова и снова более 6 месяцев.