Как заставить определенный MTU только для определенных портов TCP?

Фон

У меня есть набор встроенного оборудования, развернутого в полевых условиях. Эти удаленные машины подключаются обратно к моим серверам в AWS под управлением Ubuntu, и я использую iptablesmangle цепь, чтобы снизить MTU до 500, чтобы эти устройства были довольны. Для справки, это iptables Правило, которое я использую:

-A POSTROUTING -p tcp --sport 12345 --tcp-flags SYN,RST SYN -o eth0 -j TCPMSS --set-mss 500

Текущая проблема

Я пытаюсь раскрутить некоторые серверы в Joyent Cloud, используя SmartOS, но я не могу найти какую-либо информацию о выборочном изменении MTU, как я могу в Linux (например, вся информация, которую я нашел, касается его глобального изменения, а это не то, что мне нужно).

Как бы я сделал это, чтобы все соединения на TCP-порту 12345 получили MTU, который я хочу?

1 ответ

Решение

Судя по отзывам службы поддержки Joyent, это невозможно. MTU можно установить только на уровне интерфейса, а не через брандмауэр, как в Linux.

Обратите внимание, что теоретически можно изменить MTU для сокета через setsockopt вызов (через TCP_MAXSEG опция), но в настоящее время нет никакого расширения, доступного для node.js для этого. Другие платформы приложений должны использовать setsockopt вызов.

Другие вопросы по тегам