8

3 つのサービス アーキテクチャと、3 つのサービスが接続された仮想ブリッジ ネットワークを構成します。コンテナーの 1 つが仮想ネットワーク内のすべてのトラフィックをリッスンできるようにしたい (プロミスキャス モード)。出来ますか?私はほとんどすべてを試しましたが、何も機能していないようです。

私が試したこと:

  • コンテナに完全な権限を与える
  • コンテナー eth0 インターフェイスを無差別に設定する (ifconfig eth0 promisc)
  • コンテナー内のネットワーク マネージャーを再起動します。
  • ホストマシンから無差別モードでコンテナーに相対的な veth を設定する
  • パイプワーク スクリプトの macvlan 構成で、モードを「ブリッジ」から「パススルー」に変更します。
  • docker-compose ファイルのネットワーク プロパティでコンテナーをゲートウェイとして設定する

上記の試みの多くは、コンテナーの eth0 インターフェイスが無差別モードであると「考える」結果になります。実際、(ホストからの) ifconfig と syslog の両方がそうであると言っていますが、コンテナーはまだ独自のトラフィックしか認識していません。

Docker 1.11 を使用しており、コンテナー内のベース イメージは Ubuntu 14.04:latest です。

以下は私のdocker-composeファイルのリストです よろしくお願いします

docker-compose.yml

version: '2'

networks:

  snort_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.19.0.0/24
          gateway: 172.19.0.3

services:

   mysql:
     build:
       context: .
       dockerfile: MySql/MySqlFile
     environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
     networks:
       snort_net:
         ipv4_address: 172.19.0.2

   snort:
     build:
       context: .
       dockerfile: Snort/SnortFile
     depends_on:
       - snorby
     env_file:
       - Snort/snort_variables.env
     networks:
       snort_net:
         ipv4_address: 172.19.0.3
     expose:
       - "80"
       - "21"
     ports:
       - "10100:80"
       - "10101:80/udp"
       - "21:21"
     cap_add:
       - NET_ADMIN
     privileged: true


   snorby:
     build:
       context: .
       dockerfile: Snorby/SnorbyFile
     depends_on:
       - mysql
     env_file:
       - Snorby/snorby_variables.env
     networks:
       snort_net:
         ipv4_address: 172.19.0.4
     ports:
       - "3000:3000"
4

2 に答える 2

0

コンテナは事実上仮想スイッチに接続されます。(a) コンテナーへのユニキャスト トラフィック、または (b) docker ネットワーク上のブロードキャスト/マルチキャスト トラフィック以外のものは見られません。ネットワークゲートウェイとして設定した場合、他のコンテナからネットワーク外の宛先に送信されるトラフィックも認識されます (ただし、同じネットワーク上の他のコンテナ間の通信は認識されません)。

macvlan ではなく Linux ブリッジを使用している場合は、docker ブリッジにアタッチして、必要なものを取得できるはずtcpdumpです (ホスト上で実行するか、.xml を使用してコンテナー内で実行することにより--net=host)。

于 2016-10-19T14:04:27.373 に答える