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

Сервер CentOS отклоняет все соединения, кроме ssh telnet и http

По какой-то причине мой CentOS VPS отказывается от всех подключений, кроме HTTP, SSH и Telnet. Всякий раз, когда я пытаюсь подключиться к порту, например 25 (SMTP), или даже к случайному порту, например 225, я получаю сообщение об ошибке в соединении: S netstat -ap показывает, что сервер прослушивает и iptables отключен.

Однако я могу взаимодействовать с теми же портами на сервере через telnet ...

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

# netstat -an | fgrep LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:225                 0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
unix  2      [ ACC ]     STREAM     LISTENING     169786017 /tmp/.font-unix/fs7100
unix  2      [ ACC ]     STREAM     LISTENING     169786045 /var/run/saslauthd/mux

Это сообщение об ошибке, которое я получаю из моего скрипта php. Мой PHP-скрипт отлично работает со всеми остальными SMTP-серверами, с которыми я сталкивался. Предупреждение: fsockopen () [function.fsockopen]: невозможно подключиться к: 25 (соединение отклонено)

Похоже, что что-то выше вашего VPS блокирует доступ, за исключением отмеченных портов. Вам следует обратиться к своему провайдеру VPS и спросить его об этом.

Хорошо, чтобы прояснить ситуацию - если вы используете CentOS, скорее всего, вы находитесь в версии 5 с sendmail по умолчанию. В этом случае вы не будете подключаться извне, потому что sendmail по умолчанию будет слушать только localhost. Чтобы он прослушивал основной IP-адрес, вам нужно отключить строку в /etc/sendmail.mc из этого:

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

к этому:

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Затем перестройте sendmail.cf со следующим:

/etc/mail/make
/etc/init.d/sendmail restart

(если это postfix, это может быть другая история. IIRC, postfix по умолчанию также будет прослушивать только на локальном хосте, поэтому вам нужно будет настроить его также для прослушивания на основном IP).

ОДНАКО, поскольку вы просто пытаетесь проверить внешнее соединение, вам может потребоваться просто установить nc, а затем запустить его, чтобы прослушать конкретный файл. Вот мой пример:

[root@kvm0006 mail]# nc -l 50

Здесь я слушаю порт 50 (отсюда -l). Теперь, когда я подключаюсь извне к серверу через этот порт, я получаю следующее:

yvaine:Downloads rilindo$ telnet 192.168.15.36 50
Trying 192.168.15.36...
Connected to kvm0006.monzell.com.
Escape character is '^]'.
Hello

Что вернет следующее на стороне сервера:

[root@kvm0006 mail]# nc -l 50
Hello

Чтобы установить NC:

yum -y install nc