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와 잘 작동한다는 것입니다.