2 분 소요

1. 서론

    오늘은 NAT를 구성하고 내부망에서 DNS와 DHCP를 설정하는 법을 배워보았다.

2. 본론

1. Cisco IOS

1. NAT

    NAT(Network Address Translator)는 내부망과 외부망의 접점에 위치하여 내부의 패킷을 외부로 전송하는 장치이다. 내부의 IP로 사설IP를 사용하면 외부망으로 라우팅이 되지 않으므로 NAT Table에 의하여 IP Header의 Source IP를 외부 IP로 변환하여 외부로 전송하고 들어오는 패킷의 Destination IP는 다시 내부 주소로 변환하여 내부망의 목적지로 전송한다.
    NAT를 외부망 IP와 내부망 IP의 갯수를 맞춰 1:1로 매핑하는 방식을 Static NAT라고 하며, 이는 내부망의 주소를 감출 수 있으므로 보안상의 장점을 가진다. 그리고 외부망 IP 1개와 내부망 IP 여러개를 매핑하는 Dynamic NAT 방식이 있다.
    네트워크 사용자가 기하급수적으로 증가하면서 기존 Classful IP로는 더이상 효율적인 IP분배가 힘들어져 Subnetting을 사용한 Classless IP체계가 만들어졌었다는 내용을 배웠었다. 하지만 이를 통해서도 IPv4의 주소가 부족할 것 같아 행해진 여러 노력 중에 예를들어 학원 교실의 모뎀은 ISP로부터 공인 IP를 부여받고, 해당 모뎀에 연결된 디바이스들에는 사설 IP를 부여하여 활용하는 방식인 Dynamic NAT 방식이 만들어졌다.
    그리고 세션을 시작할 수 있는 방향에 따라 Traditional NAT와 Bi-directional NAT로 나눌 수 있다. Traditional NAT는 Outbound NAT라고도 부르는데, 내부에서 외부로만 세션을 시작할 수 있기 때문이다. Bi-directional NAT는 이뿐만 아니라 외부에서 내부로도 세션을 시작할 수 있다.
    Traditional NAT 방식 중 Basic NAT 방식은 주소만 변환하는 방식이다. NAPT(Network Address Port Translation)는 Basic NAT 방식에서 변환하는 범위를 Transport Identifier(eg. TCP/UDP port, ICMP query identifier)로 확장시킨 방식으로 할당받은 외부 IP가 1개인 소규모 비즈니스에 적합하다.

ex

//R1
# conf t
# int f1/0
# mac-address ****.****.**** //임의로 지정
# ip address dhcp
# no shut //Bridge된 Host의 DHCP로부터 ip 부여됨

# access-list 10 permit 192.168.10.0 0.0.0.255
// 위의 커맨드는 10번의 번호를 가진 access list를 설정한다는 의미이다. Access list는 Numbered Access List와 Named Access List로 나뉘어지며, Numbered Access List에서 사용 가능한 번호는 'access-list ?' 커맨드를 통해 확인할 수 있다.

//wildcard(Inverse) mask : 0(일치), 1(무관). 위의 커맨드는 192.168.10.0/24 전체의 access를 허용해준다. Subnet Mask가 24이기 때문에 마지막 8bits는 Host ID로 변할 수 있는 값이다. 하지만 예를들어 짝수 host ID를 가진 IP들만 추가하려면 많은 작업이 필요하기 때문에 access list를 추가할 때 Subnet mask가 아닌 Wildcard mask를 사용한다. 예를들어 Wildcard mask로 00000000.00000000.00000000.11111110을 주면 0부터 시작하는 2의 배수를 Host ID로 가진 Ip들을 지칭한다. 그리고 위에서 한 설정처럼 마지막에 111111111, 즉 255를 주면 192.168.10.0 Network의 Host 전체를 편리하게 추가해줄 수 있다.

# do sh ip access-list

# int f0/0
# ip add 192.168.10.254 255.255.255.0
# exit

# access-list 10 permit 1.1.30.0 0.0.0.255
# sh ip access-list
//보이는 숫자중 sequence num은 10단위 증가하며 부여된다. Numbered access list는 sequence num 순서대로 적용되는데, 후순위로 추가는 가능하지만 선순위로 추가는 불가능하다. 이를 위해서는 access list를 통으로 지우고 다시 생성해야 한다.

