Virtual-Machine
2個linux容器之間的連接被拒絕
在我的主機 Ubuntu 18.04 上,我正在使用預設設置執行兩個 lxc 容器。容器也使用 Ubuntu 18.04。我有一個在 container1 上執行的應用程序,它在 https://localhost:3000/ 上提供基於 https 的服務。Container2 甚至無法與 container1 建立連接。
Container2 可以 ping container1 並讀取在 localhost 上執行的預設 Apache2 伺服器的 html(對於 container1)。使用 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
即使通過 curl 進行測試也清楚地向我顯示埠連接已關閉,這就是問題所在:
root@c2:~# curl https://10.155.120.175:3000/ curl: (7) Failed to connect to 10.155.120.175 port 3000: Connection refused
我在這個問題上卡了一個星期,有人可以幫我解決這個問題嗎?
編輯(附加數據):
container1 上 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
埠 3000 僅偵聽
localhost
. 您需要正確配置您的應用程序,以便埠開放0.0.0.0
(正如您在其他埠中看到的那樣)。