Oracle Cloudインスタンス上のTCPサービスに接続しようとすると「ホストへのルートがありません」

Oracle Cloudインスタンス上のTCPサービスに接続しようとすると「ホストへのルートがありません」

Ubuntuインスタンスを作成しましたオラクルクラウドインフラストラクチャ(OCI)このインスタンスにSSH(TCP 22)で接続できます。このインスタンスにdaytime(TCP 13)、mail(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 を再インストールしてみます。

答え1

ufwこの問題は、OCI がUbuntu での使用を望まないことに関係しているようです。https://docs.cloud.oracle.com/iaas/Content/knownissues.htm#ufw

ufw上記のリンクで説明されているように、ファイルを無効にするか削除して編集する必要があります/etc/iptables/rules.v4。その後、新しいルールを有効にするには、以下を実行する必要があります。

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

ufwこのような構成ではルールは効果がないようです。持っているを使用しますiptables。ただし、これは OCI プラットフォーム上の Ubuntu サーバーでファイアウォール ルールを管理する方法としてはあまりユーザーフレンドリーではありません。

答え2

Oracle クラウドの Oracle Linux でこの問題を発見しました。定義済みのブロッキング ルール セットがあります。そのため、22 ポート (ssh) への接続は成功しましたが、他のポートに接続しようとすると「ホストへのルートがありません」というメッセージが表示されました。
ポートを個別に開く必要があります。

たとえば、Docker の場合:

firewall-cmd  --permanent --zone=public --add-port=2377/tcp
firewall-cmd  --reload

また、仮想クラウド ネットワークのセキュリティ リストを設定する必要があります。

答え3

これらは、FedKad の元の投稿に対する回答に基づいて、私にとって実際に効果があった手順です...

Ubuntu 20のポートを開くには、Oracleクラウドで次の追加手順が必要でした。:

  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. シェルプロンプトで:

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

答え4

ネットワーク内または Linux インスタンス内にある可能性があります。Linux 内にある場合は、iptables またはサービス内にある可能性があります。

最後のものから始め、メールがあるので、Linux ボックスで試してください。

telnet 127.0.0.1 smtp
helo there
quit

220、250、221 のメッセージが表示されましたか? その場合、メール サービスは動作しています。 が表示された場合Connection refused、サービスは稼働していません。

次に、iptables -nvLポートが外部に開いているかどうかを確認します。出力がわからない場合は、

service iptables stop

iptables を停止する必要がありますが、テストでは許容範囲かもしれません。 を削除したとおっしゃっているので、もう必要ないとufw思います。sudo ufw disable

iptables を削除してもまだ接続できない場合は、おそらく Amazon クラウドの設定に問題があると思われますが、私はその設定について経験がありません。

関連情報