我在 Ubuntu 10.04 中更新了我的 iptables,但它似乎对打开的端口没有任何影响。
当我运行时iptables --list
,会出现以下行
链输入(政策删除) 目标 保护 优化 源 目标 接受所有 -- 任何地方 任何地方 tcp dpt:smtp
但是,当我尝试进行端口扫描以查看端口 25 是否打开时,它响应为已关闭。上游是否有东西阻塞了端口?或者在修改 IP 表后我需要做些什么来“重新启动”防火墙?
如果还不明白的话,这里有 Linux 菜鸟...
答案1
如果netstat -tapnl | grep 25
不返回类似 0:0:0:0: 的内容:二十五(或者你查询的特定 IP)这意味着没有任何东西在监听该端口,IPTables 不是问题所在——或者至少不是仅有的问题。
答案2
先前提到的您没有在端口 25 上监听的服务是最有可能的。
另一个建议是验证规则和接口。例如,运行:
iptables -L -v
还会显示接口。因此,不同的接口可以有不同的规则(尤其是 lo 接口,它通常对所有流量都为 ACCEPT)。
答案3
它可能会响应为关闭,因为您没有监听该端口的服务。
答案4
仅提供一些有关 netstat 使用的更多信息。命令行选项 -p(如上所述)将导致 netstat 显示与套接字/端口关联的程序。在这种情况下,exim 应该出现在输出中,表明它负责端口 25 连接。但是,使用此选项有一个微妙的细节。出于安全考虑,netstat 将仅显示您拥有的应用程序的程序名称。因此,如果您尚未以 root 身份进行测试,netstat 将不会显示哪个应用程序拥有端口 25。一般来说,人们不应该养成以 root 身份跑来跑去的习惯,但在这种情况下,这是一个有用的步骤。
另一个与此相关的细节是 telnet 的使用。此应用程序是一种经常被忽略的网络分析工具。要查看端口 25 是否正在执行任何操作,一种非常快速的测试方法是直接 telnet 进入该端口(这对于任何其他服务端口都非常有用)。尝试 telnet 到本地主机 127.0.0.1、您的 IP 和您的主机名。我指出这一点的原因是 exim 可能正在运行,并且可能以某种方式打开了端口 25,但如果 exim 出现问题(比如有人以不雅的方式弄乱了配置文件),使用 netstat 不会告诉您端口 25 没有通信。而且,快速 telnet 进入会。
如果您想体验老式的 unix 风格,可以使用 nc 来实现相同的目的。或者,如果您更喜欢大锤式方法,请查看 nmap 的手册页(实际上,我不建议新用户查看此手册页,因为 nmap 非常复杂)。如果想获得更多乐趣,请尝试远程登录 ssh 端口,这很有启发性。