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

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

Задний план

У меня есть набор встроенного оборудования, развернутого в полевых условиях. Эти удаленные машины подключаются к моим серверам в AWS под управлением Ubuntu, и я использую iptables mangle цепи, чтобы снизить 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?

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

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