Этот вопрос, возможно, задавали здесь много раз, но после нескольких неудачных попыток я повторяю историю:
Как открыть порт 25 на моем сервере под управлением CentOS.
Вот моя конфигурация iptables:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere loopback/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ftp
ACCEPT icmp -- anywhere anywhere
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp spt:ftp-data
Вот результат sudo netstat -plntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1283/nginx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1039/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 5981/master
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1297/php-cgi
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1177/mysqld
tcp 0 0 :::22 :::* LISTEN 1039/sshd
tcp 0 0 :::25 :::* LISTEN 5981/master
Всякий раз, когда я пытаюсь подключиться к телнету вот так
telnet 158.549.236.54 25
время ожидания соединения истекло. Здесь используется случайный IP.
Проблема не в вашем брандмауэре (кажется, вы добавили правило вверху, разрешающее весь трафик).
Основная проблема заключается в том, что порт 25 прослушивает только 127.0.0.1 и :: 1, которые оба являются localhost. Вам необходимо настроить свой SMTP-сервер для прослушивания интерфейса 158.549.236.54 (или всех интерфейсов)
Я сильно подозреваю, что проблема в ваших правилах брандмауэра. Хотя кажется, что первое правило разрешает все, именно поэтому вывод iptables -L
хуже, чем бесполезно для диагностики этих проблем - не дает ограничений интерфейса.
Я подозреваю, что если бы вы вставили вывод iptables -L -n -v
вместо этого мы увидим, что это первое правило применяется к трафику только на интерфейсе обратной связи.
Пытаться
iptables -I INPUT 1 -p tcp --dport 25 -j ACCEPT
и посмотрите, исправит ли это что-нибудь.
Конфигурация кажется хорошей (брандмауэр разрешает весь трафик и почтовый сервер открыт на: 25), скорее всего, ваш провайдер блокирует трафик на почтовый порт (для борьбы со спамом).
Обходной путь - добавить перенаправление NAT на вашем сервере со случайного порта (скажем, 2525) на порт 25. iptables -t nat -I PREROUTING -p tcp --dport 2525 -j REDIRECT --to-port 25
а затем попробуйте подключиться к этому порту через Telnet: telnet ip 2525