我在Oracle Cloud Infrastructure (OCI)上创建了一个 Ubuntu 实例。我可以使用 SSH (TCP 22) 连接到这个实例。我在这个实例上创建了一些服务,比如 daytime (TCP 13)、mail (TCP 25)、http (TCP 80)、dns (TCP/UDP 53)。我在此实例的 OCI 管理网页的默认安全列表中添加了类似的规则,类似于默认的 SSH 规则。但是,当我尝试从 Internet 连接到任何这些服务时,我会收到No route to host
错误消息。唯一的例外是可以正常工作的 SSH 服务。
一旦我安装ufw
到这个实例;但是,后来我禁用并删除了ufw
. 之后,我iptables
也删除了包。所以,现在根本没有 Linux 防火墙。但是,我仍然有这个问题。
这似乎是一个与 OCI 相关的问题。我在其他云平台(AWS、GCP等)做过类似的配置,没有问题。
我还能在哪里寻找隔离这个问题?
更新:删除 iptables并重新启动解决了这个问题。现在我将尝试重新安装 iptables。
该问题似乎与 OCI 不希望您
ufw
在 Ubuntu 中使用有关:https ://docs.cloud.oracle.com/iaas/Content/knownissues.htm#ufw我必须按照上面给出的链接中的说明禁用或删除
ufw
并编辑该文件。/etc/iptables/rules.v4
之后,要启用新规则,我需要运行:似乎
ufw
规则在这样的配置中没有任何作用,我必须使用iptables
. 然而,在 OCI 平台上的 Ubuntu 服务器上管理防火墙规则并不是一种非常用户友好的方式。我在 Oracle 云中发现了 Oracle Linux 的这个问题。它具有预定义的一组阻止规则。因此,我成功连接了 22 端口(ssh),但在尝试连接其他端口时却出现“无主机路由”。
您需要单独打开端口:
例如,对于 Docker:
此外,您需要为虚拟云网络设置安全列表。
添加以下行
这些是对我有用的确切步骤,基于 FedKad 对他原来帖子的回答......
在 Oracle 云上需要以下额外步骤,以在 Ubuntu 20 上打开端口:
sudo vim /etc/iptables/rules.v4
(或您使用的任何编辑器)在该行之后
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
,插入:-A INPUT -p tcp -m state --state NEW -m tcp --dport 1234 -j ACCEPT
(更改需要打开的端口号!)
sudo su -
iptables-restore < /etc/iptables/rules.v4
exit
nc -zvw100 THE_IP_ADDRESS_OF_MACHINE_WHOSE_PORT_WE_OPENED THE_PORT_NUMBER
它可以在网络中,也可以在 Linux 实例中。如果它在 Linux 中,它可以是 iptables 或服务。
从最后一个开始,并且因为您有邮件,请在 Linux 机器上尝试:
您是否看到 220、250 和 221 条消息?然后您的邮件服务就可以工作了。如果你得到
Connection refused
,那么你的服务没有启动和运行。接下来,
iptables -nvL
应该告诉您端口是否对外界开放。如果你不能做出正面或反面的输出,应该停止 iptables,这对于测试可能是可以接受的。你说你摆脱了
ufw
,所以我认为sudo ufw disable
不再需要了。如果使用 iptables 后仍然无法连接,那可能是亚马逊云中的设置,我对此没有经验。