Вопрос или проблема
Устранение неполадок с ограниченным подключением ipv4 на порту 25.
Есть правила ipTables:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 185.121.228.0/24 anywhere
ACCEPT all -- 127.0.0.0/24 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
Как только политика INPUT по умолчанию становится ACCEPT,
root@mail:/home/ubuntu# echo “HELO” | nc -4 smtp.google.com 25
220 mx.google.com ESMTP ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp
502-5.5.1 Unrecognized command. For more information, go to
502 5.5.1 https://support.google.com/a/answer/3221692 ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp
Когда политика INPUT по умолчанию становится DROP, та же команда висит бесконечно.
Теперь самое интересное, изменение политики INPUT не влияет на
root@mail:/home/ubuntu# echo “HELO” | nc -6 smtp.google.com 25
которая получает ответ от Google независимо от этого.
Нужно, чтобы почтовый сервер отправлял письма на все остальные почтовые серверы, а не только на совместимые с ipv6.
Если кто-то может объяснить, что происходит, это было бы замечательно!
Ответ или решение
Чтобы разрешить проблему с ограниченной связью IPv4 на порту 25, давайте рассмотрим, как работают ваши текущие ipTables правила и почему IPv6 соединения работают, а IPv4 — нет.
Текущая конфигурация ipTables
Во-первых, взглянем на ваши текущие ipTables правила:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 185.121.228.0/24 anywhere
ACCEPT all -- 127.0.0.0/24 anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
Основной момент здесь заключается в том, что ваша политика по умолчанию для цепочки INPUT — DROP. Это означает, что если не найдено подходящего правила для входящего трафика, он будет отброшен.
Поведение IPv4 против IPv6
-
IPv4: Когда дефолтная политика INPUT установлена на DROP, ваш IPv4-трафик на порт 25 будет отброшен. Это происходит, несмотря на то, что у вас есть правило ACCEPT для порта 25, потому что правило может не обрабатывать трафик должным образом. Например, могут существовать дополнительные таблицы или цепочки, которые мы не видим, или проблема связана с NAT или маршрутизацией.
-
IPv6: Для IPv6 вы используете
nc -6
, и такой трафик может обрабатываться другими сетевыми правилами или отдельной конфигурацией. Интересно, что для IPv6 политика по умолчанию может не быть столь же строгой, как для IPv4, либо вы не устанавливаете специальные правила для IPv6.
Возможные решения
-
Проверьте обработку соединений и правила в разных цепочках: Убедитесь, что в на системе нет других правил, которые могли бы влиять на обработку IPv4 соединений. Проверьте таблицы
FORWARD
,OUTPUT
иPREROUTING
. -
Выставьте правило ACCEPT выше по приоритету: Убедитесь, что правило ACCEPT для порта 25 стоит выше любых других, которые могут играть роль фильтра.
-
Исследуйте конфигурацию IPv6: Если IPv6 соединяется без проблем, возможно, политика по умолчанию для IPv6 не установлена так же, как для IPv4. Стоит проверить правила
ip6tables
для идентификации любых различий. -
Логи ipTables: Включите ведение журналов для ipTables, чтобы получить более детальную информацию о том, какой трафик блокируется. Это можно сделать с помощью команды
-j LOG
в правилах, предшествующих вашему deny-by-default правилу. -
Исправьте проблему конфигурации: Если ваша политика INPUT временно меняется на ACCEPT и позволяет соединения, это может быть временным решением, позволяющим вам получить доступ к дополнительным данным для диагностики.
Таким образом, ваш основной фокус должен быть на аудитах текущих правил ipTables и внесении в них необходимых корректировок. Позаботьтесь о том, чтобы ваши правила явно разрешали нужный трафик, избегая при этом избыточного разрешения, учитывая вопросы безопасности.