![將 veth 介面與 OPNSense KVM 結合使用時,無法從外部電腦看到 docker 端口](https://rvso.com/image/762136/%E5%B0%87%20veth%20%E4%BB%8B%E9%9D%A2%E8%88%87%20OPNSense%20KVM%20%E7%B5%90%E5%90%88%E4%BD%BF%E7%94%A8%E6%99%82%EF%BC%8C%E7%84%A1%E6%B3%95%E5%BE%9E%E5%A4%96%E9%83%A8%E9%9B%BB%E8%85%A6%E7%9C%8B%E5%88%B0%20docker%20%E7%AB%AF%E5%8F%A3.png)
設定的快速摘要:
- Ubuntu Server 20.04,附 4 個網路連接埠
- 在 libvirt KVM 中執行的 OPNsense 路由器
- 1 個連接埠為 WAN,3 個連接埠為 LAN(橋接)
- 路由器效果很好
- 伺服器(同一台運行 OPNsense 的伺服器)透過 LAN 橋接器透過 VETH 存取 LAN 和互聯網
- 服務運行在伺服器的各個連接埠上,外部機器可以存取它們
- 問題:如果在 Docker 中執行服務,服務連接埠可以被伺服器看到,但不能從 LAN 上的其他機器看到(nmap 將它們顯示為「已過濾」)
- 這是透過將 docker 容器設定為在「主機」模式下運行來解決的,這顯然是次優的,因為連接埠映射不再可能
為什麼在此設定中外部機器看不到 docker 公開的連接埠?我知道這是一個複雜的網路設置,而且 docker VLAN 和 VETH 橋之間可能缺少一些路由,但我檢查過的所有內容看起來都很好。 Docker 守護程式似乎配置為偵聽所有介面。我不知所措。