ICMP pingパケット(データペイロードを含む)を受信するスクリプトがあり、コマンドラインで実行している間、ICMP pingパケットはサーバーインスタンスからコンテナにルーティングされないため、Dockerコンテナ内で機能しません。 。
AWS Container Service で実行されるため、状況は少し複雑になります。
私はこれがすべてのパケットを転送すると思います
sudo iptables -t nat -A POSTROUTING --out-interface veth* -j MASQUERADE
sudo iptables -A FORWARD --in-interface eth1 -j ACCEPT
インスタンスの "eth0"インターフェイスに到着するICMP ping("echo")パケットをdockerコンテナのローカルIPまたは仮想インターフェイス(172.0.0.1またはveth *など)にのみ転送するにはどうすればよいですか。
答え1
いいえ
ホストがすべてのICMPパケットを処理しないようにしたくありません。
望むより:すべてのICMPをフィルタリングし、世界が燃えるように見える
(コンテナに実際のIPアドレスを割り当てたいと思います。
おそらく最も簡単な方法はmacvlanを使用することです。まだeth0でブリッジを使用していないことを考慮してください。 eth0に関連付けられたmacvlanを作成し、それをコンテナに割り当てます。 Dockerがネイティブネットワークサポートの問題を解決するまで、誰もが使用していたパイプラインワークというスクリプトがあります。ネットワークが追加のMACアドレス割り当てを許可しない場合に備えて、ipvlan(最新)もあります。 macvlanの良い点は、DHCP4とうまく機能することです。