我刚刚安装了 vsftpd,并启动了该服务。服务正在运行,我的 netstat 转储也显示了这一点(见下文)。我还启用了匿名访问。但是,当我尝试使用 FTP 客户端访问服务器,或者甚至只是 telnet 到端口 21 时,我收到“连接被拒绝”的消息。
我该如何解决这个问题?
网络状态-a:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:11110 *:* LISTEN
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 *:macromedia-fcs *:* LISTEN
tcp 0 0 *:ndmp *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost:19350 *:* LISTEN
tcp 0 0 *:lmsocialserver *:* LISTEN
tcp 0 0 localhost:19350 localhost:60863 ESTABLISHED
tcp 0 0 mischost:ssh c-71-56-64-141.hsd1.g:62946 ESTABLISHED
tcp 0 0 localhost:60863 localhost:19350 ESTABLISHED
tcp 0 196 mischost:ssh c-71-56-64-141.hsd1.g:18606 ESTABLISHED
tcp 0 0 *:http *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 mischost:http baiduspider-123-125-7:25479 FIN_WAIT2
udp 0 0 *:ndmp *:*
在 /etc/sysconfig/iptables 中:
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:92]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1935 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1111 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -j ACCEPT
COMMIT
iptables -L -n:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:10000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1935
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1111
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix `iptables denied: '
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
答案1
“连接被拒绝”非常具体。这意味着当您尝试连接到此服务(通过发送 SYN 数据包)时,您会收到一个特定响应(RST 数据包),意思是“服务器存在,但未在该端口上提供服务。如果没有任何防火墙,如果实际上没有任何东西在监听该端口,您将收到此响应。由于您已验证确实有东西在监听该端口,因此此响应必须来自某个防火墙,要么是服务器本身的防火墙(您可以使用 进行检查iptables -L -n
),要么是您和服务器之间的其他防火墙。如果不是服务器本身,则可能是服务器和客户端之间的任何其他路由器。
这一切都假设您尝试通过 telnet 连接到正确的 IP 地址。
答案2
检查防火墙是否打开了端口 21,并且防火墙中是否有用于数据流连接跟踪的模块。