ICMP Ping パケットをインターフェイスに転送

ICMP Ping パケットをインターフェイスに転送

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とうまく機能することです。

関連情報