EdgeRouter - 내부 VLAN 방화벽 제한과 VLAN 인지 Switch0¶
download at 2017-10-18T00:43:04Z origin
Overview
이 문서는 가상 인터페이스 (VIF)와 포트 태깅/언태깅을 생성하여 EdgeRouter의 VLAN 인지 스위치를 구성하는 방법에 대하여 서술합니다. 가상 인터페이스는 802.1q 태그를 물리 스위치에 할당하여 생성합니다. 이 태그는 태깅된 인터페이스 (또는 태깅된 SSID)에 반대 쪽 링크에 구성되는 것으로 대응됩니다. VIF는 EdgeRouter에 내부 VLAN 라우팅을 호스트에 제공하여 다른 VLAN에 접근할 수 있도록 제공합니다. 기본 값으로는 VLAN 내부에 모든 라우팅은 허용되어 있습니다. 트래픽을 제한하려면 방화벽 룰을 생성하고 직접 VIF에 적용해야합니다.
NOTES & REQUIREMENTS: EdgeOS 1.9.7 이상이 설치된 모든 EdgeRouter 모델에 적용가능하며, 커맨드라인 인터페이스와 기본 네트워킹에 대한 지식을 요구합니다. 더 많은 정보를 알고 싶다면 관련 문서를 참조하세요.
이 문서에서 사용한 장비:
- UniFi AP AC Lite (UAP-AC-LITE)
- 테스트 클라이언트
Table of Contents
네트워크 다이어그램
네트워크 토폴로지는 아래와 같으며 EdgeRouter(ER)에서 사용한 인터페이스 정보는 다음과 같습니다.
ER-X
- eth0 (WAN)
- eth2 (switch0 / untagged) - VLAN1
- eth3 (switch0 / untagged) - VLAN20
- eth4 (switch0 / tagged) - VLAN10
- eth4 (switch0 / untagged) - VLAN1
- switch0.1 (VIF 1) - 192.168.1.1/24
- switch0.10 (VIF 10) - 10.0.10.1/24
- switch0.20 (VIF 20) - 10.0.20.1/24
UAP는 VLAN10을 무선 네트워크에 태깅합니다. UAP의 관리 트래픽은 태깅되지 않은 eth4 포트로 전송 받으며 VLAN1 (native VLAN)에 위치합니다. 클라우드 키는 eth2에 연결하며, VLAN1도 연결합니다. (예제에서는 PoE가 아니라 USB에 클라우드 키를 연결합니다.) eth3 포트는 VLAN20에 태깅하지 않으며 관리되지 않는 스위치에 연결합니다. 모든 VLAN20 호스트는 스위치의 영향을 받습니다.
EdgeRouter는 VLAN1, VLAN10, VLAN20에 호스트가 있으며 DHCP 서비스를 제공하여 구성합니다. 방화벽 룰은 모든 VLAN 내부 트래픽을 차단합니다.
Steps - VLANs 과 VIFs
이 예제에서는 ER은 기본 설정 위자드 를 통해서 기본 설정으로 구성하였다고 가정합니다. 이는 모든 LAN 포트 (eth1-4)가 하나의 LAN 인터페이스 (switch0)으로 묶여있음을 뜻합니다. switch0 인터페이스의 목적은 모든 이더넷 인터페이스 (192.168.1.0/24)에 같은 LAN 범위를 제공하기 위함입니다. IP주소는 192.168.1.1/24를 기본으로 설정합니다.
switch0 인터페이스가 VLAN과 기본적으로 연관되어 있지 않습니다. 이는 VLAN1이 VLAN 인지 스위치에 설정하지 않고, VIF를 각 VLAN (switch0.1, switch0.10 등)에 생성하지 않는 한 장치에 VLAN1이 활성화 되지 않습니다. 간단히 말하면, 192.168.1.0/24 범위가 switch0 구성을 받을 때에는 기본 설정 위자드 가 VLAN1이나 다른 VLAN과 연관이 없다는 것을 의미합니다. 이 예제에서는 적절한 VIF를 switch0아래에 VLAN1의 VIF를 포함하여 (switch0.1) 생성합니다.
** GUI STEPS:** 라우터 웹 관리 포탈로 접속합니다.
이 예제의 목표중 하나는 VLAN1 192.168.1.0/24 범위를 장치에 종속하지 않고 설정하는 것입니다. 이를 위하여는 특정 관리 인터페이스를 생성하여 이 문서가 끝날때 쯤 삭제 가능하도록 합니다.
- eth1 인터페이스를 switch0인터페이스에서 제거합니다.
Dashboard > switch0 > Actions > Config > VLAN
Uncheck eth1
- eth1 인터페이스를 연관시키고 새로운 IP 주소를 부여합니다.
**Dashboard > eth1 > Actions > Config **
Address: Manually define IP address
172.16.1.1/24
- ER에 새롭게 생성한 IP 주소를 eth1 포트에 부여하여 연결합니다. (NIC IP 세팅을 바꿔야 하는 점도 잊지 마세요.)
- 기존 IP 주소 정보를 switch0 인터페이스에서 제거합니다.
Dashboard > switch0 > Actions > Config
Address: No Address
- VIF를 생성하고 802.1Q 태그를 할당하고 IP 주소를 부여합니다.
Dashboard > Add Interface > Add VLAN
VLAN ID: 1
Interface: switch0
Address: Manually define IP address
192.168.1.1/24
VLAN ID: 10
Interface: switch0
Address: Manually define IP address
10.0.10.1/24
VLAN ID: 20
Interface: switch0
Address: Manually define IP address
10.0.20.1/24
- swithc0 인터페이스를 VLAN인지, 포트에 VLAN을 태깅/언태깅 하도록 설정합니다.
Dashboard > switch0 > Actions > Config > VLAN
VLAN Aware: Enabled
Check eth2: pvid 1
Check eth3: pvid 20
Check eth4: pvid 1
vid 10
Note
PVID (Port VLAN-id)와 VID (VLAN-id) 세팅은 포트가 특정 VLAN에 언태깅(pvid), 태깅(vid) 유무에 따라서 결정합니다. PVID에 단일 값을 입력 지원하지만, VID는 다중 값을 지원합니다. 태깅된 포트는 PIVD 값에 구성될 수도 있습니다. (VID와 다른 값을 사용할 수 있습니다.) 이 경우에는 VLAN을 PVID아래에 구성하면, native VLAN이 됩니다. 이 예제에서는 무선랜 네트워크 (SSID)는 VLAN10으로 Unifi 컨트롤러를 사용하여 UAP에 태깅합니다. UAP의 관리 트래픽은 태깅되지 않은 eth4 인터페이스에서 입력을 받으며, EdgeRouter가 VLAN1에 위치시킵니다.
- 관련있는 VLAN에 DHCP 스코프를 생성합니다.
Services > DHCP Server > Add DHCP Server
DHCP Name: VLAN10
Subnet: 10.0.10.0/24
Range Start: 10.0.10.11
Range Stop: 10.0.10.150
Router: 10.0.10.1
DNS 1: 10.0.20.11
DHCP Name: VLAN20
Subnet: 10.0.20.0/24
Range Start: 10.0.20.11
Range Stop: 10.0.20.150
Router: 10.0.20.1
DNS 1: 10.0.20.11
Note
VLAN1 (192.168.1.0/24)의 DHCP 스코프는 기본 설치 위자드 실행 이후에는 존재하게 됩니다. 라우터가 어떠한 IP 주소도 192.168.1.0/24 범위에서 할당하지 못한다면, DHCP 서비스를 커맨드라인에서 재시작(sudo service dhcpd restart) 해야합니다. 아니면 장치를 재시작 하십시오.
- 새롭게 생성한 VIF에 DNS 포워딩을 활성화 합니다.
Services > DNS > DNS Forwarding
Interface: switch0.1
+ Add Listen Interface
Interface: switch0.10
+ Add Listen Interface
Interface: switch0.20
(대안) CLI STEPS: 라우터의 커맨드라인 인터페이스에 접속합니다. GUI의 CLI 버튼을 사용하거나 PuTTY와 같은 프로그램을 사용합니다.
- 환경설정 모드로 진입합니다.
configure
- switch0 인터페이스에서 eth1 인터페이스를 제거합니다.
delete interfaces switch switch0 switch-port interface eth1
- eth1 인터페이스를 새로운 IP 주소와 연관합니다.
set interfaces ethernet eth1 address 172.16.1.1/24
- 변경사항을 커밋합니다.
commit
- ER에 새롭게 생성한 IP주소를 eth1 포트에 할당하고 연결합니다.
- Remove the existing IP address information on the switch0 interface.
delete interfaces switch switch0 address
- VIF에 802.1Q 태그를 부여하고 IP 주소를 정의하여 생성한다.
set interfaces switch switch0 vif 1 address 192.168.1.1/24
set interfaces switch switch0 vif 10 address 10.0.10.1/24
set interfaces switch switch0 vif 20 address 10.0.20.1/24
- switch0 인터페이스에 VLAN 인지, 태깅, 언태깅 VLAN을 포트에 구성한다.
set interfaces switch switch0 switch-port vlan-aware enable
set interfaces switch switch0 switch-port interface eth2 vlan pvid 1
set interfaces switch switch0 switch-port interface eth3 vlan pvid 20
set interfaces switch switch0 switch-port interface eth4 vlan pvid 1
set interfaces switch switch0 switch-port interface eth4 vlan vid 10
- 관련된 VLAN에 DHCP 스코프를 생성한다.
set service dhcp-server shared-network-name VLAN10 subnet 10.0.10.0/24 default-router 10.0.10.1
set service dhcp-server shared-network-name VLAN10 subnet 10.0.10.0/24 dns-server 10.0.20.11
set service dhcp-server shared-network-name VLAN10 subnet 10.0.10.0/24 lease 86400
set service dhcp-server shared-network-name VLAN10 subnet 10.0.10.0/24 start 10.0.10.11 stop 10.0.10.150
set service dhcp-server shared-network-name VLAN20 subnet 10.0.20.0/24 default-router 10.0.20.1
set service dhcp-server shared-network-name VLAN20 subnet 10.0.20.0/24 dns-server 10.0.20.11
set service dhcp-server shared-network-name VLAN20 subnet 10.0.20.0/24 lease 86400
set service dhcp-server shared-network-name VLAN20 subnet 10.0.20.0/24 start 10.0.20.11 stop 10.0.20.150
Note
VLAN1 (192.168.1.0/24)의 DHCP 스코프는 **기본 설치 위자드**를 통해서 생성되어 있습니다.
- 새롭게 생성한 VIF에 DNS 포워딩을 활성화 합니다.
delete service dns forwarding listen-on switch0
set service dns forwarding listen-on switch0.1
set service dns forwarding listen-on switch0.10
set service dns forwarding listen-on switch0.20
- 변경사항을 커밋하고 환경설정을 저장합니다.
commit ; save
Steps - 방화벽 룰
이전 섹션의 설정을 완료하면, 모든 VLAN 사이에서 양방향 통신이 가능하게 됩니다. EdgeRouter의 VIF가 내부 VLAN 라우팅을 지원하기 때문입니다.
- 무선 클라이언트는 VLAN10에 UAP SSID로 연결하며 10.0.10.0/24 범위의 DHCP 주소를 부여받습니다.
- VLAN20에 관리되지 않는 switch에 연결된 유선 클라이언트는 DHCP를 통해서 10.0.20.0/24 범위의 주소를 부여받습니다.
- UAP와 클라우드 키는 VLAN1에 연결하고 192.168.1.0/24 범위의 DHCP 주소를 할당받습니다.
다음은 VLAN10, VLAN20을 허용하도록 연결을 제한하여 특정 목적지로 연결하도록 합니다. 다음 요구사항이 필요합니다:
- VLAN10 무선 클라이언트에서 VLAN1, VLAN20으로 향하는 모든 트래픽을 차단합니다.
- VLAN20 유선 클라이언트에서 VLAN1, VLAN10으로 향하는 모든 트래픽을 차단합니다.
- 무선, 유선 클라이언트(VLAN10/VLAN20)에서 EdgeRouter로 향하는 모든 트래픽을 차단하되, DNS, DHCP트래픽은 예외로 설정합니다.
- 다른 목적지 (인터넷)으로 향하는 모든 트래픽은 허용합니다.
** GUI STEPS:** 라우터 웹 관리 포탈(GUI)로 접속합니다.
방화벽 정책을 구현하기 이전에 클라이언트간의 통신이 이루어지는지 확인해야합니다. 모든 클라이언트가 연결 가능한지 확인하려면 제한 트래픽을 전송하는 것입니다. 기본적으로 VLAN간의 모든 트래픽은 허용되어 있습니다.
- DHCP 임대현황과 클라이언트가 연결 가능한지 검증합니다.
Services > DHCP Server
- RFC1918 주소 공간에 대응하는 방화벽 네트워크 그룹을 생성합니다.
Firewall/NAT > Firewall/NAT Groups > Add Group
Name: PRIVATE_NETS
Group Type: Network
Firewall/NAT > Firewall/NAT Groups > PRIVATE_NETS > Actions > Config > + Add New
Network: 192.168.0.0/16
Network: 172.16.0.0/12
Network: 10.0.0.0/8
2. 요구사항 #1, #2, #4을 만족하는 방화벽 룰을 생성합니다.
Firewall/NAT > Firewall Policies > + Add Ruleset
Name: LAN_IN
Default action: Accept
Firewall/NAT > Firewall Policies > LAN_IN > Actions > Edit Ruleset > + Add New Rule
Description: Drop traffic to other LANs
Action: Drop
Protocol: All protocols
Destination Network Group: PRIVATE_NETS
- 요구사항 #3을 만족하는 방화벽 룰을 생성합니다.
Firewall/NAT > Firewall Policies > + Add Ruleset
Name: LAN_LOCAL
Default action: Drop
Firewall/NAT > Firewall Policies > LAN_LOCAL > Actions > Edit Ruleset > + Add New Rule
Description: Allow client DHCP
Action: Accept
Protocol: UDP
Destination Port: 67
Firewall/NAT > Firewall Policies > LAN_LOCAL > Actions > Edit Ruleset > + Add New Rule
Description: Allow client DNS
Action: Accept
Protocol: Both TCP and UDP
Destination Port: 53
- VIF10, VIF20 인바운드, 아웃바운드 인터페이스에 방화벽 룰을 적용합니다.
Firewall/NAT > Firewall Policies > LAN_IN > Actions > Interfaces
Interface: switch0.10
Direction: in
+ Add Interface
Interface: switch0.20
Direction: in
Firewall/NAT > Firewall Policies > LAN_LOCAL > Actions > Interfaces
Interface: switch0.10
Direction: local
+ Add Interface
Interface: switch0.20
Direction: local
(다른 방법) CLI STEPS: 라우터 커맨드라인 인터페이스에 접속합니다. PuTTY와 같은 프로그램도 사용할 수 있습니다.
- 클라이언트가 접속 가능한지, DHCP 임대 내역을 검증합니다.
show dhcp leases
IP address Hardware Address Lease expiration Pool Client Name
---------- ---------------- ---------------- ---- -----------
10.0.10.11 80:2a:a8:f5:69:f1 2017/07/02 08:40:10 VLAN10 Host1
10.0.20.11 80:2a:a8:a5:a8:99 2017/07/02 08:39:42 VLAN20 Host2
192.168.1.11 80:2a:a8:99:92:d5 2017/07/02 07:46:21 LAN UAP
192.168.1.12 80:2a:a8:5f:24:c6 2017/07/02 07:42:24 LAN CloudKey
- 환경설정 모드로 진입합니다.
configure
- RFC 1918 주소 공간에 대응하는 방화벽 네트워크 그룹을 생성합니다.
set firewall group network-group PRIVATE_NETS network 192.168.0.0/16
set firewall group network-group PRIVATE_NETS network 172.16.0.0/12
set firewall group network-group PRIVATE_NETS network 10.0.0.0/8
- 요구사항 #1, #2, #4을 만족하는 방화벽 룰을 생성합니다.
set firewall name LAN_IN default-action accept
set firewall name LAN_IN rule 10 action drop
set firewall name LAN_IN rule 10 description 'Drop traffic to other LANs'
set firewall name LAN_IN rule 10 log disable
set firewall name LAN_IN rule 10 protocol all
set firewall name LAN_IN rule 10 destination group network-group PRIVATE_NETS
- 요구사항 #3을 만족하는 방화벽 룰을 생성합니다.
set firewall name LAN_LOCAL default-action drop
set firewall name LAN_LOCAL rule 10 action accept
set firewall name LAN_LOCAL rule 10 description 'Allow client DHCP'
set firewall name LAN_LOCAL rule 10 log disable
set firewall name LAN_LOCAL rule 10 protocol udp
set firewall name LAN_LOCAL rule 10 destination port 67
set firewall name LAN_LOCAL rule 20 action accept
set firewall name LAN_LOCAL rule 20 description 'Allow client DNS'
set firewall name LAN_LOCAL rule 20 log disable
set firewall name LAN_LOCAL rule 20 protocol tcp_udp
set firewall name LAN_LOCAL rule 20 destination port 53
- VIF10, VIF20 인바운드, 아웃바운드 인터페이스에 방화벽 룰을 적용합니다.
set interfaces switch switch0 vif 10 firewall in name LAN_IN
set interfaces switch switch0 vif 10 firewall local name LAN_LOCAL
set interfaces switch switch0 vif 20 firewall in name LAN_IN
set interfaces switch switch0 vif 20 firewall local name LAN_LOCAL
Note
inbound 방향 방화벽 룰은 장비를 통하는 트래픽에 적용되며 VLAN10이나 다른 VLAN, 인터넷을 통해서 들어오는 트래픽에 적용됩니다. local 방향 방화벽은 EdgeRouter 자체로 향하는 트래픽(관리 트래픽, DHCP 요청)을 관리합니다.
- 변경 내역을 커밋하고 환경설정을 저장합니다.
commit ; save
Steps - 테스팅 및 검증
VIF와 포트 VLAN을 정의하고 난 이후에는 다음 명령어로 상태를 확인합니다:
- VLAN 인터페이스:
show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
switch0.1 192.168.1.1/24 u/u
switch0.10 10.0.10.1/24 u/u
switch0.20 10.0.20.1/24 u/u
- 스위치 포트 인터페이스:
show interfaces switch switch0 switch-port
interface mode switch-master
========= ==== =============
eth0 independent
eth1 switch switch0
eth2 switch switch0
eth3 switch switch0
eth4 switch switch0
- 방화벽 정책 통계:
show firewall name LAN_IN statistics
--------------------------------------------------------------------------------
IPv4 Firewall "LAN_IN"
Active on (switch0.10,IN) (switch0.20,IN)
rule packets bytes action description
---- ------- ----- ------ -----------
10 6 360 DROP Drop traffic to other LANs
10000 8 480 ACCEPT DEFAULT ACTION
show firewall name LAN_LOCAL statistics
--------------------------------------------------------------------------------
IPv4 Firewall "GUEST_LOCAL"
Active on (switch0.10,LOCAL) (switch0.20,LOCAL)
rule packets bytes action description
---- ------- ----- ------ -----------
10 56 18962 ACCEPT Allow client DHCP
20 42 15254 ACCEPT Allow client DNS
10000 464 60602 DROP DEFAULT ACTION
- VLAN10 / VLAN20 DHCP 요청 및 제공한 내역:
sudo tcpdump -i switch0.10 -n dst port 53 or port 67 or port 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:29:00:80:dc, length 331
IP 10.0.10.1.67 > 10.0.10.11.68: BOOTP/DHCP, Reply, length 300
IP 10.0.10.11.1059 > 10.0.10.1.53: 2+ A? server.ubnt.com. (33)
sudo tcpdump -i switch0.20 -n dst port 53 or port 67 or port 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:0c:29:00:80:dc, length 331
IP 10.0.20.1.67 > 10.0.20.11.68: BOOTP/DHCP, Reply, length 300
IP 10.0.20.11.1059 > 10.0.20.1.53: 2+ A? server.ubnt.com. (33)
- 게스트가 다른 목적지(인터넷)으로 갈수 있는 정도:
show nat translations
Pre-NAT Post-NAT Type Prot Timeout
10.0.10.11 203.0.113.1 snat icmp 2
관련 문서