Linux Dhcp MAC Address 필터링

이 글을 읽는 분은 기본적으로 리눅스와 DHCP 관련된 지식을 어느정도 아신는 분이라고 생각하고 글을 작성합니다.
잘 모르시면 구글과… 가상 머신에서 테스트 해보시기 바랍니다.

윈도우에서 맥주소 필터링이 없느냐??? 있긴 합니다만 잘 안되더군요. ㅎㅎ

리눅스의 DHCP 기능을 활용하여 각 기기의 Mac Address 를 필터링 하는 방법을 안내하여 드립니다.

네트워크 구성이 아래와 같다고 한다면, 인가된 기기의 그룹은 사내 네트워크에 접속해야 하고, 인가되지 않은 기기는 인터넷은 사용이 가능하도록 구성해야 하는 조건이라고 가정하겠습니다.

DHCP 서버에서 사내 네트워크가 10.10.10.0 네트워크 존이고 인터넷 네트워크가 172.16.0.0 이라고 가정하겠습니다.

인가되지 않은 기기와 인가되지 않은 기기에 DHCP 에서 IP를 전달시에 방법으로서는

첫번째로 DHCP를 두개를 두어 각 DHCP 서버의 방화벽등을 이용하여 접근 허용과 금지 정책을 적용하는 방법 -> 두개의 DHCP서버를 관리하고, 각 DHCP서버의 모두 방화벽 규칙을 손봐야 하므로 복잡하더군요.

두번째로 DHCP 서버에서 기기의 MAC Address를 기준으로 하여 사내 네트워크의 IP주소를 고정형식으로 전달하는 방법이 일반적입니다.

이 방법의 DHCP Conf 파일의 구성은
host AAA { hardware ethernet 00:00:00:00:00:01 ; fixed-address 10.10.10.5 ; }
이렇게 됩니다.

문제는 사내 네트워크가 한개의 네트워크 존을 받고, 인가된 기기의 수가 점점 많아지게 되면 등록된 IP주소도 곧 바닥을 보이지요. ㅎㅎ

그래서 다른 방법이 없을까 하다가… 고민한게 네트워크의 존, Pool을 Dhcp에서 2개를 선언하고,

인가된 호스트와 인가되지 않은 호스트에 대해서 IP를 보내주면 되겠다고 생각이 들더군요.

중요한 부분으로서는 호스트 AAA로서 맥주소를 선언하고, 아이피 주소(10.10.10.5)를 할당하였습니다.

이렇게 할당 하니, 문제점으로서 해당 아이피 하나에 하나의 클라이언트가 매칭이 이뤄집니다.

즉, 한개의 네트워크 존(10.10.10.x)에서는 최대 약 250개의 기기만이 할당을 할 수 있습니다.(1~254 까지 이므로)

중복하여 선언하면 안될까요??? (테스트 안해봤어요. 테스트 해보고 말씀해주세요. ^^)

하지만, Conf 파일에서는 이상이 없다 치더라도, 두 호스트가 동시에 접속시에는 아이피 충돌로 인한 장애가 발생되겠지요.

한개의 호스트에 한개의 아이피를 할당하였는데, 그 기기가 얼마나 사용될지도 모르는 상황에서 하나의 자원을 물고 있어서 심각한 자원 낭비가 들어 간다고 생각되어 여러가지 방법을 고민하다가 아래의 구성으로서 완성? 하였습니다.

# DHCP Server IP 172.16.1.10
ddns-update-style interim;
shared-network FKL {
default-lease-time 600;
max-lease-time 86400;
subnet 10.10.10.0 netmask 255.255.255.0 { #사내 네트워크
pool {
option routers 10.10.10.1;
option domain-name "DHCP서버 이름";
option domain-name-servers "DNS 주소";
range 10.10.10.1 10.10.20.254; # 범위
deny unknown-clients; # 알지 못하는 호스트는 허용 금지!
}
}
 
subnet 172.16.0.0 netmask 255.255.0.0 { # 인터넷 네트워크
pool {
option routers 172.16.1.1;
option domain-name "DHCP서버 이름";
option domain-name-servers "DNS 주소";
range dynamic-bootp 172.16.1.21 172.16.255.254; # 범위
allow unknown-clients; #알지 못하는 호스트는 허용
}
}
}
 
