VLAN Access-List (VACL)
ACL 여정 3/5 — L3 경계(라우터) 필터링은 앞 두 편에서 완료. 이제 스위치 L2 레벨, 같은 VLAN 내부 트래픽까지 범위를 확장합니다.
VLAN access list(VACL) 는 VLAN 내의 트래픽을 필터링하는 데 매우 유용합니다. 예를 들어 보겠습니다.
두 컴퓨터가 서버와 통신할 수 없도록 하고 싶다고 가정해 봅시다. port-security를 사용해 MAC 주소를 필터링할 수도 있지만, 그다지 안전한 방법은 아닙니다.
두 컴퓨터가 서버에 도달할 수 없도록 VACL을 구성하는 방법을 보여드리겠습니다. 먼저 access-list를 만들어야 합니다.
구성
SW1(config)# access-list 100 permit ip any host 192.168.1.100첫 번째 단계는 확장 access-list를 만드는 것입니다. 어떤 소스에서든 목적지 IP 주소 192.168.1.100으로 가는 트래픽이 access-list와 일치해야 합니다. 본능적으로 이 문장에 “deny”를 사용하라고 말할 것 같아 혼란스러울 수 있습니다… 그러나 그렇게 하지 마세요. permit 문장을 사용하세요!
이제 VLAN access map을 만들 수 있습니다.
SW1(config)# vlan access-map NOT-TO-SERVER 10
SW1(config-access-map)# match ip address 100
SW1(config-access-map)# action drop
SW1(config-access-map)# vlan access-map NOT-TO-SERVER 20
SW1(config-access-map)# action forward제 VLAN access map은 “NOT-TO-SERVER”라고 부릅니다. 이것이 하는 일은:
- 시퀀스 번호 10: access-list 100과 일치하는 트래픽을 찾습니다. access-list 100에서 허용되는 모든 트래픽은 여기서 매치됩니다. 액션은 이 트래픽을 드롭하는 것입니다.
- 시퀀스 번호 20: match 문장이 없으므로 모든 것이 매치됩니다. 액션은 트래픽을 전달(forward) 하는 것입니다.
결과적으로, 어떤 호스트에서든 목적지 IP 주소 192.168.1.100으로 가는 모든 트래픽은 드롭되고, 그 외의 모든 것은 전달됩니다. 활성화해 봅시다.
SW1(config)# vlan filter NOT-TO-SERVER vlan-list 10마지막 단계는 원하는 VLAN에 VACL을 적용하는 것입니다. 저는 VLAN 10에 적용합니다.
검증
VACL이 제대로 적용되어 있는지, 그리고 예상대로 트래픽을 드롭하는지 확인해 봅시다.
SW1# show vlan filter
VLAN Map NOT-TO-SERVER is filtering VLANs:
10show vlan filter로 어느 VLAN에 어떤 access-map이 적용되어 있는지 확인할 수 있습니다. 다음으로 access-map 자체의 내용을 보겠습니다.
SW1# show vlan access-map NOT-TO-SERVER
Vlan access-map "NOT-TO-SERVER" 10
Match clauses:
ip address: 100
Action:
drop
Vlan access-map "NOT-TO-SERVER" 20
Match clauses:
Action:
forward구성한 두 개의 시퀀스(10: drop, 20: forward)가 그대로 보입니다. 이제 컴퓨터 중 하나에서 서버(192.168.1.100)로 핑을 보내면 실패하고, 서버가 아닌 다른 호스트로의 트래픽은 정상적으로 전달되는 것을 확인할 수 있습니다.
팁: 같은 로직을 MAC 주소 기반으로도 구성할 수 있습니다.
mac access-list extended ...로 MAC access-list를 만들고match mac address <이름>으로 참조하면 L2 단위로 VLAN 내부 필터링이 가능합니다. 다만 ARP 캐시가 살아 있는 동안에는 기존 통신이 그대로 유지될 수 있으므로, 규칙 변경 후 예상과 다르게 동작하면 ARP 테이블을 한번 비우고 재시험하는 것이 좋습니다.
VACL 편집과 주의점
VACL은 일반 access-list와 마찬가지로 언제든 수정할 수 있습니다. 예를 들어 새 서버 192.168.1.101을 보호 대상에 추가하려면 기존 access-list에 한 줄만 더하면 됩니다.
SW1(config)# access-list 100 permit ip any host 192.168.1.101변경 사항은 즉시 반영되므로 VACL을 떼었다 다시 붙일 필요는 없습니다. 다만 실수로 match 문장을 잘못 고치면 서비스 전체가 끊길 수 있으므로, 운영 중에는 변경 전에 한 번 access-list를 백업하거나 사전 점검 윈도를 잡아두는 것이 안전합니다.
port-security와의 차이: port-security는 포트에 허용된 MAC 주소 개수 제한, 위반 시 포트 shutdown 같은 L2 수준 보호에 초점이 맞춰져 있습니다. “A는 B와 통신 가능하지만 C와는 불가”처럼 특정 목적지 기반 필터링은 port-security로 처리할 수 없고, 이럴 때가 바로 VACL(혹은 PACL/RACL)이 필요한 지점입니다.
결론
- VACL은 VLAN 내부에서 같은 VLAN 안의 호스트들 사이 트래픽을 필터링할 수 있는 거의 유일한 수단입니다(라우터 ACL은 VLAN을 빠져나가는 트래픽에만 걸립니다).
- 일반 ACL과 달리 VACL의 access-list에는
deny대신permit으로 매칭 대상을 지정하고, 실제 드롭/허용은vlan access-map의action drop/action forward로 결정합니다. vlan filter <이름> vlan-list <VLAN>로 여러 VLAN에 한 번에 적용할 수 있으며, access-list만 수정해도 실시간으로 반영됩니다.- MAC access-list와 결합하면 L2 수준의 필터링도 가능하지만, ARP 캐시 영향으로 변경 직후 동작이 불분명할 수 있으니 검증 시 주의가 필요합니다.
출처: networklessons.com - VLAN Access-List (VACL)
태그: ACL, Security
→ 다음 편: 14_Infrastructure ACL — “지나가는” 트래픽 필터에서 “장비 자체 보호”로 관점을 전환합니다. (이 편에서 살짝 열어둔 L2 영역의 본격 심화는 02편 L2 보안 기본기에서.)