由于某种原因,我的 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(连接被拒绝)
答案1
您的 VPS 上游似乎存在某些问题,阻止了除所提及的端口之外的访问。您应该联系您的 VPS 提供商并询问他们有关情况。
答案2
好的,为了清楚起见 - 如果您运行的是 CentOS,则很有可能您使用的是版本 5,并且默认使用 sendmail。在这种情况下,您将无法进行外部连接,因为默认情况下 sendmail 只会监听本地主机。要使其监听主 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