Skip to content

juneyr.dev

nginx에서 IP 내 입맛대로 필터링하기

1 min read

CIDR

IP 사용법이자 표기법. IPv4 와 자릿수를 고정해서 쓴다. 예를 들어 10.0.0.0/8 이라면 10은 고정이고 이후의 0.0.0 을 변동해서 쓸 수 있는 범위라는 뜻이다. 어 뭐야 두자리수인데 왜 8이라고해요? 라고 하면 IPv4는 32bit (32칸이라고 생각하면 편하려나) 이고 이를 . 단위로 8bit 씩 나누고 있다. 즉 10은 십진법으로 나타낸 10이지만, 8bit 자리에 맞게 하면 00001010 이고, /8은 8bit만큼은 고정이라는 이야기니까. 그래서 많은 경우 /8, /16, /24, /32 해주면 정말정말 편하지만 아닌 경우도 왕왕 있다. IPv6로 교체될거라고 생각했는데 이 CIDR 때문에 현재는 다들 IP를 꼼꼼하게 나눠서 잘들 쓰고 있다. 이 부분은 복기하고 다시 검색해봐야함.

nginx 에서 IP 필터링하기

nginx 의 deny-all; 을 한번쯤은 봤을 런지! 들어오는 IP(정확히는, nginx 의 remote address 인듯) 를 모두 거부하는 명령어. 이런 경우 proxy 혹은 원하는 동작대로 떨어지지 않고, error 케이스로 들어간다.

그런데 모든 IP 를 막는게 아니고 일부 IP를 허용하고 싶을때가 있다. 대표적인 예가... 이번에 경험한, 점검 상태에서 사내망만 허용하는 경우. 이럴때는 allow 10.0.0.0/8 과 같은 형식으로 일부만 허용해준다.

위와 같은 경우 10.0.0.0/8 범위에 해당하는 IP는 들어오고, 나머지는 들어오지 않게 된다.