Задать вопрос
Arsolitt
@Arsolitt

Почему изменяется порт udp пакета после маскарада?

Два сервака имеют белые адреса, связал их через GRE туннель. Один сервер является шлюзом, который форвардит диапазон портов через туннель на второй сервер. На втором сервере приложения слушают и tcp и udp. На втором серваке маркирую пакеты, которые эти приложения выплёвывают и отправляю обратно в туннель. TCP трафик ходит как нужно, а вот с UDP какой-то прикол.

На сервере-шлюзе в tcpdump видно следующее:
Входящий tcp пакет пришёл на 100.100.100.100:31000 ушёл в туннель на 10.10.10.2:31000, вернулся из туннеля имея источник 10.10.10.2:31000, получает маскарад, становится 100.100.100.100:31000 и улетает клиенту, всё хорошо.

Udp пакет в свою очередь приходит на 100.100.100.100:31000, получает форвард в туннель на 10.10.10.2:31000, а возвращается из туннеля с источником 200.200.200.200:31000, получает маскарад и становится 100.100.100.100:рандомный_порт, соответственно клиент не получает в ответ ничего, потому что не ждёт рандомный порт.

Ниже накидал +- схему, все правила для tcp и udp одинаковые.
65f81ef1db84f625638935.png
Подскажите, куда жмать, чтобы всё работало?? А лучше объясните, почему так происходит: изменяется sport после маскарада, и из туннеля возвращается пакет с saddr другого интерфейса. Полагаю, что-то с conntrack связанное, но я не знаю, как гуглить даже
  • Вопрос задан
  • 3037 просмотров
Подписаться 3 Сложный 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
SLIDERWEB
@SLIDERWEB
ИТ-Куроводитель
Udp натится с оговорками. И одна из причин прописана в rfc. И порт обязательно будет меняться. Только конусный нат возможен.
Читайте разницу в трансляциях tcp и udp.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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