Networking
如何讓 CentOS 正確列出打開的埠?
我正在使用託管一組 docker 容器的 CentOS 7 作業系統。
通過使用網路瀏覽器,我可以訪問埠 80 上的服務並得到響應。一些本地知識幫助我了解響應來自一個 docker 容器。
但是,我有一個大問題:我似乎無法找到讓作業系統指示埠 80 已打開的方法。這是我嘗試過的(全部與
root
使用者一起):
netstat -tulnp | grep 80
列出任何監聽埠 80 的內容ss -nutlp | grep 80
列出任何監聽埠 80 的內容lsof -i -P | grep 80
還列出了沒有監聽埠 80wget 127.0.0.1
成功獲取 index.html直接通過詢問Docker
docker ps
並不是我正在尋找的答案,因為我們必須能夠詢問作業系統並查看負責處理對埠 80 的請求的程序。這也沒有幫助,因為docker ps
返回具有以下條目的幾個容器在埠列中:PORTS 80/tcp 8080/tcp 80/tcp
同樣,我不想去docker尋求答案,因為必須有一種方法來詢問作業系統並確定負責處理埠 80 的程序。
我唯一的猜測是docker安裝了某種低級驅動程序來攔截此類網路請求。
任何有關如何讓 CentOS 分發此資訊以及命令行命令的建議,將不勝感激!
您確定 docker 主機正在偵聽埠 80 嗎?它可能會使用內置防火牆從埠 80 重定向到它正在偵聽的任何埠。
如果您正在執行 IPTABLES,您可以使用以下命令進行檢查:
iptables -L -t nat
然後你會看到一個名為 DOCKER 的鏈,它會告訴你有哪些重定向,類似於:
Chain DOCKER (2 references) target prot opt source destination RETURN all -- anywhere anywhere RETURN all -- anywhere anywhere DNAT tcp -- anywhere anywhere tcp dpt:http-alt to:172.17.0.3:80 DNAT tcp -- anywhere anywhere tcp dpt:4433 to:172.17.0.3:443 DNAT tcp -- anywhere anywhere tcp dpt:1688 to:172.17.0.4:1688