host AAA { hardware ethernet 00:00:00:00:00:01 ;}

이렇게 Conf 파일을 구성하게 되면, AAA라는 호스트는 10.10.10.0 네트워크 중에서 사용하지 않는 IP 를 할당 받아 사용이 가능하게 됩니다.

선언되지 않은 호스트라면, 당근… 172.16.1.0 네트워크의 IP 주소를 할당 받습니다.

호스트를 추가 하고 싶다면…

host AAA { hardware ethernet 00:00:00:00:00:01 ;} # 주석 어쩌구
host AAB { hardware ethernet 00:00:00:00:00:02 ;} # 주석 저쩌구

하면 됩니다.

이 구성을 이용하여, 네트워크를 이용시에 인가된 기기만이 사내 네트워크가 가능한 IP를 주고, 그렇지 않으면 인터넷이 사용가능한 IP주소를 주어 네트워크가 되지 않게 하는 것으로 사용하였습니다.

단점으로서는 DHCP Conf 파일을 수정시에 서비스를 재시작해야 합니다.

구성 환경 : CentOS 7.x

일부 공유기에서 맥주소 필터링과 같다고 생각하시면 되요. 하지만 IPTime, DLink등의 공유기는 50여개의 기기만 허용이 되는데요.

저같은 경우는 50개도 간당간당하더군요… ㅎㅎ

조끔 더 보충 설명을 드렸습니다. 이해 되신가요???

 

    About 가경승민아빠

    가경승민아빠

    Leave a Reply

    10 개의 댓글이 있습니다 - "Linux Dhcp MAC Address 필터링"

    메일 알림 설정
    정렬:   최신 | 오래된 | 추천
    존박

    회사 내부 사용자가 IP주소를 DHCP 서버 자동 할당으로 하지 않고, 고정 IP로 임의 설정 해버리는 경우에 대한 대책은 어떻게 하고 계십니까?

    wansoo

    ip 임의 설정할 경우에는 ip 충돌이 발생할 경우가 자주 발생하기 때문에 해당 담당자로 부터 연락이 오지 않을까요..? 연락 받고 가서 고정 ip를 임의 사용하고 있다면 족쳐야죠~ㅎㅎㅎ

    공중날개

    다들 수준이 높으신듯,,,,대단하심

    wansoo
    리눅스 서버로 DHCP 서버 구성하는 방법을 설명해 두신거 같은데… 내용이 어려워 보이네요~ ㅠㅠ 여러번 반복해서 읽어 봤는데, 이해가 어려운 부분들이 많네요. 먼저, shared-network FKL { default-lease-time 600; max-lease-time 86400; subnet 172.16.0.0 netmask 255.255.0.0 { pool { option routers 10.10.10.1; option domain-name “DHCP서버 이름”; option domain-name-servers “DNS 주소”; range 10.10.10.1 10.10.20.254; # 범위 deny unknown-clients; # 알지 못하는 호스트는 허용 금지! } } 에서 subnet 172.16.0.0 netmask 255.255.0.0 의 B Class subnetwork 설정으로 시작되었는데, 안쪽에 range를 10.10.10.1 ~ 10.10.20.254로 전혀 다른 서버 네트워크에 있는 IP를 할당하고 있는데… 물론, DHCP 서버가 라우터를 거쳐서 할당받을 수도 있다고 하긴하지만… 잘못된 설정이 아닐까 하는 느낌이… Read more »
    werther20

    감사합니다. 회사에 노는 리눅스 서버를 가지고… 잠시 테스트 해봐야겠습니다~^^*

    wpDiscuz