# ip nat inside source list 10 interface f1/0 overload

# ip f0/0
# ip nat inside
# exit
# ip f0/1
# ip nat inside
# exit
# int f1/0
# ip nat outside
# exit

# ip route 0.0.0.0 0.0.0.0 f1/0 10.0.0.1 //필요한 경우 사용
# exit
# show ip nat translations
//Named Standard
# ip access-list standard WHATEVER
# permit 192.168.10.0 0.0.0.255

# ip access-list standard WHATEVER
# 5 permit 1.1.30.0 0.0.0.255

# no 10 //Numbered access list와는 다르게 이를 통해 처음 추가된 sequence num 10의 데이터를 지울 수 있다.
# 4 permit 192.168.10.0 0.0.0.255 //실습을 위해서 선순위로 다시 추가

# ip nat inside source list WHATEVER interface f1/0 overload
//R3
# conf t
# int f0/1
# no sh
# ip add 1.1.8.2 255.255.255.252
# exit

# int f1/3
# no switchport
# ip add 1.1.30.254 255.255.255.0
# exit

# ip route 0.0.0.0 0.0.0.0 f0/1 1.1.8.1 //R3 입장에서 R1 바깥의 Network들을 알 수 없으므로 설정. default-gateway는 L2장비나 엔드디바이스, default route 지정은 L3 이상 장비
//Server_2016
//DHCP
Server_2016의 ip를 192.168.10.100으로 설정(위 그림의 설정대로 맞추기 위하여)
DHCP 설정에서 192.168.10.0/24과 1.1.30.0/24의 DHCP 범위를 모두 추가
//DNS
도구 - DNS - 정방향 조회 영역 -> 새영역
만들어진 폴더 우클릭 -> 새호스트 -> 이름(ns) + IP주소(자신)
SOA(권한시작) 우클릭 -> 속성 -> 주서버 ns.kedu.edu. + 책임자 admin.kedu.edu. -> 적용 -> 이름서버 -> 편집 -> 서버FQDN에 ns.kedu.edu. 입력 후 확인 (책임자와 FQDN 끝에 . 을 붙이는게 문법)
새호스트 -> 이름(www) + Ip주소(자신)
새호스트 -> ip주소(자신) //이름을 비워두면 www. 를 주소 앞에 붙이지 않아도 연결 가능
위 설정 모두 완료후 콘솔 트리에서 서버 선택 -> 동작 -> 모든동작 -> 다시시작
//R3
# int f1/3
# ip helper-address 192.168.10.100
//Discover message를 안전하게 다른 네트워크로 전달하기 위한 역할. DORA Message가 Broadcast로 가는데 Router는 이를 통과시키지 못한다. 따라서 Unicast로 변환하여 보내준다. 그리고 이 역할을 DHCP Relay Agent라고 한다.
//R1
# ip route 1.1.30.0 255.255.255.0 f0/1 1.1.8.2
//Win702
SW1의 f1/1를 Start capture 해준 후 Wireshark를 켜서 DHCP(or Bootp(Static Host Configuration Protocol))를 검색한다(Bootp, DHCP 모두 DORA Message를 사용하기 때문에 둘다 가능). 그 후 Win702에서 주소를 자동으로 받기로 설정하면 Wireshark상에 DORA Message를 확인할 수 있다.
//Server_2016
win + r -> inetmgr
사이트 선택 -> 바인딩 -> 편집(자기 ip주소) //편집에서 지정하지 않은 모든 IP로 설정하면 local host가 지정됨

    NAT설정이 Port Forwarding과 비슷해 보이지만 차이점은 Port Forwarding은 매핑이 유지된다는 점이고 NAT는 Session Time이 지나면 Table에 저장된 임시로 부여한 Port와 내부 IP 매핑 관계가 초기화 된다는 점이다.

3. 결론

    개념들이 섞이면서 헷갈린다.

4. 참고자료

Ⅰ. 문웅호, 정보통신망
Ⅱ. 문웅호, 하드웨어


클라우드 엔지니어를 꿈꾸며 공부를 시작한 초보 엔지니어입니다. 틀린점 또는 조언해주실 부분이 있으시면 친절하게 댓글 부탁드립니다. 방문해 주셔서 감사합니다 :)

댓글남기기