![OPNSense KVM で veth インターフェースを使用すると、外部マシンから Docker ポートが表示されない](https://rvso.com/image/762136/OPNSense%20KVM%20%E3%81%A7%20veth%20%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E5%A4%96%E9%83%A8%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%8B%E3%82%89%20Docker%20%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84.png)
セットアップの簡単な概要:
- 4 つのネットワーク ポートを備えた Ubuntu Server 20.04
- libvirt KVM で動作する OPNsense ルーター
- 1 つのポートは WAN、3 つのポートは LAN (ブリッジ)
- ルーターはうまく機能する
- サーバー(OPNsenseを実行しているものと同じ)は、LANブリッジを介してVETHによってLANとインターネットにアクセスします。
- サービスはサーバー上のさまざまなポートで実行され、外部のマシンからアクセスできます。
- 問題: Docker でサービスを実行している場合、サービス ポートはサーバーからは見えますが、LAN 上の他のマシンからは見えません (nmap では「フィルター済み」として表示されます)
- これは、dockerコンテナを「ホスト」モードで実行するように設定することで解決されますが、ポートマッピングができなくなるため、明らかに最適ではありません。
この設定では、なぜ外部マシンは docker によって公開されたポートを見ることができないのでしょうか? 複雑なネットワーク設定であることは理解しており、docker VLAN と VETH ブリッジ間のルートがいくつか欠落している可能性がありますが、私が確認した限りでは問題はありません。Docker デーモンは、すべてのインターフェースでリッスンするように設定されているようです。困惑しています。