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

Несмотря на несколько попыток, не удалось открыть порт 25

Этот вопрос, возможно, задавали здесь много раз, но после нескольких неудачных попыток я повторяю историю:

Как открыть порт 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