전공영역 공부 기록

컨테이너 안에서 host iptables조회가 안된다면?

악분 2023. 5. 31. 17:20
반응형

불가피하게 컨테이너에서 host의 iptables를 사용할 때가 있습니다. 일반 설정으로 컨테이너를 실행하면 host iptable을 조회하지 못합니다.

 

network namespce를 host로 설정

host의 iptables을 접근해야 하므로 host network namespace를 설정해야 합니다.

docker run --net host ...

 

privileged와 capability 설정

host 네트워크인터페이스에 접근해야되므로 privileged와 capablity가 필요합니다.

docker run --net host --privileged --cap-add=NET_ADMIN ...

 

privileged와 capability가 궁금하신 분은 이전 글을 참고해주세요!.

 

iptables 타입 설정

iptables는 iptables-nft와 iptables-legacy타입이 있습니다. 컨테이너 iptables타입과 host iptables타입이 맞지 않으면, iptables조회가 안됩니다. 대부분 컨테이너 iptables에서 host iptables조회가 안되는 이유가 타입이 안맞아서입니다.

 

아래 예제는 python3.9컨테이너에서 iptables을 설치 했을 때, 설치되는 iptables 타입입니다. 

 

legacy타입으로 변경해야 한다면 아래 명령어로 iptables 타입을 변경할 수 있습니다

update-alternatives --set iptables /usr/sbin/iptables-legacy

 

참고자료

반응형