По какой-то причине мой 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