2つのLinuxコンテナ間の接続が拒否されました。

2つのLinuxコンテナ間の接続が拒否されました。

私のホストUbuntu 18.04では、デフォルト設定で2つのlxcコンテナを実行しています。コンテナはUbuntu 18.04も使用します。 https://localhost:3000/ 経由で https を提供するコンテナ 1 で実行されるアプリケーションがあります。 Container2 は Container1 との接続さえ設定できません。

Container2はコンテナ1に対してpingを実行し、localhost(container1の場合)で実行されているプラ​​イマリApache2サーバーのhtmlを読み取ることができます。 netcatを使用してテストすると、複数の主要ポートに接続できますが、ポート3000への接続は拒否されます。

root@c2:~# nc -zv c1 22
Connection to c1 22 port [tcp/ssh] succeeded!
root@c2:~# nc -zv c1 80
Connection to c1 80 port [tcp/http] succeeded!
root@c2:~# nc -zv c1 443
nc: connect to c1 port 443 (tcp) failed: Connection refused
nc: connect to c1 port 443 (tcp) failed: Connection refused
root@c2:~# nc -zv c1 3000
nc: connect to c1 port 3000 (tcp) failed: Connection refused
nc: connect to c1 port 3000 (tcp) failed: Connection refused

私のホストとすべてのコンテナ間で同じ状況が適用されます。デフォルトでは、ポート22と80のみがアクセスできるように見えます。すべてのコンテナでufwを有効にしようとしましたが、それでも解決できません。

root@c1:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
22                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
873                        ALLOW       Anywhere                  
3000                       ALLOW       Anywhere                  
Anywhere on eth0@if16      ALLOW       Anywhere                  
Apache                     ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
20                         ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)             
22 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             
873 (v6)                   ALLOW       Anywhere (v6)             
3000 (v6)                  ALLOW       Anywhere (v6)             
Anywhere (v6) on eth0@if16 ALLOW       Anywhere (v6)             
Apache (v6)                ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
20 (v6)                    ALLOW       Anywhere (v6)             

Anywhere                   ALLOW OUT   Anywhere on eth0@if16     
Anywhere (v6)              ALLOW OUT   Anywhere (v6) on eth0@if16

カールによるテストでもポート接続が閉じていることが明確に表示されますが、これが問題です。

root@c2:~# curl https://10.155.120.175:3000/
curl: (7) Failed to connect to 10.155.120.175 port 3000: Connection refused

私はこの問題で一週間閉じ込められていました。誰でもこの問題を解決するのに役立ちますか?

編集(追加データ):

コンテナ1のnetstat結果:

root@c1:~# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      289/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1385/sshd           
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      293/MyApp           
tcp6       0      0 :::80                   :::*                    LISTEN      310/apache2         
tcp6       0      0 :::22                   :::*                    LISTEN      1385/sshd  

ベストアンサー1

ポート3000は受信のみですlocalhost。ポートを開くようにアプリケーションを正しく設定する必要があります0.0.0.0(他のポートに示すように)。

おすすめ記事