ポート6969でマルチキャストパケットをリッスンすることにより、ネットワーク上の物理アプライアンスの自動検出を実行するドッキングサーバーアプリケーションがあります。したがって、ホストを介してホストの外部のデバイスからこれらのパケットを受信できるようにするために、ドッキングコンテナーが必要です。コンテナに入れます。私は somesimilarissues を見てきました alotofreading しかし、これらのマルチキャストパケットにサーバーを応答させることができません。
Wiresharkに座ってネットワークトラフィックを監視していますが、専門家ではありません。 DockerがMASQUERADE
アドレスを作成して、トラフィックがすべてDockerゲートウェイからのトラフィックのように見えることを知っているので、veth
を見ると、172.17.0.1
と172.17.0.2
私のサーバーはネットワーク上のデバイスに関する情報を取得できません。 (ドッカーの外で実行する場合、もちろん問題はありません。)
他と同様に、--net=Host
機能を利用しているため、--link
は使用できません。私は次のバリエーションを試しました...
docker run --name app -p 6969:6969 -d me/app:latest
docker run --name app -p 0.0.0.0:6969:6969 -d me/app:latest
(これは私が一度誓ったことができたかもしれませんが、今は機能しませんか?)docker run --name app -p 0.0.0.0:6969:6969/udp -d me/app:latest
docker run --name app -p 255.255.255.255:6969:6969 -d me/app:latest
あなたが提供できるどんな助けや洞察も大いに高く評価されるでしょう。
NICでmulticatを有効にしてみてください:
ip link set eth0 multicast on
echo 1 >/proc/sys/net/ipv4/ip_forwarding
IP転送をオンにする
明示的に設定するか、少なくとも関連するインターフェイスで有効になっていることを確認する必要があります。
net.ipv4.conf.all.mc_forwarding = 1
net.ipv4.conf.eth0.rp_filter=0
マルチキャストトラフィックを許可します。
iptables -I INPUT -d 224.0.0.0/4 -j ACCEPT
iptables -I FORWARD -d 224.0.0.0/4 -j ACCEPT
また、マルチキャストトラフィックのルートを追加する必要がある場合もあります。
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
マルチキャスト送信側のTTL:
iptables -t mangle -A OUTPUT -d <group> -j TTL --ttl-set 128
Where group is the multicast group address of the stream you want to change the TTL of.
また、開始することができます マルチキャストプロキシ
PS:
(上記の方法が役に立たない場合)Dockerコンテナーを--net = noneオプションで起動し、followコマンドでpipeworkを使用してみてください:
pipework docker0 -i eth0 CONTAINER_ID IP_ADDRESS/IP_MASK@DEFAULT_ROUTE_IP
これは、IFF_MULTICASTフラグと定義済みのIPアドレスを使用して、コンテナー内にeth0インターフェイスを作成します。