我正在调试通过 Debian VPS 访问远程服务。使用 IPTables 并允许向外的 21 端口流量。远程服务是 FTP 服务器(我可以从自己的 PC 访问,并且不会被远程服务阻止)。我还检查了 Debian 是否可以访问 FTP 服务器(它可以)。
我想知道 Debian 可能使用什么来阻止 IP?IPTables 显示没有被阻止的 IP 地址。我还安装了 dos-deflate,尽管我已经为 iptables 设置了它。有什么想法可以阻止连接吗?
PS:当我尝试使用 WGET 访问远程 FTP 时,出现“连接被拒绝”信息(wget 可与我用于测试的另一个 FTP 配合使用)。
答案1
它可能会出现相同的问题,但请尝试对远程 IP 进行 telnettelnet ip_address 21
以确保这是 IP/端口问题。如果显示拒绝,但您可以通过 FTP 连接其他网络(确保它们是其他网络),则这是防火墙问题。
在上面发布您的 IPTables(我知道您说这不是原因,但只是为了确保!)。您还可以尝试询问您的托管服务提供商,以确保他们没有阻止 21 个出站到该 IP(极不可能)。最后,询问 FTP 服务为什么他们要阻止您的 IP 地址。
答案2
FTP 使用两个端口,一个用于数据传输,另一个用于控制。21 是控制端口,20 是数据端口。
您也应该打开端口 20(这是主动 FTP,对于被动 FTP,您也需要打开 FTP 软件使用的端口)
答案3
如果您可以准确地找到数据包被丢弃的位置,这可能会有所帮助。hping 在这方面非常方便。
您可以通过将 TTL(-t)从 1 增加到 10 来在端口 21 上创建自己的跟踪路由,如下所示:
for i in `seq 20`;
do echo "+++++ TTL IS: $i +++++";
sudo hping3 -t $i -S ftp.example.com -p 21 -c 1;
done
由于 TTL 太低而返回的数据包将显示:从 ip= name= UNKNOWN 传输时 TTL 0
当你开始遇到 100% 数据包丢失时你就会知道从哪里开始查找。