iptables -I 앞으로 -i docker0 ! -d 8.8.8.8 -j 삭제

iptables -I 앞으로 -i docker0 ! -d 8.8.8.8 -j 삭제

도커 컨테이너가 호스트 외부의 단일 IP 주소에만 액세스할 수 있도록 제한하는 답변이 있습니다. 호스트에서 이 iptables 규칙을 사용합니다.

iptables -I 앞으로 -i docker0 ! -d 8.8.8.8 -j 삭제

이는 모든 도커 컨테이너 내부에서 IP 주소 8.8.8.8에만 액세스할 수 있음을 의미합니다.

이는 매우 극단적입니다. 기본적으로 대상이 8.8.8.8이 아닌 경우 패킷을 삭제합니다.

컨테이너를 특정 수의 IP 주소로 제한할 수 있는 규칙을 설정할 수 있는 가장 좋은 방법은 무엇입니까?

답변1

도커 컨테이너에 있는 웹사이트의 개발 사본이 페이팔, 다양한 API 등의 라이브 리소스에 액세스할 수 없도록 해야 했습니다. 웹사이트의 코드는 기존 코드였으며 많은 항목/URL이 하드 코딩되었습니다.

내가 이것을 달성한 방법은 빌드 스크립트에 다음과 같은 것을 포함하는 것이었습니다.

echo
echo "Setting up firewall rules for all docker containers..."
sudo ipset create dockerdests hash:ip -exist
sudo ipset add dockerdests x.x.x.x -exist
sudo ipset add dockerdests y.y.y.y -exist
sudo ipset add dockerdests 8.8.8.8 -exist
sudo ipset add dockerdests 8.8.4.4 -exist
sudo iptables -I FORWARD 1 -i docker0 -m set --match-set dockerdests dst -j ACCEPT
sudo iptables -I FORWARD 2 -i docker0 -j DROP

여기서 xxxx 및 yyyy는 개발자 리소스입니다.

관련 정보