尝试连接到 Oracle 云实例上的 TCP 服务时出现“没有到主机的路由”

Fed*_*Kad 15 cloud ubuntu-18.04

我在Oracle Cloud Infrastructure (OCI)上创建了一个 Ubuntu 实例。我能够使用 SSH (TCP 22) 连接到此实例。我在此实例上创建了一些服务,例如白天(TCP 13)、邮件(TCP 25)、http(TCP 80)、dns(TCP/UDP 53)。我在该实例的OCI管理网页的默认安全列表中添加了类似的规则,类似于默认的SSH规则。但是,当我尝试从互联网连接到任何No route to host这些服务时,我收到错误。唯一的例外是 SSH 服务,它运行没有问题。

一旦我安装ufw到这个实例;但是,后来我禁用并删除了ufw. 之后,我iptables也删除了包裹。所以,现在Linux根本就没有防火墙了。但是,我仍然有这个问题。

这似乎是一个与 OCI 相关的问题。我在其他云平台(AWS、GCP等)上做过类似的配置,没有任何问题。

我还可以在哪里寻找来隔离这个问题?


更新:删除 iptables并重新启动解决了问题。现在我将尝试重新安装 iptables。

Fed*_*Kad 11

该问题似乎与 OCI 不希望您ufw在 Ubuntu 中使用有关: https: //docs.cloud.oracle.com/iaas/Content/knownissues.htm#ufw

我必须按照上面给出的链接中的说明禁用或删除ufw并编辑该文件。/etc/iptables/rules.v4之后,要启用新规则,我需要运行:

# iptables-restore </etc/iptables/rules.v4
Run Code Online (Sandbox Code Playgroud)

看来ufw规则在这样的配置中没有任何效果,我必须使用iptables. 然而,这并不是一种非常用户友好的 OCI 平台 Ubuntu 服务器上的防火墙规则管理方式。


Ale*_*kov 8

我在 Oracle 云中发现了 Oracle Linux 的这个问题。它具有预定义的阻止规则集。因此,我成功连接了 22 端口 (ssh),但在尝试连接其他端口时收到“没有到主机的路由”。
您需要单独打开端口:

例如,对于 Docker:

firewall-cmd  --permanent --zone=public --add-port=2377/tcp
firewall-cmd  --reload
Run Code Online (Sandbox Code Playgroud)

此外,您还需要为虚拟云网络设置安全列表。


小智 7

这些是对我有用的确切步骤,基于 FedKad 对他原始帖子的回答......

在 Oracle 云上需要执行以下额外步骤,才能在 Ubuntu 20 上打开端口

  1. sudo vim /etc/iptables/rules.v4 (或您使用的任何编辑器)

  2. 在该行之后 -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

(更改需要开放的端口号!)

  1. 在 shell 提示符处:

sudo su -

iptables-restore < /etc/iptables/rules.v4

exit

  1. 新打开的端口可以通过在另一台Linux 机器上运行并发出命令来测试:

nc -zvw100 THE_IP_ADDRESS_OF_MACHINE_WHOSE_PORT_WE_OPENED THE_PORT_NUMBER