私のホスト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
(他のポートに示すように)。