尽管在EC2的安全组中打开了端口,仍无法连接的问题

在选择这篇文章的标题时我曾犹豫,但最终发现问题的根本原因是在EC2中的端口设置问题,因此我选择了这个标题。
我们找到这个问题是从以下问题开始的。

在EC2的Ubuntu服务器上配置了MongoDB,但无法从Lambda连接。
尝试从本地连接到Ubuntu上的MongoDB,但无法连接。
即使正确地设置了安全组等所有内容,Telnet IP port也无法连接(端口80可以连接)。
尝试在EC2的Ubuntu服务器上配置了MongoDB,但是无法从Lambda函数连接。
我已经尝试从本地连接到Ubuntu上的MongoDB,但是无法连接。
尽管我准确地设置了安全组和其他所有设置,但是Telnet IP port时仍然无法连接(端口80可以连接)。

根据这篇文章的参考,尝试从本地连接MongoDB到MongoDB但是失败了。 https://ianlondon.github.io/blog/mongodb-auth/ 对于从本地连接到EC2上的MongoDB的指南,我认为几乎完整。但是,即使多次确认配置内容,仍然无法连接。

エラーメッセージは
Error: couldn’t connect to server (IP):27017, connection attempt failed: SocketException: Error connecting to (IP):27017 :: caused by :: Operation timed out :
タイムアウトですね。Firewall関連だとは分かったが、Security Groupもちゃんと設定しているし、ネットワークACLも全てAllowしているし、何が悪いの?で何時間もイライラしていました。

# telnet IP 80
Connected to ec2-IP.ap-northeast-1.compute.amazonaws.com.
Escape character is '^]'.

# telnet IP 27017
Trying IP...

根据以上确认,似乎从本地进行端口检查后,并没有发现27017端口是开放的呢。
平时并不是每天都搞服务器相关的事情,所以说实话,网络方面不太擅长。虽然在EC2的安全组中正确地进行了设置,80端口是可以使用的,但不明白其他端口为什么不行的原因。
进一步调查后发现,在服务器上需要对iptables进行一些调整,参考了下面的文章。

https://qiita.com/hana_shin/items/a630871dce209cff04f3
Ubuntuでのiptableの設定方法、utwのコマンドを分かりやすく説明しているのです。

首先,通过ufw确认现有的规则,发现27017端口确实是关闭的状态。

# sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere                  
80,443/tcp (Nginx Full)    ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)             
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6)

それで、27017を設定すると正確にルールが追加されていることが分かる。

# sudo ufw allow 27017
Rule added
Rule added (v6)

# sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere                  
[ 2] Nginx Full                 ALLOW IN    Anywhere                  
[ 3] 27017                      ALLOW IN    Anywhere                  
[ 4] OpenSSH (v6)               ALLOW IN    Anywhere (v6)             
[ 5] Nginx Full (v6)            ALLOW IN    Anywhere (v6)             
[ 6] 27017 (v6)                 ALLOW IN    Anywhere (v6)      

通过这样,Telnet IP 27017现在已经可以连接,并且可以访问MongoDB!这真是一段漫长的旅程!我真希望有一个懂网络的朋友。

bannerAds